Subdataset

Не знаете, где задать вопрос? Задавайте здесь.
NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Subdataset

Сообщение NIckolay » 30 янв 2013, 21:18

Здравствуйте уважаемые форумчане!
У меня возникла такая ситуация, ввожу команду gdal_translate -outsize 50% 50% as.nc res.nc на что получаю ошибку Input file contains subdatasets. Please, select one of them for reading.
Если правильно понимаю просит выбрать один из subdataset, но дело в том что мне нужно обработать однвременно все subdataset, я нашел один способ как это сделать, использовав ключ -sds, но здесь возникает проблема, каждый subdataset сохроняется в отдельный фаил, собственно в этом и вопрос, скажите пожалуйста, возможноли все сохранять в один результирующий фаил?

Буду благодарен за любую помощь С ув. Nickolay!

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Subdataset

Сообщение Дмитрий Барышников » 31 янв 2013, 10:01

Судя по сообщению от gdal_translate это сделать нельзя. С одной стороны, раз программа пишет, что не может этого сделать - то это не ошибка. С другой стороны в разделе Creation Issues (http://gdal.org/frmt_netcdf.html) нет указания, что это делать нельзя. Либо не до конца документирован драйвер, либо это сознательное ограничение утилиты gdal_translate.

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 12:05

Но ведь используя команду с ключем -sds, gdal_translate -sds as.nc res.nc, все датасет копируются одновременно, но как я уже говорил сохраняет каждый из них в отдельный фаил, быть может есть какой либо параметр который указывает что нужно сохранить все в один файл, или как альтернативный вариант, возможно ли получившиеся отдельные файлы собрать в один целый?

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Subdataset

Сообщение Дмитрий Барышников » 31 янв 2013, 12:46

Я не знаю, как это сделать через GDAL. Ведь это не работа со слоями, а с растрами, которые составляют набор (dataset).

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 12:57

А есть ли какя либо другая утилита в GDAL для уменьшения размера растра? Так же я хотел спросить есть какаие либо варианты решения данного вопроса не при помощи гдал?

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

Re: Subdataset

Сообщение Александр Мурый » 31 янв 2013, 13:17

NIckolay писал(а):А есть ли какя либо другая утилита в GDAL для уменьшения размера растра? Так же я хотел спросить есть какаие либо варианты решения данного вопроса не при помощи гдал?
Через GDAL больше никак нельзя, вроде бы. Вам уменьшенная картинка нужна координатно привязанная или просто так? Можно вытащить все "Subdataset" из файла *.nc (например, в TIF), уменьшить их в растровом редакторе (или через ImageMagick, если надо все "на автомате").
Редактор материалов, модератор форума

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Subdataset

Сообщение Дмитрий Барышников » 31 янв 2013, 13:19

NIckolay писал(а):А есть ли какя либо другая утилита в GDAL для уменьшения размера растра?
Для уменьшения размера растра вы использовали правильную команду, но у вас не растр, а целый набор растров (как бы по простому - как папка с растрами в архиве), упакованный в NetCDF.
NIckolay писал(а): Так же я хотел спросить есть какаие либо варианты решения данного вопроса не при помощи гдал?
Поищите специализированные утилиты для работы с NetCDF. Заодно и нам расскажете.

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 13:29

Спасибо большое, дельный совет! Вы спрашивали что конкретно мне нужно, мне нужно на выходе получить уменьшеное изображение. А возмоно ли обратно преобразовать tiff в nc и засунуть все в один фаил?

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

Re: Subdataset

Сообщение Александр Мурый » 31 янв 2013, 13:42

NIckolay писал(а): мне нужно на выходе получить уменьшеное изображение. А возмоно ли обратно преобразовать tiff в nc и засунуть все в один фаил?
Позвольте поинтересоваться, а зачем эти изображения совать назад в NetCDF, в этом есть реальный смысл?
Последний раз редактировалось Александр Мурый 31 янв 2013, 16:31, всего редактировалось 2 раза.
Редактор материалов, модератор форума

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 13:54

Возможно мы друг друга не доконца поняли)
Задача такова, есть фаил c расширением .nc нужно получить такойже .nc но в уменьшеном разрешении, т.к gdal_translate требует выбрать только один subdataset, то появилась идея достать каждый subdataset уменьшить его и обратно пихнуть в один .nc все получившиеся уменьшенные subdataset. Это возможно при помоши gdal так сказать создать новыйархив .nc?

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

Re: Subdataset

Сообщение Александр Мурый » 31 янв 2013, 14:13

Идея-то понятна, просто было интересен практический смысл действий.
NIckolay писал(а):нужно получить такойже .nc но в уменьшеном разрешении
Так разрешение надо уменьшить или размер?
Редактор материалов, модератор форума

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 14:19

Так меня и интересует как это сделать, не могли бы вы привести пример? Буду очень благодарен

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 15:50

И все же может кто нибудь знает, как записать несколько файлов в один .nc (т.е чтоб получился один .nc а те несколько файлов были subdatasets в этом .nc)?

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: Subdataset

Сообщение NIckolay » 31 янв 2013, 23:48

Сам себе отвечу, есть специальная утилита ncdump, вроде бы с помощью нее это возможно сделать, но так как мои знания английского слабые, поэтому очень прошу помоч мне, быть может кто либо что то знает о данной утилите?

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

Re: Subdataset

Сообщение Александр Мурый » 02 фев 2013, 14:34

Я думаю, что <ncdump> здесь не слишком поможет. Это утилита для конвертирования netCDF в текстовый вид.
Можно попробовать так:
-- разбиваем netCDF по всем "субнаборам" данных или перечисляем только нужные "субнаборы", всё это с уменьшением растров:

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

gdal_translate -sds -outsize 50% 50% example.nc example
-- полученный набор файлов *.nc соединяем в один netCDF с помощью cdo (Climate Data Operators¶):

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

cdo merge example*.nc example_merged.nc
Только надо учитывать, что внутри netCDF могут храниться очень разные данные, и не все наборы данных могут быть уменьшены в размерах и потом "сшиты".

NIckolay, если будут сложности, выложите ваш исходный nc-файл или дайте на него ссылку.
Редактор материалов, модератор форума

Ответить

Вернуться в «Я новичок!»

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

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