Страница 1 из 2
Subdataset
Добавлено: 30 янв 2013, 21:18
NIckolay
Здравствуйте уважаемые форумчане!
У меня возникла такая ситуация, ввожу команду 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!
Re: Subdataset
Добавлено: 31 янв 2013, 10:01
Дмитрий Барышников
Судя по сообщению от gdal_translate это сделать нельзя. С одной стороны, раз программа пишет, что не может этого сделать - то это не ошибка. С другой стороны в разделе Creation Issues (
http://gdal.org/frmt_netcdf.html) нет указания, что это делать нельзя. Либо не до конца документирован драйвер, либо это сознательное ограничение утилиты gdal_translate.
Re: Subdataset
Добавлено: 31 янв 2013, 12:05
NIckolay
Но ведь используя команду с ключем -sds, gdal_translate -sds as.nc res.nc, все датасет копируются одновременно, но как я уже говорил сохраняет каждый из них в отдельный фаил, быть может есть какой либо параметр который указывает что нужно сохранить все в один файл, или как альтернативный вариант, возможно ли получившиеся отдельные файлы собрать в один целый?
Re: Subdataset
Добавлено: 31 янв 2013, 12:46
Дмитрий Барышников
Я не знаю, как это сделать через GDAL. Ведь это не работа со слоями, а с растрами, которые составляют набор (dataset).
Re: Subdataset
Добавлено: 31 янв 2013, 12:57
NIckolay
А есть ли какя либо другая утилита в GDAL для уменьшения размера растра? Так же я хотел спросить есть какаие либо варианты решения данного вопроса не при помощи гдал?
Re: Subdataset
Добавлено: 31 янв 2013, 13:17
Александр Мурый
NIckolay писал(а):А есть ли какя либо другая утилита в GDAL для уменьшения размера растра? Так же я хотел спросить есть какаие либо варианты решения данного вопроса не при помощи гдал?
Через GDAL больше никак нельзя, вроде бы. Вам уменьшенная картинка нужна координатно привязанная или просто так? Можно вытащить все "Subdataset" из файла *.nc (например, в TIF), уменьшить их в растровом редакторе (или через ImageMagick, если надо все "на автомате").
Re: Subdataset
Добавлено: 31 янв 2013, 13:19
Дмитрий Барышников
NIckolay писал(а):А есть ли какя либо другая утилита в GDAL для уменьшения размера растра?
Для уменьшения размера растра вы использовали правильную команду, но у вас не растр, а целый набор растров (как бы по простому - как папка с растрами в архиве), упакованный в NetCDF.
NIckolay писал(а): Так же я хотел спросить есть какаие либо варианты решения данного вопроса не при помощи гдал?
Поищите специализированные утилиты для работы с NetCDF. Заодно и нам расскажете.
Re: Subdataset
Добавлено: 31 янв 2013, 13:29
NIckolay
Спасибо большое, дельный совет! Вы спрашивали что конкретно мне нужно, мне нужно на выходе получить уменьшеное изображение. А возмоно ли обратно преобразовать tiff в nc и засунуть все в один фаил?
Re: Subdataset
Добавлено: 31 янв 2013, 13:42
Александр Мурый
NIckolay писал(а): мне нужно на выходе получить уменьшеное изображение. А возмоно ли обратно преобразовать tiff в nc и засунуть все в один фаил?
Позвольте поинтересоваться, а зачем эти изображения совать назад в NetCDF, в этом есть реальный смысл?
Re: Subdataset
Добавлено: 31 янв 2013, 13:54
NIckolay
Возможно мы друг друга не доконца поняли)
Задача такова, есть фаил c расширением .nc нужно получить такойже .nc но в уменьшеном разрешении, т.к gdal_translate требует выбрать только один subdataset, то появилась идея достать каждый subdataset уменьшить его и обратно пихнуть в один .nc все получившиеся уменьшенные subdataset. Это возможно при помоши gdal так сказать создать новыйархив .nc?
Re: Subdataset
Добавлено: 31 янв 2013, 14:13
Александр Мурый
Идея-то понятна, просто было интересен практический смысл действий.
NIckolay писал(а):нужно получить такойже .nc но в уменьшеном разрешении
Так разрешение надо уменьшить или размер?
Re: Subdataset
Добавлено: 31 янв 2013, 14:19
NIckolay
Так меня и интересует как это сделать, не могли бы вы привести пример? Буду очень благодарен
Re: Subdataset
Добавлено: 31 янв 2013, 15:50
NIckolay
И все же может кто нибудь знает, как записать несколько файлов в один .nc (т.е чтоб получился один .nc а те несколько файлов были subdatasets в этом .nc)?
Re: Subdataset
Добавлено: 31 янв 2013, 23:48
NIckolay
Сам себе отвечу, есть специальная утилита ncdump, вроде бы с помощью нее это возможно сделать, но так как мои знания английского слабые, поэтому очень прошу помоч мне, быть может кто либо что то знает о данной утилите?
Re: Subdataset
Добавлено: 02 фев 2013, 14:34
Александр Мурый
Я думаю, что <ncdump> здесь не слишком поможет. Это утилита для конвертирования netCDF в текстовый вид.
Можно попробовать так:
-- разбиваем netCDF по всем "субнаборам" данных или перечисляем только нужные "субнаборы", всё это с уменьшением растров:
Код: Выделить всё
gdal_translate -sds -outsize 50% 50% example.nc example
-- полученный набор файлов *.nc соединяем в один netCDF с помощью
cdo (Climate Data Operators¶):
Только надо учитывать, что внутри netCDF могут храниться очень разные данные, и не все наборы данных могут быть уменьшены в размерах и потом "сшиты".
NIckolay, если будут сложности, выложите ваш исходный nc-файл или дайте на него ссылку.