Как я могу поместить систему координат в NetCDF, используя R? - PullRequest
0 голосов
/ 09 марта 2019

Я работал с файлами NetCDF из Daymet, и мой проект предусматривает извлечение данных из различных файлов, их изменение и создание новых файлов в R, которые затем будут проанализированы в Arcmaps. Использование инструмента растрового слоя make NetCDF с x и y, так как измерения отлично работают с неизмененными данными за день, но ничего не делает с файлами, которые я сделал сам. Использование координатных переменных работает для них обоих, но продукт получается искаженным. Глядя на различия между файлами, которые я создал, единственное отличие состоит в том, что те, которые я создал, не имеют координат пространственной привязки.

Существует существующая пространственная привязка или проекция в неизмененном файле, которая выглядит как в метаданных:

5 переменных (исключая размерные переменные):
float time_bnds [nv, time]
время: дни с 1980-01-01 00:00:00 UTC

короткий lambert_conformal_conic []
имя_сети: lambert_conformal_conic
longitude_of_central_meridian: -100
latitude_of_projection_origin: 42,5
false_easting: 0
false_northing: 0
standard_parallel: 25
standard_parallel: 60
semi_major_axis: 6378137
обратное_платеж: 298.257232666016

С помощью пакета netcdf r удалось создать нечто похожее с помощью этого кода:

corddef <- ncvar_def ("lambert_conformal_conic", "", list (), prec = "short") ncatt_put (ncout, "lambert_conformal_conic", "grid_mapping_name", "lambert_conformal_conic") ncatt_put (ncout, "lambert_conformal_conic", "longitude_of_central_meridian", "-100") ncatt_put (ncout, "lambert_conformal_conic", "latitude_of_projection_origin", "42.5") ncatt_put (ncout, "lambert_conformal_conic", "false_easting", "0") ncatt_put (ncout, "lambert_conformal_conic", "false_northing", "0") ncatt_put (ncout, "lambert_conformal_conic", "standard_parallel", "25") ncatt_put (ncout, "lambert_conformal_conic", "standard_parallel_2", "60") ncatt_put (ncout, "lambert_conformal_conic", "semi_major_axis", "6378137") ncatt_put (ncout, "lambert_conformal_conic", "inverse_flattens", "298.257232666016") </p>

Что дает это:

5 переменных (исключая размерные переменные):
float time_bnds [time] (Chunking: [1])
Единицы: дни с 1980-01-01 00:00:00 UTC
короткий lambert_conformal_conic [] (непрерывное хранилище)
имя_карты сетки: lambert_conformal_conic
longitude_of_central_meridian: -100
latitude_of_projection_origin: 42,5
false_easting: 0
false_northing: 0
standard_parallel: 25
standard_parallel_2: 60
semi_major_axis: 6378137
обратное_платеж: 298.257232666016

Попытка сделать из него растр в Arcmaps по-прежнему ничего не делает, поэтому мне было интересно, есть ли лучший способ поместить информацию о проекции непосредственно в новый файл, который я создаю, чтобы arcmaps могла автоматически читать информацию.

1 Ответ

0 голосов
/ 23 марта 2019

Код должен быть сделан следующим образом, с номерами, которые вы хотите добавить, присваивается имя.

longitude_of_central_meridian <- -100
latitude_of_projection_origin <- 42.5
false_easting <- 0
false_northing <- 0
semi_major_axis <- 6378137
inverse_flattening <- 298.257232666016

ncatt_put(ncout, "lambert_conformal_conic", "grid_mapping_name", "lambert_conformal_conic")
ncatt_put(ncout,"lambert_conformal_conic","longitude_of_central_meridian", longitude_of_central_meridian)
ncatt_put(ncout,"lambert_conformal_conic","latitude_of_projection_origin", latitude_of_projection_origin)
ncatt_put(ncout,"lambert_conformal_conic","false_easting", false_easting)
ncatt_put(ncout,"lambert_conformal_conic","false_northing", false_northing)
ncatt_put(ncout,"lambert_conformal_conic", "standard_parallel", c(25,60))
ncatt_put(ncout,"lambert_conformal_conic","semi_major_axis", semi_major_axis)
ncatt_put(ncout,"lambert_conformal_conic","inverse_flattening", inverse_flattening)
...