2016-08-24 4 views
0

Я получил файл NetCDF от Немецкой метеорологической службы относительно средних температур в Европе (CDC FDP SERVER). Единственное, что я хочу извлечь, это средняя дневная температура для Борнхольма, который является островом в центральной части Балтики.Извлечение информации о конкретном сайте из файла NetCDF в R

Я знаю, как извлекать информацию для определенных координат (см. Пример кода ниже). Единственная проблема заключается в том, что координаты файла задаются «повернуть», поэтому географические координаты для Bornholm (извлеченные из GoogleMaps) бесполезны.

packages <- c("RNetCDF", 
       "ncdf4", 
       "raster") 

lapply(packages, require, character.only = TRUE) 

x <- mean(14.68,15.16)  #coordinates for a rectangle around 
y <- mean(54.987,55.299)  #Bornholm extracted from GoogleMaps 

temp <- nc_open("tas_decreg_europe_v20140120_20030101_20030131.nc") 
temp 

var <- ncvar_get(temp, "tas") 
point <- var[x,y,] 
as.data.frame(point) 

Чтобы сократить его, Google использует близкий вариант проекции Меркатора. Итак, как я могу либо преобразовать файл NetCDF, либо координаты из GoogleMaps, чтобы я мог найти то, что мне нужно. Я мог бы поспорить, что есть простое решение, но, к сожалению, нет - по крайней мере, я не смог его найти.

Для получения информации о файле, порожденного print(temp) смотрите ниже:

File tas_decreg_europe_v20140120_20030101_20030131.nc (NC_FORMAT_CLASSIC): 

    2 variables (excluding dimension variables): 
     char rotated_pole[] 
      grid_mapping_name: rotated_latitude_longitude 
      grid_north_pole_latitude: 39.25 
      grid_north_pole_longitude: -162 
     float tas[lon,lat,time] 
      long_name: Near-Surface Air Temperature 
      units: K 
      grid_mapping: rotated_pole 
      _FillValue: 1.00000002004088e+20 
      missing_value: 1.00000002004088e+20 

    3 dimensions: 
     lon Size:1056 
      standard_name: grid_longitude 
      long_name: longitude 
      units: degrees_east 
      axis: X 
     lat Size:1026 
      standard_name: grid_latitude 
      long_name: latitude 
      units: degrees_north 
      axis: Y 
     time Size:31 *** is unlimited *** 
      standard_name: time 
      units: days since 2003-01-01 00:00:00 
      calendar: standard 

Любая помощь приветствуется. Большое спасибо ...

+0

Это не спасло мой «Hallo всех ...», так: «Алло все ...» – Robert

ответ

0

Загрузите растровый пакет, но вы его не используете. Вы пробовали что-то вроде ниже?

library(raster) 
x <- mean(14.68,15.16) 
y <- mean(54.987,55.299) 
temp <- brick("tas_decreg_europe_v20140120_20030101_20030131.nc", var='tas') 
extract(temp, cbind(x,y)) 
+0

Определенно правильный путь для извлечения данных, но по-прежнему показывает только NAs. Неудивительно, что если размер не может содержать мои координаты ('extent: -28.342, 18.122, -23.342, 21.802 (xmin, xmax, ymin, ymax)'). Поэтому мне кажется, что мне все равно нужно что-то преобразовать, как уже упоминалось. Любые дополнительные рекомендации ...? – Robert

+0

Эти координаты, очевидно, не являются стандартными координатами для любой точки Европы, поэтому они, по-видимому, используют другое происхождение, чем (Гринвич, Экватор), другими словами, вращение (или, возможно, проекция?). Но я не могу догадаться, что такое ротация, если вы не скажете нам. На их веб-сайте, вероятно, есть документация. Или, может быть, есть информация, когда вы делаете 'print (temp)' – RobertH

+0

Вот почему я предоставил LINK в файл. Во всяком случае, я просто добавил информацию, полученную печатью (temp) к исходному вопросу (см. Выше). Описание набора данных с сайта говорит примерно так же. Cheers – Robert

Смежные вопросы