Несколько вопросов по GDAL

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Несколько вопросов по GDAL

Сообщение Boris » 18 авг 2011, 18:01

Может ли кто прояснить несколько вопрос, т.к не смог найти ответов от том ка проделать это средствами программ пакета 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 - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Несколько вопросов по GDAL

Сообщение Voltron » 18 авг 2011, 18:51

Boris писал(а):а) можно ли вырезать фрагмент растра с сохранением привязки НЕ производя никаких пересчетов пикселей исходного растра?
2) Я пропускал несколько растров через gdalwarp - обрезал по векторному контуру и у них изменилась привязка и размер пикселя. Изменилась очень мало - с 30 метров на 29, и много девяток. Измение не принципиальное, но означает ли оно что несмотря на одинаковость СК на входе и выходе пересчет все же производился?
Как я понимаю, это один и тот же вопрос в разных формулировках.
Думаю, что обрезка без пересчета невозможна в большинстве случаев. Разве что границы контура проходят точно по границам пикселей.
Boris писал(а):3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
Создать VRT из исходного файла и файла маски, а потом применить маску как канал нового исходного (VRT) растра?
Boris писал(а):4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
Не распарсил. Имеется в виду «а не 3 канала + альфа канал» или как?
Boris писал(а):5) можно ли выбрать из растрового файла в новый файл только те пиксели, которые отвечают некоторым условиям? На пример, все пиксели, значения которых в (R < 40 и G < 20 и B < 30) - нужны, а остальные - нет и равны noData.
Можно. Например, при помощи gdal_calc выбрать нужные пиксели в каждом канале и получить три растра, а затем склеить их получить 3х канальный растр.
Boris писал(а):6) Можно ли задать в какой-либо из команд трансляции растра пакета GDAL несколько значений noData для исходных данных (исходного канала)? Т.е. не только 0, ну или какое-то одно значение, а (1,2,3,4,5) - это все noData.
Нельзя. Вот что говорит Фрэнк: «GDAL only supports single nodata values as part of the data model».
Boris писал(а):7) gdal_calc - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?
Выходной файл всегда одноканальный

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Несколько вопросов по GDAL

Сообщение Boris » 23 авг 2011, 18:38

Спасибо за ответы.
Прошу уточнить:
Voltron писал(а):
Boris писал(а):3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
Создать VRT из исходного файла и файла маски, а потом применить маску как канал нового исходного (VRT) растра?
Я прочитал описание формата, правильно ли я понял, что это виртуальный набор каналов с широкими функциями? Не очень понял, что происходит при указании этого формата в качестве выходного в программах с пересчетом - заменой системы координат или пиксельных значений.
Boris писал(а):4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
Не распарсил. Имеется в виду «а не 3 канала + альфа канал» или как?
[/quote]
Попробую с примером - я запустил gdalwarp (если не путаю) на файл, с 4-мя каналами Landsat 3-4-5-7, в сообщении программы и полученном результате явно видно, что 1-ый канал был принят за альфа-канал. А мне хотелось просто обработать 4-х канальный растр.
Новый вопрос:
Хочу физически уменьшить размер растра, за счет того, что удалить из файла окантовку NoData, с помощь использования NoData внутри канала или внешней растровой или векторной маски. Но главное, что бы изменилась привязки и размерность, но не пересчитывались пиксели, а были взяты как есть.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Несколько вопросов по GDAL

Сообщение Voltron » 23 авг 2011, 19:16

Boris писал(а):Я прочитал описание формата, правильно ли я понял, что это виртуальный набор каналов с широкими функциями?
Пожалуй, можно рассматривать и так. VRT это что-то вроде контейнера для реальных данных.
Boris писал(а):Не очень понял, что происходит при указании этого формата в качестве выходного в программах с пересчетом - заменой системы координат или пиксельных значений.
Будет создан VRT-файл, содержащий относительную ссылку на исходный растр и указания о том, как этот растр необходимо отображать. Например, если при перепроецировании растра в качестве выходного файла указать VRT, то исходный файл останется без изменений, новый растр не создается. В VRT будут записаны параметры трансформации и путь к исходному файлу. При открытии VRT в QGIS (или использовании с другими утилитами GDAL) растр будет восприниматься как перепроецированный.
Boris писал(а):Попробую с примером - я запустил gdalwarp (если не путаю) на файл, с 4-мя каналами Landsat 3-4-5-7, в сообщении программы и полученном результате явно видно, что 1-ый канал был принят за альфа-канал. А мне хотелось просто обработать 4-х канальный растр.
Теперь ясно. Если правильно понимаю, то это не вина GDAL.
В спецификации формата TIFF не предусмотрена возможность задавать интерпретацию каждого канала (например, красный это канал или синий или альфа-канал), поэтому интерпретация назначается на основе значений в тегах PHOTOMETRIC и EXTRASAMPLES.

Добиться желаемого результата можно прибегнув к шаманским действиям. Необходимо задать правильные значения тегов, для этого «пересоздадим» исходный растр

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

gdal_translate -of GTiff -co "PHOTOMETRIC=RGB" -co "ALPHA=NO" input.tif output.tif
Растр output.tif не будет содержать альфа-канал, убедиться в этом можно запустив gdalinfo.
Небольшое обсуждение этой проблемы можно почитать здесь.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Несколько вопросов по GDAL

Сообщение Boris » 24 авг 2011, 12:10

спасибо. выпала пара спокойных дней, теперь буду "шаманить."

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Несколько вопросов по GDAL

Сообщение Slinger » 27 сен 2011, 00:50

Хотел было создать тему с аналогичным названием, но внезапно обнаружил эту темку, так что если позволите, то отпишусь здесь =)

Вопрос возник в следующем. Имея на руках тестовый GeoTiff, удалось скормить его mapinfo. Тот лишь спросил о том, какую я хочу назначить проекцию. То есть координаты углов, прописанные в геотифе, он проглотил. Сам geoTiff был взят тестовый с ftp.remotesensing.org.

Тестируя gdal_translate, решил собрать GeoTiff из имеющегося у себя файла Tiff + файл привязки .tab. На выходе получился действительно геотифф, в котором отсутствовали сведения о проекции (в отличии от тестовых со странички геотифа), но присутствовали сведения об углах листа и координаты естественно. Об этом мне успешно поведал listgeo. Однако, ради практического интереса, при попытке подгрузить мой свежесобранный geotiff в MapInfo, тот не распознал в нём геотифф и предложил дефолтные опции "показать/регистрировать"...

Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Несколько вопросов по GDAL

Сообщение Slinger » 28 сен 2011, 20:48

Есть у кого-нибудь интересные идеи насчёт решения загадки ?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Несколько вопросов по GDAL

Сообщение Voltron » 28 сен 2011, 21:11

Может, вы перестанете говорить загадками и все же откроете страшную тайну? Покажите команды, которыми пользовались, выложите тестовый набор данных. Я уже молчу о такой мелочи, как используемая версия GDAL

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

Re: Несколько вопросов по GDAL

Сообщение Александр Мурый » 29 сен 2011, 08:31

Slinger писал(а): Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?
Скорее второе. Поддержка разными версиями MI растров разных форматов -- это тема вообще за гранью добра и зла :twisted: Тут разбираться и ещё раз разбираться..
Редактор материалов, модератор форума

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Несколько вопросов по GDAL

Сообщение Boris » 29 сен 2011, 14:50

А что мешает извлечь привязку из этого неправильно геотифа назад в world=file и проверить свои предположения? Уж tfw-файлы мапинфо читает без проблем?
Теперь о тегах. Может дело и не в привязке, я встречал несколько программ, которые не любили теги Tiff, которые не знали в лицо. Они просто отказывались работать с такими растрами. На сколько я помню, в GDAL есть возможность выбирать набор тегов - базовый, расширенный и GDAL. Последний самый объемный и наименее любимый.

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Несколько вопросов по GDAL

Сообщение Slinger » 29 сен 2011, 17:22

Voltron

GDAL дефолтный, из последнего набора FWtools. Видимо 1.8.0. Команды для создания геотиффа опять же дефолтные, то есть:

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

gdal_translate -of Gtiff d:\2929.tif d:\test.tif
Вместе с .tif файлом находился и файл .tab, поэтому геотифф создался и listgeo указал:
Спойлер
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)
Информация о проекции отсутствует. При попытке скормить его ArcMap'у, тот сказал, что информации о проекции нет, однако углы рамок съел корректно. MapInfo (как 8.5, так и 10.5) отказались воспринимать его как геотифф и предложили зарегистрировать.

Примера выложить не могу в связи с размером и в связи с секретностью.

Boris

ничего не мешает создать мировой файл привязки. Это впринципе очевидное решение задачи. Однако цель я себе поставил разобраться именно в скармливании мапинфо геотифов =)

Не могли Вы подробнее поведать о тегах, где и с чем их едят ? Хотя, видимо это всё в доках есть...

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Несколько вопросов по GDAL

Сообщение Boris » 29 сен 2011, 17:33

Давайте сделаем так вы создайте выложите размеры своего растра и файл привязки, который ему прикрутили, и команду, которой делали.
В идеале не обязательно выкладывать родной растр, двухбитный абсолютно черный со сжатием CITT4, прекрастно подойдет в качестве иллюстрации.
Теги описаны в документации и формату Tiff, вернее их место расположение. Сами теги могут быть любыми и зависят от программы создающей растр. В фотошоп входит набор некоторых стандартных наборов тегов. Остальные он игнорирует и убивает. Но каждая программа может писать свои собственные. Есть некоторые широко известные, на пример тот же геотиф, но для некоторых пакетов и он неизвестен.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: Несколько вопросов по GDAL

Сообщение Boris » 29 сен 2011, 17:39

Да, забыл сказать - при наличии файла PRJ у меня часто мапинфо открывая растры с twf и не спрашивает ничего. Кроме того, точно н форуме была программа для массового перевода tfw в привязку манфино.

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Несколько вопросов по GDAL

Сообщение Slinger » 29 сен 2011, 21:34

Прикладываю архив с файлами. 2929.tif и 2929.tab - растровый файл и файл привязки к нему. tif сжат в LZW через фотошоп. test.tif - полученный геотифф. Для получения использована команда:

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

gdal_translate -of Gtiff -co "COMPRESS=CCITTFAX4" -co "NBITS=1" e:\2929.tif e:\test.tif
Задача всё та же - как скормить мапинфо полученный геотифф ? Как сделать так, чтобы он понял и "проекцию" NonEarth и точки привязки по углам.

Повторюсь, что задача чисто на интерес, не критично, будет ли решена или нет.
geotiff_files.zip
(28.54 КБ) 412 скачиваний

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Несколько вопросов по GDAL

Сообщение Voltron » 29 сен 2011, 21:49

Я конечно не большой спец по Mapinfo, но где в этом .tab описание проекции? Ее же там просто нет. Строки

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

CoordSys NonEarth Units "m"
Units "m"
только указывают на используемые единицы измерения (т.е. у вас план-схема). Естественно, при таком раскладе GDAL ничего не запишет, т.к. писать-то нечего.

Мне только что подбросили файл с привязкой MapInfo, в котором проекция указана (правда, как CoordSys Earth). Все переносится в геотиф.

UPD
Ага, так и есть. Вот чего пишут в доке
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.
Вывод — учиться, учиться и еще раз учиться RTFM рулит

Ответить

Вернуться в «GDAL/OGR»

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

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