Страница 1 из 2
Несколько вопросов по GDAL
Добавлено: 18 авг 2011, 18:01
Boris
Может ли кто прояснить несколько вопрос, т.к не смог найти ответов от том ка проделать это средствами программ пакета 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 - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?
Re: Несколько вопросов по GDAL
Добавлено: 18 авг 2011, 18:51
Voltron
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 - как задается значение в выходном файле? Или выходной файл всегда содержит единственный слой?
Выходной файл всегда одноканальный
Re: Несколько вопросов по GDAL
Добавлено: 23 авг 2011, 18:38
Boris
Спасибо за ответы.
Прошу уточнить:
Voltron писал(а):
Boris писал(а):3) Чем можно провести применение маски к растровому файлу, если маска - отдельный файл, а не канал в исходном растре?
Создать VRT из исходного файла и файла маски, а потом применить маску как канал нового исходного (VRT) растра?
Я прочитал описание формата, правильно ли я понял, что это виртуальный набор каналов с широкими функциями? Не очень понял, что происходит при указании этого формата в качестве выходного в программах с пересчетом - заменой системы координат или пиксельных значений.
Boris писал(а):4) как сказать программам GDAL, что 4-слоя - это все значимые слои при складывании и последующей обработке, а 3 канала + альфа-канал? Формат TIF.
Не распарсил. Имеется в виду «а
не 3 канала + альфа канал» или как?
[/quote]
Попробую с примером - я запустил gdalwarp (если не путаю) на файл, с 4-мя каналами Landsat 3-4-5-7, в сообщении программы и полученном результате явно видно, что 1-ый канал был принят за альфа-канал. А мне хотелось просто обработать 4-х канальный растр.
Новый вопрос:
Хочу физически уменьшить размер растра, за счет того, что удалить из файла окантовку NoData, с помощь использования NoData внутри канала или внешней растровой или векторной маски. Но главное, что бы изменилась привязки и размерность, но не пересчитывались пиксели, а были взяты как есть.
Re: Несколько вопросов по GDAL
Добавлено: 23 авг 2011, 19:16
Voltron
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.
Небольшое обсуждение этой проблемы можно почитать
здесь.
Re: Несколько вопросов по GDAL
Добавлено: 24 авг 2011, 12:10
Boris
спасибо. выпала пара спокойных дней, теперь буду "шаманить."
Re: Несколько вопросов по GDAL
Добавлено: 27 сен 2011, 00:50
Slinger
Хотел было создать тему с аналогичным названием, но внезапно обнаружил эту темку, так что если позволите, то отпишусь здесь =)
Вопрос возник в следующем. Имея на руках тестовый GeoTiff, удалось скормить его mapinfo. Тот лишь спросил о том, какую я хочу назначить проекцию. То есть координаты углов, прописанные в геотифе, он проглотил. Сам geoTiff был взят тестовый с ftp.remotesensing.org.
Тестируя gdal_translate, решил собрать GeoTiff из имеющегося у себя файла Tiff + файл привязки .tab. На выходе получился действительно геотифф, в котором отсутствовали сведения о проекции (в отличии от тестовых со странички геотифа), но присутствовали сведения об углах листа и координаты естественно. Об этом мне успешно поведал listgeo. Однако, ради практического интереса, при попытке подгрузить мой свежесобранный geotiff в MapInfo, тот не распознал в нём геотифф и предложил дефолтные опции "показать/регистрировать"...
Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?
Re: Несколько вопросов по GDAL
Добавлено: 28 сен 2011, 20:48
Slinger
Есть у кого-нибудь интересные идеи насчёт решения загадки ?
Re: Несколько вопросов по GDAL
Добавлено: 28 сен 2011, 21:11
Voltron
Может, вы перестанете говорить загадками и все же откроете страшную тайну? Покажите команды, которыми пользовались, выложите тестовый набор данных. Я уже молчу о такой мелочи, как используемая версия GDAL
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 08:31
Александр Мурый
Slinger писал(а):
Вопрос - сделал ли я что-то некорректное при сборке geoTiff'a или же MapInfo не воспринимает geotiff, какой он есть, если в нём отсутствуют сведения о проекции ?
Скорее второе. Поддержка разными версиями MI растров разных форматов -- это тема вообще за гранью добра и зла

Тут разбираться и ещё раз разбираться..
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 14:50
Boris
А что мешает извлечь привязку из этого неправильно геотифа назад в world=file и проверить свои предположения? Уж tfw-файлы мапинфо читает без проблем?
Теперь о тегах. Может дело и не в привязке, я встречал несколько программ, которые не любили теги Tiff, которые не знали в лицо. Они просто отказывались работать с такими растрами. На сколько я помню, в GDAL есть возможность выбирать набор тегов - базовый, расширенный и GDAL. Последний самый объемный и наименее любимый.
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 17:22
Slinger
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
ничего не мешает создать мировой файл привязки. Это впринципе очевидное решение задачи. Однако цель я себе поставил разобраться именно в скармливании мапинфо геотифов =)
Не могли Вы подробнее поведать о тегах, где и с чем их едят ? Хотя, видимо это всё в доках есть...
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 17:33
Boris
Давайте сделаем так вы создайте выложите размеры своего растра и файл привязки, который ему прикрутили, и команду, которой делали.
В идеале не обязательно выкладывать родной растр, двухбитный абсолютно черный со сжатием CITT4, прекрастно подойдет в качестве иллюстрации.
Теги описаны в документации и формату Tiff, вернее их место расположение. Сами теги могут быть любыми и зависят от программы создающей растр. В фотошоп входит набор некоторых стандартных наборов тегов. Остальные он игнорирует и убивает. Но каждая программа может писать свои собственные. Есть некоторые широко известные, на пример тот же геотиф, но для некоторых пакетов и он неизвестен.
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 17:39
Boris
Да, забыл сказать - при наличии файла PRJ у меня часто мапинфо открывая растры с twf и не спрашивает ничего. Кроме того, точно н форуме была программа для массового перевода tfw в привязку манфино.
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 21:34
Slinger
Прикладываю архив с файлами. 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 и точки привязки по углам.
Повторюсь, что задача чисто на интерес, не критично, будет ли решена или нет.
Re: Несколько вопросов по GDAL
Добавлено: 29 сен 2011, 21:49
Voltron
Я конечно не большой спец по Mapinfo, но где в этом .tab описание проекции? Ее же там просто нет. Строки
только указывают на используемые единицы измерения (т.е. у вас план-схема). Естественно, при таком раскладе 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 рулит