Cálculo del límite de imagen / huella de imágenes de satélite utilizando herramientas de código abierto?

10

Necesito crear los contornos poligonales de varias imágenes ráster de una sola capa, no el cuadro de extensión / límite, sino el área sin los valores de nodata, como se muestra aquí: ¿ Crear un archivo de forma que muestre las huellas de los rásteres? .

En la respuesta a la pregunta anterior, se mencionó el complemento Image Boundary , sin embargo, no lo encuentro en el QGIS 1.8.0 Lisboa, que se ejecuta en Ubuntu.

¿La herramienta aún está disponible?

Si no, ¿hay alguna manera de hacer esto usando herramientas de código abierto, ya sea gdal, R, QGIS, GRASS o similar, no con ArcMap?

spib
fuente

Respuestas:

4

Puede agregar el antiguo repositorio donde haya complementos en el Repositorio oficial.

http://pyqgis.org/repo/contributed

El complemento de límite de imagen tiene la opción de calcular píxeles válidos, pero la imagen debe ser la escena completa, como CBERS o Landsat, donde este proceso calcula las primeras 4 esquinas. La imagen necesita tener nodos con valor CERO para el área sin imágenes (escaneada por un sensor satelital).

Autor del límite de imagen

lmotta
fuente
Hola @lmotta, gracias por el enlace del repositorio. Las imágenes en las que estoy trabajando en este momento son todas imágenes de SAR, con valores de NA (o -3.4e + 38 según la herramienta de valores en QGIS). Si uno pudiera agregar el valor de nodata manualmente en la herramienta, en lugar de tener CERO como la única opción, sería genial, de lo contrario, primero podría ejecutar un script en R para dar a mis valores de NA nuevos valores de cero. Sin embargo, es una gran herramienta, ¡gracias!
spib
¿Hay un nuevo repositorio para Image Boundary? El enlace que proporciona es 404. ¿Quizás lo siguiente ?: github.com/lmotta/imagefootprint_plugin
Aaron
¿Hay algún lugar donde podamos encontrar documentación para Image Boundary?
Loonuh
11

Finalmente encontré una manera de hacer esto:

paso 1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

Esto hace dos cosas importantes: establece los valores de destino Sin datos (borde exterior) en 0, y crea una banda alfa.

paso 2: gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3

El segundo paso usa la banda alfa (banda 2), creada en el paso 1, y crea un archivo de forma a partir de esa banda.

Esto se puede escribir fácilmente en un script bash, si tiene muchas imágenes, para crear contornos exactos.  

spib
fuente
Brillante, esta solución no se basa en ningún complemento o software. Crear huellas de trama que sean sensibles a NoData es una de esas tareas de SIG que no es tan sencilla como parece que debería ser.
Charlie Parr
Cuando uso este método, termino con un archivo de formas lleno de polígonos que supongo que representan diferentes colores agrupados. ¿Cómo puedo evitar esto y terminar con solo unos pocos polígonos que representan datos de sí?
Loonuh
5

Utilicé gdal_translatesegún lo sugerido por el proyecto 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

ingrese la descripción de la imagen aquí

usuario2856
fuente
1
Con la versión troncal GDAL ahora es posible usar gdal_polygonize directamente contra la imagen fuente osgeo-org.1560.x6.nabble.com/… . Sin embargo, se necesita algo de limpieza para eliminar los polígonos sin datos.
user30184
4

El complemento Image Boundary tampoco funcionó para mí, por lo tanto, utilicé el mismo enfoque con GDAL. Sin embargo, solo funcionó para mí después de cambiar el primer paso a:

paso 1 : gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Estoy trabajando con la banda Landsat8 (donde no hay datos = 0) y cuando uso la -dstnodatafunción obtengo:

BAND1 con ningún dato = '' no hay datos
BAND2 (banda alfa) = '255' para la escena entera / medida

mientras que con la -srcnodatafunción obtengo:

BAND1 con ningún dato = 'no hay datos de los
BAND2 (alfa banda) sin datos = datos válidos 'no datos' y = '255', que permite entonces al polígono extracto para sólo datos válidos.

No podía entender completamente la razón detrás de este comportamiento (¿cómo se calcula alfa?), Pero espero que esto pueda ayudar a otros que enfrentan el mismo problema.

dorakiara
fuente