Как открыть файл (геоданные) с расширением .nc (NetCDF)
-
- Гуру
- Сообщения: 920
- Зарегистрирован: 30 дек 2008, 14:11
- Репутация: 236
- Откуда: Ханты-Мансийск
- Контактная информация:
Re: Как открыть файл (геоданные) с расширением .nc
Тикет открыт 4 года назад. Интересно, как лучше поступать в таком случае, когда GDAL собран неправильно. Вариант собрать GDAL самому явно тут не прокатит (я недавно собирал GDAL и знаю, насколько в этом процессе много подводных камней и не факт, что я столкнулся со всеми). Может еще как-то можно GDAL установить для винды? Помнится в свое время GDAL отдельно собирали для NextGIS QGIS?
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как открыть файл (геоданные) с расширением .nc
Бинарники GDAL для винды есть здесь: http://www.gisinternals.com/bolotoved писал(а): Может еще как-то можно GDAL установить для винды?
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Как открыть файл (геоданные) с расширением .nc
У меня GDAL с gisinternals.com (транк 2.1 - наверно, годичной давности) подвисает намертво. GDAL из официальной сборки QGIS 2.18.0 при запуске команды Дениса выдаёт ту же ошибку, что и у Натальи. В то же время в обеих сборках весь файл без проблем конвертируется командами
Я указал размер кэша в мегабайтах (-wm 2048) побольше, чтобы как-то ускорить процесс. Опция -to SRC_METHOD=NO_GEOTRANSFORM понадобилась под Windows, но свежий GDAL из репозитория Arch Linux работает и без неё.
UPD: Всё бы ничего, но при использовании -to SRC_METHOD=NO_GEOTRANSFORM растр получается в пиксельных координатах, то есть вверх тормашками. А другие методы не работают. Я пробовал gdal_translate, но он нещадно мучает жёсткий диск, и я не дождался завершения.
UPD2: Добавление -to DST_METHOD=NO_GEOTRANSFORM переворачивает растр как надо, но координаты всё равно пиксельные, так что нужно геопривязывать вручную. А вот в GDAL 2.1.1 под Linux всё работает как надо, и gdalinfo показывает координаты углов растра в градусах. Единственное, чего он не может - это извлечь проекцию из метаданных, хотя она там есть в виде строки PROJ.4.
Код: Выделить всё
gdalwarp -wm 2048 -to SRC_METHOD=NO_GEOTRANSFORM -s_srs "+init=epsg:4326" -t_srs "+init=epsg:4326" -co "COMPRESS=LZW" -co "TILED=YES" 2016121233557Forest_Aboveground_Biomassv3.nc biomass.tif
gdaladdo biomass.tif 2 4 8 16 32 64 128 256
UPD: Всё бы ничего, но при использовании -to SRC_METHOD=NO_GEOTRANSFORM растр получается в пиксельных координатах, то есть вверх тормашками. А другие методы не работают. Я пробовал gdal_translate, но он нещадно мучает жёсткий диск, и я не дождался завершения.
UPD2: Добавление -to DST_METHOD=NO_GEOTRANSFORM переворачивает растр как надо, но координаты всё равно пиксельные, так что нужно геопривязывать вручную. А вот в GDAL 2.1.1 под Linux всё работает как надо, и gdalinfo показывает координаты углов растра в градусах. Единственное, чего он не может - это извлечь проекцию из метаданных, хотя она там есть в виде строки PROJ.4.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как открыть файл (геоданные) с расширением .nc
Спасибо. Понятно, то есть не имеет смысл прямо переустанавливать тоже самое.Denis Rykov писал(а):В OSGeo4W GDAL как-то неправильно собран, есть похожий тикет, приложил туда информацию о вашей проблеме, у меня тоже воспроизводится #293.
А у вас GDAL другой сборки, раз у вас файл открылся и не было этой ошибки, может быть, на другой ОС?
Может быть есть другие способы поставить GDAL, не через установщик OSGeo4W ? Или это не имеет значения?В OSGeo4W GDAL как-то неправильно собран,
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Как открыть файл (геоданные) с расширением .nc
Да, у меня Ubuntu 16.04, GDAL 2.1.0.Natalia Novoselova писал(а):А у вас GDAL другой сборки, раз у вас файл открылся и не было этой ошибки, может быть, на другой ОС?
Spatial is now, more than ever, just another column- The Geometry Column.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как открыть файл (геоданные) с расширением .nc
Понятно. Спасибо.Denis Rykov писал(а):Да, у меня Ubuntu 16.04, GDAL 2.1.0.Natalia Novoselova писал(а):А у вас GDAL другой сборки, раз у вас файл открылся и не было этой ошибки, может быть, на другой ОС?
Да, выше был ответ на мой вопрос:
Можно попробовать установить другой вариант сборки GDAL для Windows через другой процесс установки.Александр Мурый писал(а):Бинарники GDAL для винды есть здесь: http://www.gisinternals.com/bolotoved писал(а): Может еще как-то можно GDAL установить для винды?
И еще также есть варианты других способов - R (он же может всё, должен открывать NetCDF), матлаб рекомендовали на форуме океанологов. Попробую поизучать в этом направлении также.
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: Как открыть файл (геоданные) с расширением .nc
Natalia, выше же Вам выслал последовательность команд в R для открытия Вашего NetCDF-файла и конвертации его в geotiff - попробуйте, если ещё не делали... это через library(raster)... у меня Ваш NetCDF-файл открывался, а на конвертации - "задумывался" R и я, не дождавшись, снимал задачу...Natalia Novoselova писал(а):... есть варианты других способов - R (он же может всё, должен открывать NetCDF)...
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
Еще есть FWTools
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
Проблема с форматом NetCDF в том, что он совершенно не оптимизирован для работы с пространственными данными. В нём невозможен произвольный доступ к значению переменной по географическим координатам. Поэтому все инструменты для чтения или конвертации NetCDF пытаются читать файл в оперативную память целиком и вешаются, если памяти не хватает. Единственным известным мне исключением является gdalwarp, который в силу специфики своего основного предназначения (трансформация растров из одной системы координат в другую) умеет обрабатывать файл кусочками и кэшировать в памяти нужные ему фрагменты данных, избегая как постоянного чтения с диска, так и чрезмерного использования ОЗУ. Но чем больше памяти выделить ему для кэша, тем быстрее идёт трансформация.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
GDAL позволяет черз gdalwarp открывать NetCDF как растр, отображая значения по выбранной переменной.
А в векторе он может открыть?
За R пока не берусь. Так как для этого нужно идти задавать отдельные вопросы. Там я совсем плохо ориентируюсь.
Вот ArcGIS дает возможность его открыть и в растре, и в векторе.
Хотя открыть обеими способами в ArcGIS пока не получилось Хелп в ArcGIS написан таким образом, что понять не возможно. Вместо того, чтобы пояснить куда что вбивать на числах примера - они тупо переписывают то, что и так дается в инструменте.
В ArcGIS почему то упорно все выводится в виде 1 точки без каких-либо значений. Вроде ввожу что дано в метаданных..
А в векторе он может открыть?
За R пока не берусь. Так как для этого нужно идти задавать отдельные вопросы. Там я совсем плохо ориентируюсь.
Вот ArcGIS дает возможность его открыть и в растре, и в векторе.
Хотя открыть обеими способами в ArcGIS пока не получилось Хелп в ArcGIS написан таким образом, что понять не возможно. Вместо того, чтобы пояснить куда что вбивать на числах примера - они тупо переписывают то, что и так дается в инструменте.
В ArcGIS почему то упорно все выводится в виде 1 точки без каких-либо значений. Вроде ввожу что дано в метаданных..
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
В OGR есть драйвер для NetCDF, но для вашего файла ogrinfo ничего полезного не выдаёт (или я не умею им пользоваться). В любом случае, вряд ли вам будет польза от данных такого объёма в векторе. Потому что следующий вопрос будет — что делать с базой данных в пятьсот миллионов записей.
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
...вот, если через R читать файл Natali:
В R через library(raster):
class : RasterLayer
dimensions : 14002, 36000, 504072000 (nrow, ncol, ncell)
resolution : 0.01, 0.01 (x, y)
extent : -180, 180, -56.02, 84 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : D:\2016_for\for_Natalia\Forest_NC\2016121233557Forest_Aboveground_Biomassv3.nc
names : Forest_Aboveground_Biomass_v3
zvar : Forest_Aboveground_Biomass_v3
В R через library(ncdf4):
File 2016121233557Forest_Aboveground_Biomassv3.nc (NC_FORMAT_NETCDF4_CLASSIC):
1 variables (excluding dimension variables):
float Forest_Aboveground_Biomass_v3[longitude,latitude]
long_name: Forest_Aboveground_Biomass_v3
_FillValue: -3.39999995214436e+38
missing_value: -3.39999995214436e+38
projection: +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
projection_format: PROJ.4
min: 0
max: 611.399963378906
2 dimensions:
longitude Size:36000
standard_name: longitude
long_name: longitude
units: degrees_east
axis: X
latitude Size:14002
standard_name: latitude
long_name: latitude
units: degrees_north
axis: Y
6 global attributes:
CDI: Climate Data Interface version 1.6.9 (http://mpimet.mpg.de/cdi)
history: Wed Sep 09 15:23:36 2015: cdo -f nc4c -z zip copy Forest_Aboveground_Biomass_v3.nc Forest_Aboveground_Biomass_v3_2.nc
Conventions: CF-1.4
created_by: R, packages ncdf and raster (version 2.2-31)
date: 2015-08-31 14:39:27
CDO: Climate Data Operators version 1.6.9 (http://mpimet.mpg.de/cdo)
В R через library(raster):
class : RasterLayer
dimensions : 14002, 36000, 504072000 (nrow, ncol, ncell)
resolution : 0.01, 0.01 (x, y)
extent : -180, 180, -56.02, 84 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : D:\2016_for\for_Natalia\Forest_NC\2016121233557Forest_Aboveground_Biomassv3.nc
names : Forest_Aboveground_Biomass_v3
zvar : Forest_Aboveground_Biomass_v3
В R через library(ncdf4):
File 2016121233557Forest_Aboveground_Biomassv3.nc (NC_FORMAT_NETCDF4_CLASSIC):
1 variables (excluding dimension variables):
float Forest_Aboveground_Biomass_v3[longitude,latitude]
long_name: Forest_Aboveground_Biomass_v3
_FillValue: -3.39999995214436e+38
missing_value: -3.39999995214436e+38
projection: +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
projection_format: PROJ.4
min: 0
max: 611.399963378906
2 dimensions:
longitude Size:36000
standard_name: longitude
long_name: longitude
units: degrees_east
axis: X
latitude Size:14002
standard_name: latitude
long_name: latitude
units: degrees_north
axis: Y
6 global attributes:
CDI: Climate Data Interface version 1.6.9 (http://mpimet.mpg.de/cdi)
history: Wed Sep 09 15:23:36 2015: cdo -f nc4c -z zip copy Forest_Aboveground_Biomass_v3.nc Forest_Aboveground_Biomass_v3_2.nc
Conventions: CF-1.4
created_by: R, packages ncdf and raster (version 2.2-31)
date: 2015-08-31 14:39:27
CDO: Climate Data Operators version 1.6.9 (http://mpimet.mpg.de/cdo)
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
... в R через librrary(cmsaf):
> library(cmsaf)
> fnc <- "2016121233557Forest_Aboveground_Biomassv3.nc"
> ncinfo( infile=fnc )
The file: 2016121233557Forest_Aboveground_Biomassv3.nc contains:
Variable:
Forest_Aboveground_Biomass_v3
With following dimensions:
longitude with length 36000 (range -179.995 to 179.995)
latitude with length 14002 (range -56.015 to 83.995)
> read_nc(var="Forest_Aboveground_Biomass_v3", infile=fnc)
Error: cannot allocate vector of size 3.8 Gb
Как заметил выше Ariki: "...инструменты для чтения или конвертации NetCDF пытаются читать файл в оперативную память целиком и вешаются, если памяти не хватает..."
> library(cmsaf)
> fnc <- "2016121233557Forest_Aboveground_Biomassv3.nc"
> ncinfo( infile=fnc )
The file: 2016121233557Forest_Aboveground_Biomassv3.nc contains:
Variable:
Forest_Aboveground_Biomass_v3
With following dimensions:
longitude with length 36000 (range -179.995 to 179.995)
latitude with length 14002 (range -56.015 to 83.995)
> read_nc(var="Forest_Aboveground_Biomass_v3", infile=fnc)
Error: cannot allocate vector of size 3.8 Gb
Как заметил выше Ariki: "...инструменты для чтения или конвертации NetCDF пытаются читать файл в оперативную память целиком и вешаются, если памяти не хватает..."
-
- Гуру
- Сообщения: 964
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
... падает и через gdalwarp в gdalUtils R (gdal находит в QGIS 2.18 и его запускает):
> library(ncdf4)
> library(gdalUtils)
> fnc <- "2016121233557Forest_Aboveground_Biomassv3.nc"
> ncFile <- nc_open( fnc )
> gdalwarp(ncFile, dstfile="2016121233557Forest_Aboveground_Biomassv3.tif",
+ output_Raster=TRUE,
+ overwrite=TRUE, verbose=TRUE)
Checking gdal_installation...
Scanning for GDAL installations...
Checking the gdalUtils_gdalPath option...
GDAL version 2.1.1
GDAL command being used: "C:\Program Files\QGIS 2.18\bin\gdalwarp.exe" -overwrite -of "GTiff" "2016121233557Forest_Aboveground_Biomassv3.nc" "FALSE" "1048576" "FALSE" "NC_FORMAT_NETCDF4_CLASSIC" "FALSE" "list(list(id = 1048576, name = "", ndims = 2, nvars = 3, natts = 6, dimid = 0:1, fqgn = ""))" "list(1)" "2" "6" "list(longitude = list(name = "longitude", len = 36000, unlim = FALSE, group_index = 1, group_id = 1048576, id = 0, dimvarid = list(id = 0, group_index = 1, group_id = 1048576, list_index = -1, isdimvar = TRUE), units = "degrees_east", vals = c(-179.995, -179.985, -179.975, -179.965, -179.955, -179.945, -179.935, -179.925, -179.915, -179.905, -179.895, -179.885, -179.875, -179.865, -179.855, -179.845, -179.835, -179.825, -179.815, -179.805, -179.795, -179.785, -179.775, -179.765, -179.755, -179.745,
.............................................................................................................................................
.............................................................................................................................................
..............................................................................................................................................
-172.595, -172.585, -172.575, -172.565, -172.555, -172.545, -172.535, -172.525, -172.515, -172.505, -172.495, -172.485, -172.475, -172.465, -172.455, -172.445, -172.435, -172.425, -172.415, -172.405, -172.395, -172
Error in system(cmd, intern = TRUE) :
'CreateProcess' failed to run 'C:\PROGRA~1\QGIS2~1.18\bin\gdalwarp.exe -overwrite -of "GTiff" "2016121233557Forest_Aboveground_Biomassv3.nc" "FALSE" "1048576" "FALSE" "NC_FORMAT_NETCDF4_CLASSIC" "FALSE" "list(list(id = 1048576, name = "", ndims = 2, nvars = 3, natts = 6, dimid = 0:1, fqgn = ""))" "list(1)" "2" "6" "list(longitude = list(name = "longitude", len = 36000, unlim = FALSE, group_index = 1, group_id = 1048576, id = 0, dimvarid = list(id = 0, group_index = 1, group_id = 1048576, list_
>
> library(ncdf4)
> library(gdalUtils)
> fnc <- "2016121233557Forest_Aboveground_Biomassv3.nc"
> ncFile <- nc_open( fnc )
> gdalwarp(ncFile, dstfile="2016121233557Forest_Aboveground_Biomassv3.tif",
+ output_Raster=TRUE,
+ overwrite=TRUE, verbose=TRUE)
Checking gdal_installation...
Scanning for GDAL installations...
Checking the gdalUtils_gdalPath option...
GDAL version 2.1.1
GDAL command being used: "C:\Program Files\QGIS 2.18\bin\gdalwarp.exe" -overwrite -of "GTiff" "2016121233557Forest_Aboveground_Biomassv3.nc" "FALSE" "1048576" "FALSE" "NC_FORMAT_NETCDF4_CLASSIC" "FALSE" "list(list(id = 1048576, name = "", ndims = 2, nvars = 3, natts = 6, dimid = 0:1, fqgn = ""))" "list(1)" "2" "6" "list(longitude = list(name = "longitude", len = 36000, unlim = FALSE, group_index = 1, group_id = 1048576, id = 0, dimvarid = list(id = 0, group_index = 1, group_id = 1048576, list_index = -1, isdimvar = TRUE), units = "degrees_east", vals = c(-179.995, -179.985, -179.975, -179.965, -179.955, -179.945, -179.935, -179.925, -179.915, -179.905, -179.895, -179.885, -179.875, -179.865, -179.855, -179.845, -179.835, -179.825, -179.815, -179.805, -179.795, -179.785, -179.775, -179.765, -179.755, -179.745,
.............................................................................................................................................
.............................................................................................................................................
..............................................................................................................................................
-172.595, -172.585, -172.575, -172.565, -172.555, -172.545, -172.535, -172.525, -172.515, -172.505, -172.495, -172.485, -172.475, -172.465, -172.455, -172.445, -172.435, -172.425, -172.415, -172.405, -172.395, -172
Error in system(cmd, intern = TRUE) :
'CreateProcess' failed to run 'C:\PROGRA~1\QGIS2~1.18\bin\gdalwarp.exe -overwrite -of "GTiff" "2016121233557Forest_Aboveground_Biomassv3.nc" "FALSE" "1048576" "FALSE" "NC_FORMAT_NETCDF4_CLASSIC" "FALSE" "list(list(id = 1048576, name = "", ndims = 2, nvars = 3, natts = 6, dimid = 0:1, fqgn = ""))" "list(1)" "2" "6" "list(longitude = list(name = "longitude", len = 36000, unlim = FALSE, group_index = 1, group_id = 1048576, id = 0, dimvarid = list(id = 0, group_index = 1, group_id = 1048576, list_
>
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)
Что-то вы не то делаете. Никогда не работал с R, но даже из приведённого вами вывода понятно, что функция из пакета gdalUtils — просто обёртка над запуском процесса gdalwarp, и первым параметром ей надо передать имя файла, а не объект, представляющий открытый с помощью nc_open() файл. Ну и для разового запуска нет смысла вызывать из среды R утилиту, которая доступна из консоли операционной системы. Там вы хотя бы прогресс-бар получите с ходом выполнения задачи. Ещё нужно позаботиться о сжатии TIFF и размере кэша, иначе конвертация может затянуться надолго. Я попробовал запустить вашу команду у себя под Linux (передав имя файла первым параметром) и через полчаса остановил конвертацию, не дождавшись. В то же время команда, которую я приводил выше, конвертирует файл минут за 10. У меня ноутбук 2010 года выпуска с Intel Core i5-460M, 2.53 ГГц, 4 ГБ ОЗУ.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей