Несколько вопросов по GDAL
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Несколько вопросов по GDAL
Может ли кто прояснить несколько вопрос, т.к не смог найти ответов от том ка проделать это средствами программ пакета GDAL из OSGeoW:
а) можно ли вырезать фрагмент растра с сохранением привязки НЕ производя никаких пересчетов пикселей исходного растра?
2) Я пропускал несколько растров через gdalwarp - обрезал по векторному контуру и у них изменилась привязка и размер пикселя. Изменилась очень мало - с 30 метров на 29, и много девяток. Измение не принципиальное, но означает ли оно что несмотря на одинаковость СК на входе и выходе пересчет все же производился?
3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
5) можно ли выбрать из растрового файла в новый файл только те пиксели, которые отвечают некоторым условиям? На пример, все пиксели, значения которых в (R < 40 и G < 20 и B < 30) - нужны, а остальные - нет и равны noData.
6) Можно ли задать в какой-либо из команд трансляции растра пакета GDAL несколько значений noData для исходных данных (исходного канала)? Т.е. не только 0, ну или какое-то одно значение, а (1,2,3,4,5) - это все noData.
7) gdal_calc - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?
а) можно ли вырезать фрагмент растра с сохранением привязки НЕ производя никаких пересчетов пикселей исходного растра?
2) Я пропускал несколько растров через gdalwarp - обрезал по векторному контуру и у них изменилась привязка и размер пикселя. Изменилась очень мало - с 30 метров на 29, и много девяток. Измение не принципиальное, но означает ли оно что несмотря на одинаковость СК на входе и выходе пересчет все же производился?
3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
5) можно ли выбрать из растрового файла в новый файл только те пиксели, которые отвечают некоторым условиям? На пример, все пиксели, значения которых в (R < 40 и G < 20 и B < 30) - нужны, а остальные - нет и равны noData.
6) Можно ли задать в какой-либо из команд трансляции растра пакета GDAL несколько значений noData для исходных данных (исходного канала)? Т.е. не только 0, ну или какое-то одно значение, а (1,2,3,4,5) - это все noData.
7) gdal_calc - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Несколько вопросов по GDAL
Как я понимаю, это один и тот же вопрос в разных формулировках.Boris писал(а):а) можно ли вырезать фрагмент растра с сохранением привязки НЕ производя никаких пересчетов пикселей исходного растра?
2) Я пропускал несколько растров через gdalwarp - обрезал по векторному контуру и у них изменилась привязка и размер пикселя. Изменилась очень мало - с 30 метров на 29, и много девяток. Измение не принципиальное, но означает ли оно что несмотря на одинаковость СК на входе и выходе пересчет все же производился?
Думаю, что обрезка без пересчета невозможна в большинстве случаев. Разве что границы контура проходят точно по границам пикселей.
Создать VRT из исходного файла и файла маски, а потом применить маску как канал нового исходного (VRT) растра?Boris писал(а):3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
Не распарсил. Имеется в виду «а не 3 канала + альфа канал» или как?Boris писал(а):4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
Можно. Например, при помощи gdal_calc выбрать нужные пиксели в каждом канале и получить три растра, а затем склеить их получить 3х канальный растр.Boris писал(а):5) можно ли выбрать из растрового файла в новый файл только те пиксели, которые отвечают некоторым условиям? На пример, все пиксели, значения которых в (R < 40 и G < 20 и B < 30) - нужны, а остальные - нет и равны noData.
Нельзя. Вот что говорит Фрэнк: «GDAL only supports single nodata values as part of the data model».Boris писал(а):6) Можно ли задать в какой-либо из команд трансляции растра пакета GDAL несколько значений noData для исходных данных (исходного канала)? Т.е. не только 0, ну или какое-то одно значение, а (1,2,3,4,5) - это все noData.
Выходной файл всегда одноканальныйBoris писал(а):7) gdal_calc - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Несколько вопросов по GDAL
Спасибо за ответы.
Прошу уточнить:
[/quote]
Попробую с примером - я запустил gdalwarp (если не путаю) на файл, с 4-мя каналами Landsat 3-4-5-7, в сообщении программы и полученном результате явно видно, что 1-ый канал был принят за альфа-канал. А мне хотелось просто обработать 4-х канальный растр.
Новый вопрос:
Хочу физически уменьшить размер растра, за счет того, что удалить из файла окантовку NoData, с помощь использования NoData внутри канала или внешней растровой или векторной маски. Но главное, что бы изменилась привязки и размерность, но не пересчитывались пиксели, а были взяты как есть.
Прошу уточнить:
Я прочитал описание формата, правильно ли я понял, что это виртуальный набор каналов с широкими функциями? Не очень понял, что происходит при указании этого формата в качестве выходного в программах с пересчетом - заменой системы координат или пиксельных значений.Voltron писал(а):Создать VRT из исходного файла и файла маски, а потом применить маску как канал нового исходного (VRT) растра?Boris писал(а):3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
Не распарсил. Имеется в виду «а не 3 канала + альфа канал» или как?Boris писал(а):4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
[/quote]
Попробую с примером - я запустил gdalwarp (если не путаю) на файл, с 4-мя каналами Landsat 3-4-5-7, в сообщении программы и полученном результате явно видно, что 1-ый канал был принят за альфа-канал. А мне хотелось просто обработать 4-х канальный растр.
Новый вопрос:
Хочу физически уменьшить размер растра, за счет того, что удалить из файла окантовку NoData, с помощь использования NoData внутри канала или внешней растровой или векторной маски. Но главное, что бы изменилась привязки и размерность, но не пересчитывались пиксели, а были взяты как есть.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Несколько вопросов по GDAL
Пожалуй, можно рассматривать и так. VRT это что-то вроде контейнера для реальных данных.Boris писал(а):Я прочитал описание формата, правильно ли я понял, что это виртуальный набор каналов с широкими функциями?
Будет создан VRT-файл, содержащий относительную ссылку на исходный растр и указания о том, как этот растр необходимо отображать. Например, если при перепроецировании растра в качестве выходного файла указать VRT, то исходный файл останется без изменений, новый растр не создается. В VRT будут записаны параметры трансформации и путь к исходному файлу. При открытии VRT в QGIS (или использовании с другими утилитами GDAL) растр будет восприниматься как перепроецированный.Boris писал(а):Не очень понял, что происходит при указании этого формата в качестве выходного в программах с пересчетом - заменой системы координат или пиксельных значений.
Теперь ясно. Если правильно понимаю, то это не вина GDAL.Boris писал(а):Попробую с примером - я запустил gdalwarp (если не путаю) на файл, с 4-мя каналами Landsat 3-4-5-7, в сообщении программы и полученном результате явно видно, что 1-ый канал был принят за альфа-канал. А мне хотелось просто обработать 4-х канальный растр.
В спецификации формата TIFF не предусмотрена возможность задавать интерпретацию каждого канала (например, красный это канал или синий или альфа-канал), поэтому интерпретация назначается на основе значений в тегах PHOTOMETRIC и EXTRASAMPLES.
Добиться желаемого результата можно прибегнув к шаманским действиям. Необходимо задать правильные значения тегов, для этого «пересоздадим» исходный растр
Код: Выделить всё
gdal_translate -of GTiff -co "PHOTOMETRIC=RGB" -co "ALPHA=NO" input.tif output.tif
Небольшое обсуждение этой проблемы можно почитать здесь.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Несколько вопросов по GDAL
спасибо. выпала пара спокойных дней, теперь буду "шаманить."
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Несколько вопросов по GDAL
Хотел было создать тему с аналогичным названием, но внезапно обнаружил эту темку, так что если позволите, то отпишусь здесь =)
Вопрос возник в следующем. Имея на руках тестовый GeoTiff, удалось скормить его mapinfo. Тот лишь спросил о том, какую я хочу назначить проекцию. То есть координаты углов, прописанные в геотифе, он проглотил. Сам geoTiff был взят тестовый с ftp.remotesensing.org.
Тестируя gdal_translate, решил собрать GeoTiff из имеющегося у себя файла Tiff + файл привязки .tab. На выходе получился действительно геотифф, в котором отсутствовали сведения о проекции (в отличии от тестовых со странички геотифа), но присутствовали сведения об углах листа и координаты естественно. Об этом мне успешно поведал listgeo. Однако, ради практического интереса, при попытке подгрузить мой свежесобранный geotiff в MapInfo, тот не распознал в нём геотифф и предложил дефолтные опции "показать/регистрировать"...
Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?
Вопрос возник в следующем. Имея на руках тестовый GeoTiff, удалось скормить его mapinfo. Тот лишь спросил о том, какую я хочу назначить проекцию. То есть координаты углов, прописанные в геотифе, он проглотил. Сам geoTiff был взят тестовый с ftp.remotesensing.org.
Тестируя gdal_translate, решил собрать GeoTiff из имеющегося у себя файла Tiff + файл привязки .tab. На выходе получился действительно геотифф, в котором отсутствовали сведения о проекции (в отличии от тестовых со странички геотифа), но присутствовали сведения об углах листа и координаты естественно. Об этом мне успешно поведал listgeo. Однако, ради практического интереса, при попытке подгрузить мой свежесобранный geotiff в MapInfo, тот не распознал в нём геотифф и предложил дефолтные опции "показать/регистрировать"...
Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Несколько вопросов по GDAL
Есть у кого-нибудь интересные идеи насчёт решения загадки ?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Несколько вопросов по GDAL
Может, вы перестанете говорить загадками и все же откроете страшную тайну? Покажите команды, которыми пользовались, выложите тестовый набор данных. Я уже молчу о такой мелочи, как используемая версия GDAL
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Несколько вопросов по GDAL
Скорее второе. Поддержка разными версиями MI растров разных форматов -- это тема вообще за гранью добра и зла Тут разбираться и ещё раз разбираться..Slinger писал(а): Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Несколько вопросов по GDAL
А что мешает извлечь привязку из этого неправильно геотифа назад в world=file и проверить свои предположения? Уж tfw-файлы мапинфо читает без проблем?
Теперь о тегах. Может дело и не в привязке, я встречал несколько программ, которые не любили теги Tiff, которые не знали в лицо. Они просто отказывались работать с такими растрами. На сколько я помню, в GDAL есть возможность выбирать набор тегов - базовый, расширенный и GDAL. Последний самый объемный и наименее любимый.
Теперь о тегах. Может дело и не в привязке, я встречал несколько программ, которые не любили теги Tiff, которые не знали в лицо. Они просто отказывались работать с такими растрами. На сколько я помню, в GDAL есть возможность выбирать набор тегов - базовый, расширенный и GDAL. Последний самый объемный и наименее любимый.
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Несколько вопросов по GDAL
Voltron
GDAL дефолтный, из последнего набора FWtools. Видимо 1.8.0. Команды для создания геотиффа опять же дефолтные, то есть:
Вместе с .tif файлом находился и файл .tab, поэтому геотифф создался и listgeo указал:
Информация о проекции отсутствует. При попытке скормить его ArcMap'у, тот сказал, что информации о проекции нет, однако углы рамок съел корректно. MapInfo (как 8.5, так и 10.5) отказались воспринимать его как геотифф и предложили зарегистрировать.
Примера выложить не могу в связи с размером и в связи с секретностью.
Boris
ничего не мешает создать мировой файл привязки. Это впринципе очевидное решение задачи. Однако цель я себе поставил разобраться именно в скармливании мапинфо геотифов =)
Не могли Вы подробнее поведать о тегах, где и с чем их едят ? Хотя, видимо это всё в доках есть...
GDAL дефолтный, из последнего набора FWtools. Видимо 1.8.0. Команды для создания геотиффа опять же дефолтные, то есть:
Код: Выделить всё
gdal_translate -of Gtiff d:\2929.tif d:\test.tif
Спойлер
Geotiff_Information:
Version: 1
Key_Revision: 1.0
Tagged_Information:
ModelTransformationTag (4,4):
0.4000396953381641.69107074484179e-0050 3144083.19995828
5.12494640542282e-014-0.4000676361177440 6175719.40006764
0 0 0 0
0 0 0 1
End_Of_Tags.
Keyed_Information:
GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
GTCitationGeoKey (Ascii,9): "Nonearth"
GeogAngularUnitsGeoKey (Short,1): Angular_Degree
ProjLinearUnitsGeoKey (Short,1): Linear_Meter
End_Of_Keys.
End_Of_Geotiff.
Projection Linear Units: 9001/metre (1.000000m)
Corner Coordinates:
Upper Left ( 3144083.200, 6175719.400)
Lower Left ( 3144083.400, 6170987.000)
Upper Right ( 3148114.400, 6175719.400)
Lower Right ( 3148114.600, 6170987.000)
Center ( 3146098.900, 6173353.200)
Version: 1
Key_Revision: 1.0
Tagged_Information:
ModelTransformationTag (4,4):
0.4000396953381641.69107074484179e-0050 3144083.19995828
5.12494640542282e-014-0.4000676361177440 6175719.40006764
0 0 0 0
0 0 0 1
End_Of_Tags.
Keyed_Information:
GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
GTCitationGeoKey (Ascii,9): "Nonearth"
GeogAngularUnitsGeoKey (Short,1): Angular_Degree
ProjLinearUnitsGeoKey (Short,1): Linear_Meter
End_Of_Keys.
End_Of_Geotiff.
Projection Linear Units: 9001/metre (1.000000m)
Corner Coordinates:
Upper Left ( 3144083.200, 6175719.400)
Lower Left ( 3144083.400, 6170987.000)
Upper Right ( 3148114.400, 6175719.400)
Lower Right ( 3148114.600, 6170987.000)
Center ( 3146098.900, 6173353.200)
Примера выложить не могу в связи с размером и в связи с секретностью.
Boris
ничего не мешает создать мировой файл привязки. Это впринципе очевидное решение задачи. Однако цель я себе поставил разобраться именно в скармливании мапинфо геотифов =)
Не могли Вы подробнее поведать о тегах, где и с чем их едят ? Хотя, видимо это всё в доках есть...
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Несколько вопросов по GDAL
Давайте сделаем так вы создайте выложите размеры своего растра и файл привязки, который ему прикрутили, и команду, которой делали.
В идеале не обязательно выкладывать родной растр, двухбитный абсолютно черный со сжатием CITT4, прекрастно подойдет в качестве иллюстрации.
Теги описаны в документации и формату Tiff, вернее их место расположение. Сами теги могут быть любыми и зависят от программы создающей растр. В фотошоп входит набор некоторых стандартных наборов тегов. Остальные он игнорирует и убивает. Но каждая программа может писать свои собственные. Есть некоторые широко известные, на пример тот же геотиф, но для некоторых пакетов и он неизвестен.
В идеале не обязательно выкладывать родной растр, двухбитный абсолютно черный со сжатием CITT4, прекрастно подойдет в качестве иллюстрации.
Теги описаны в документации и формату Tiff, вернее их место расположение. Сами теги могут быть любыми и зависят от программы создающей растр. В фотошоп входит набор некоторых стандартных наборов тегов. Остальные он игнорирует и убивает. Но каждая программа может писать свои собственные. Есть некоторые широко известные, на пример тот же геотиф, но для некоторых пакетов и он неизвестен.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Несколько вопросов по GDAL
Да, забыл сказать - при наличии файла PRJ у меня часто мапинфо открывая растры с twf и не спрашивает ничего. Кроме того, точно н форуме была программа для массового перевода tfw в привязку манфино.
-
- Гуру
- Сообщения: 879
- Зарегистрирован: 17 июн 2010, 23:14
- Репутация: 207
- Откуда: Москва
Re: Несколько вопросов по GDAL
Прикладываю архив с файлами. 2929.tif и 2929.tab - растровый файл и файл привязки к нему. tif сжат в LZW через фотошоп. test.tif - полученный геотифф. Для получения использована команда:
Задача всё та же - как скормить мапинфо полученный геотифф ? Как сделать так, чтобы он понял и "проекцию" NonEarth и точки привязки по углам.
Повторюсь, что задача чисто на интерес, не критично, будет ли решена или нет.
Код: Выделить всё
gdal_translate -of Gtiff -co "COMPRESS=CCITTFAX4" -co "NBITS=1" e:\2929.tif e:\test.tif
Повторюсь, что задача чисто на интерес, не критично, будет ли решена или нет.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Несколько вопросов по GDAL
Я конечно не большой спец по Mapinfo, но где в этом .tab описание проекции? Ее же там просто нет. Строки
только указывают на используемые единицы измерения (т.е. у вас план-схема). Естественно, при таком раскладе GDAL ничего не запишет, т.к. писать-то нечего.
Мне только что подбросили файл с привязкой MapInfo, в котором проекция указана (правда, как CoordSys Earth). Все переносится в геотиф.
UPD
Ага, так и есть. Вот чего пишут в доке
Код: Выделить всё
CoordSys NonEarth Units "m"
Units "m"
Мне только что подбросили файл с привязкой MapInfo, в котором проекция указана (правда, как CoordSys Earth). Все переносится в геотиф.
UPD
Ага, так и есть. Вот чего пишут в доке
Вывод — учиться, учиться и еще раз учиться RTFM рулитUse syntax 2 (т.е. CoordSys NonEarth — прим. мое) to explicitly define a non-Earth coordinate system, such as the coordinate system used in a floor plan or other CAD drawing. In the CoordSys Non-Earth case, the base coordinate system is an arbitrary Cartesian grid. The Units clause specifies the base coordinate units, and the Affine clause specifies the derived coordinate units.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 31 гость