Как открыть файл (геоданные) с расширением .nc (NetCDF)

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение bolotoved » 05 дек 2016, 12:43

Тикет открыт 4 года назад. Интересно, как лучше поступать в таком случае, когда GDAL собран неправильно. Вариант собрать GDAL самому явно тут не прокатит (я недавно собирал GDAL и знаю, насколько в этом процессе много подводных камней и не факт, что я столкнулся со всеми). Может еще как-то можно GDAL установить для винды? Помнится в свое время GDAL отдельно собирали для NextGIS QGIS?

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение Александр Мурый » 05 дек 2016, 13:29

bolotoved писал(а): Может еще как-то можно GDAL установить для винды?
Бинарники GDAL для винды есть здесь: http://www.gisinternals.com/
Редактор материалов, модератор форума

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение Ariki » 05 дек 2016, 13:50

У меня GDAL с gisinternals.com (транк 2.1 - наверно, годичной давности) подвисает намертво. GDAL из официальной сборки QGIS 2.18.0 при запуске команды Дениса выдаёт ту же ошибку, что и у Натальи. В то же время в обеих сборках весь файл без проблем конвертируется командами

Код: Выделить всё

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
Я указал размер кэша в мегабайтах (-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.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение Natalia Novoselova » 05 дек 2016, 15:00

Denis Rykov писал(а):В OSGeo4W GDAL как-то неправильно собран, есть похожий тикет, приложил туда информацию о вашей проблеме, у меня тоже воспроизводится #293.
Спасибо. Понятно, то есть не имеет смысл прямо переустанавливать тоже самое.

А у вас GDAL другой сборки, раз у вас файл открылся и не было этой ошибки, может быть, на другой ОС?

В OSGeo4W GDAL как-то неправильно собран,
Может быть есть другие способы поставить GDAL, не через установщик OSGeo4W ? Или это не имеет значения?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение Denis Rykov » 05 дек 2016, 15:22

Natalia Novoselova писал(а):А у вас GDAL другой сборки, раз у вас файл открылся и не было этой ошибки, может быть, на другой ОС?
Да, у меня Ubuntu 16.04, GDAL 2.1.0.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение Natalia Novoselova » 05 дек 2016, 15:39

Denis Rykov писал(а):
Natalia Novoselova писал(а):А у вас GDAL другой сборки, раз у вас файл открылся и не было этой ошибки, может быть, на другой ОС?
Да, у меня Ubuntu 16.04, GDAL 2.1.0.
Понятно. Спасибо.

Да, выше был ответ на мой вопрос:
Александр Мурый писал(а):
bolotoved писал(а): Может еще как-то можно GDAL установить для винды?
Бинарники GDAL для винды есть здесь: http://www.gisinternals.com/
Можно попробовать установить другой вариант сборки GDAL для Windows через другой процесс установки.

И еще также есть варианты других способов - R (он же может всё, должен открывать NetCDF), матлаб рекомендовали на форуме океанологов. Попробую поизучать в этом направлении также.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Как открыть файл (геоданные) с расширением .nc

Сообщение nickleb » 05 дек 2016, 16:15

Natalia Novoselova писал(а):... есть варианты других способов - R (он же может всё, должен открывать NetCDF)...
Natalia, выше же Вам выслал последовательность команд в R для открытия Вашего NetCDF-файла и конвертации его в geotiff - попробуйте, если ещё не делали... это через library(raster)... у меня Ваш NetCDF-файл открывался, а на конвертации - "задумывался" R и я, не дождавшись, снимал задачу...

ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение ericsson » 05 дек 2016, 22:03

Еще есть FWTools

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение Ariki » 05 дек 2016, 23:06

Проблема с форматом NetCDF в том, что он совершенно не оптимизирован для работы с пространственными данными. В нём невозможен произвольный доступ к значению переменной по географическим координатам. Поэтому все инструменты для чтения или конвертации NetCDF пытаются читать файл в оперативную память целиком и вешаются, если памяти не хватает. Единственным известным мне исключением является gdalwarp, который в силу специфики своего основного предназначения (трансформация растров из одной системы координат в другую) умеет обрабатывать файл кусочками и кэшировать в памяти нужные ему фрагменты данных, избегая как постоянного чтения с диска, так и чрезмерного использования ОЗУ. Но чем больше памяти выделить ему для кэша, тем быстрее идёт трансформация.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение Natalia Novoselova » 06 дек 2016, 07:31

GDAL позволяет черз gdalwarp открывать NetCDF как растр, отображая значения по выбранной переменной.
А в векторе он может открыть?


За R пока не берусь. Так как для этого нужно идти задавать отдельные вопросы. Там я совсем плохо ориентируюсь.

Вот ArcGIS дает возможность его открыть и в растре, и в векторе.
Хотя открыть обеими способами в ArcGIS пока не получилось Хелп в ArcGIS написан таким образом, что понять не возможно. Вместо того, чтобы пояснить куда что вбивать на числах примера - они тупо переписывают то, что и так дается в инструменте. :(

В ArcGIS почему то упорно все выводится в виде 1 точки без каких-либо значений. Вроде ввожу что дано в метаданных..

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение Ariki » 06 дек 2016, 13:37

В OGR есть драйвер для NetCDF, но для вашего файла ogrinfo ничего полезного не выдаёт (или я не умею им пользоваться). В любом случае, вряд ли вам будет польза от данных такого объёма в векторе. Потому что следующий вопрос будет — что делать с базой данных в пятьсот миллионов записей.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение nickleb » 06 дек 2016, 16:08

...вот, если через 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)

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение nickleb » 07 дек 2016, 12:14

... в 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 пытаются читать файл в оперативную память целиком и вешаются, если памяти не хватает..."

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение nickleb » 07 дек 2016, 20:20

... падает и через 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_

>

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Как открыть файл (геоданные) с расширением .nc (NetCDF)

Сообщение Ariki » 08 дек 2016, 00:18

Что-то вы не то делаете. Никогда не работал с R, но даже из приведённого вами вывода понятно, что функция из пакета gdalUtils — просто обёртка над запуском процесса gdalwarp, и первым параметром ей надо передать имя файла, а не объект, представляющий открытый с помощью nc_open() файл. Ну и для разового запуска нет смысла вызывать из среды R утилиту, которая доступна из консоли операционной системы. Там вы хотя бы прогресс-бар получите с ходом выполнения задачи. Ещё нужно позаботиться о сжатии TIFF и размере кэша, иначе конвертация может затянуться надолго. Я попробовал запустить вашу команду у себя под Linux (передав имя файла первым параметром) и через полчаса остановил конвертацию, не дождавшись. В то же время команда, которую я приводил выше, конвертирует файл минут за 10. У меня ноутбук 2010 года выпуска с Intel Core i5-460M, 2.53 ГГц, 4 ГБ ОЗУ.

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 25 гостей