Вычисление границы изображения / следа спутниковых изображений с использованием инструментов с открытым исходным кодом?


10

Мне нужно создать контуры многоугольника для нескольких однослойных растровых изображений, а не экстент / ограничивающий прямоугольник, а область без значений узлов, как показано здесь: Создание шейп- файла, показывающего следы растров? ,

В ответе на вопрос выше был упомянут плагин Image Boundary , однако я не нахожу его в Lisboa QGIS 1.8.0, работающей на Ubuntu.

Инструмент все еще доступен?

Если нет, то есть ли способ сделать это, используя инструменты с открытым исходным кодом, gdal, R, QGIS, GRASS или аналогичные, не с ArcMap?


Ответы:


4

Вы можете добавить старый репозиторий, где есть плагины в Официальном репозитории.

http://pyqgis.org/repo/contributed

Плагин границы изображения имеет опцию для вычисления действительного пикселя, но изображение должно быть полной сценой, как CBERS или Landsat, где этот процесс вычисляет первые 4 угла. Изображение должно иметь узлы с нулевым значением для области без изображения (сканируется спутниковым датчиком).

Автор изображения Граница


Привет @lmotta, спасибо за ссылку на репозиторий. Все изображения, над которыми я сейчас работаю, являются изображениями SAR со значениями NA (или -3,4e + 38 в соответствии с инструментом значений в QGIS). Если бы можно было добавить значение nodata вручную в инструменте, вместо того, чтобы использовать ZERO в качестве единственной опции, было бы здорово, иначе я мог бы сначала запустить скрипт на R, чтобы дать моим значениям NA новые значения, равные нулю. Это отличный инструмент, спасибо!
— Спайб

Есть ли новый репозиторий для Image Boundary? Ссылка, которую вы предоставляете: 404. Может быть, следующая ?: github.com/lmotta/imagefootprint_plugin
— Aaron

Есть ли где-нибудь, что мы можем найти документацию для Границы изображения?
— Loonuh

11

Я наконец нашел способ сделать это:

шаг 1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

Это делает две важные вещи: он устанавливает целевые значения No Data (вне границы) в 0 и создает альфа-полосу.

шаг 2: gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3

На втором шаге используется альфа-полоса (полоса 2), созданная на шаге 1, и создается шейп-файл из этой полосы.

Затем это можно легко написать в bash-скрипте, если у вас много изображений, для создания точных контуров.  


Замечательно, что это решение не зависит от каких-либо плагинов или программного обеспечения. Создание растровых следов, чувствительных к NoData, является одной из тех задач ГИС, которая не так проста, как кажется.
— Чарли Парр

Когда я использую этот метод, я получаю шейп-файл, полный полигонов, которые, как я полагаю, представляют разные цвета, сгруппированные вместе. Как я могу избежать этого и в результате всего несколько полигонов представляют да-данные?
— Loonuh

5

Я использовал gdal_translateв соответствии с предложением проекта GDAL.

gdal_translate -b mask -of vrt -a_nodata 0 test.tif test.vrt
# Note the  -a_nodata 0 doesn't seem to work when the mask is input, so do another pass
gdal_translate -b 1 -of vrt -a_nodata 0 test.vrt test2.vrt
gdal_polygonize.py -q  -8 test2.vrt -b 1 -f "ESRI Shapefile" testdata.shp

введите описание изображения здесь


1
В версии магистрали GDAL теперь можно использовать gdal_polygonize непосредственно для исходного изображения osgeo-org.1560.x6.nabble.com/… . Однако для удаления полигонов без данных требуется некоторая очистка.
— user30184

4

Плагин Image Boundary также не работал для меня, поэтому я использовал тот же подход с GDAL. Тем не менее, это сработало только для меня после изменения первого шага на:

шаг 1 : gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Я работаю с группой Landsat8 (где нет данных = 0) и при использовании -dstnodataфункции я получаю:

Band1 с не данных = «Нет данных»
Band2 (альфа - диапазон) = «255» для всей сцены / степени

тогда как с -srcnodataфункцией я получаю:

Band1 с не данными = «Нет данных»
Band2 (альфа - группа) без каких - либо данных = «нет данных» и действительных данных = «255» , который затем позволяет извлекать только полигон для действительных данных.

Я не мог полностью понять причину этого поведения (как вычисляется альфа?), Но я надеюсь, что это может помочь другим, сталкивающимся с той же проблемой.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.