¿Creando un shapefile que muestre las huellas de los rásteres?

31

Tengo alrededor de 1,000 imágenes satelitales en formato tiff, y quiero crear un shapefile que servirá como un índice para los rásteres. Esto es algo similar a un catálogo de ráster, pero no quiero crear un catálogo de ráster.

Algunos obstáculos que puedo ver, es que la imagen está georreferenciada, por lo que no tienen forma rectangular (me refiero al área de datos).

Para aclarar, necesito que el polígono cubra solo los píxeles no nulos (o no nodata) de la trama, y no toda la trama rectangular. La mayoría de las respuestas hasta ahora, dan un polígono rectangular, que cubre los datos, así como los píxeles que no son datos.

Mi imagen

Resultadodadoporlasherramientasqueheexaminado(comocatlograsterizado,variosArcscripts,scriptPythonpersonalizadodadoenunadelasrespuestas):

Resultado que quiero:

    
pregunta Devdatta Tengshe 06.06.2012 - 08:35

8 respuestas

15

Hay un complemento en QGIS llamado Image Boundary . Es una gran herramienta. Dentro de esta herramienta hay una opción para "Píxeles válidos" que omitirá los bordes negros de una imagen de satélite, por ejemplo.

    
respondido por el Ryan Garnett 06.06.2012 - 15:10
9

El siguiente código tomará un ráster de entrada, obtendrá su extensión e insertará esa extensión en una clase de polígono:

import arcpy

r = arcpy.Raster(in_raster)
point = arcpy.Point()
array = arcpy.Array()

corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]

cursor = arcpy.InsertCursor(fc)
feat = cursor.newRow()
for corner in corners:    
    point.X = getattr(r.extent, "%s" % corner).X
    point.Y = getattr(r.extent, "%s" % corner).Y
    array.add(point)
array.add(array.getObject(0))
print len(array)
polygon = arcpy.Polygon(array)
feat.shape = polygon
cursor.insertRow(feat)
array.removeAll()
del feat
del cursor

Puedes ejecutarlo en la ventana de ArcMap Python configurando in_raster y fc así:

>>> fc = 'r_extent'
>>> in_raster = 'CaliCoast10mNED_HavCurvedPCS'

donde r_extent es una entidad de polígono existente. Luego simplemente copia el código y ejecútalo. Entiendo esto:

    
respondido por el Chad Cooper 06.06.2012 - 17:41
7

Puede usar gdaltindex para esto: enlace

Sin embargo, seguirá creando rectángulos (por ejemplo, 4 + 1 puntos) en el mismo sistema de referencia que las imágenes. Pero me pregunto si eso realmente es un problema: ¿qué tamaño tienen sus imágenes?

    
respondido por el johanvdw 06.06.2012 - 08:40
4

Probé la herramienta "Límite de imagen" en QGIS pero falla con algunos rásteres.

Otra opción que me funcionó es: - 1. Convierta el ráster de entrada en un solo número digital utilizando la utilidad de línea de comandos gdal_translate.

gdal_translate -co compress = lzw -b 1 -ot byte -scale 1 1 inp.tif out.tif

Esto creará ráster con valores de 1 en todas partes inp.tif tenía valores distintos de cero.

  1. Luego, en ArcMap puede usar la herramienta "raster to polygon" para obtener el polígono (shapefile).

El shapefile de salida tendrá límites no cuadriláteros, con múltiples vértices poligonales, siguiendo el límite real de la imagen.

    
respondido por el user3294041 16.03.2015 - 16:51
3

Si está interesado en una solución con script, pruebe el comando gdal nearblack . Puede usar la bandera -blanco para recuperar datos delimitados por espacios en blanco también. Puede poligonizar la salida para generar una huella no rectangular de los datos ráster.

##run nearblack
shellcmds = "nearblack -white -o " + outpath + " " + inpath
os.system(shellcmds)

##run polygonize
shellcmds = "gdal_polygonize.py " + outpath + " -f" + """ "ESRI Shapefile"  """ + outpath2 + " nearblack"
os.system(shellcmds)
    
respondido por el jsta 13.11.2014 - 00:33
1

Creo que, en ArcGIS world, puedes lograrlo con 3D Analyst \ Herramienta de conversión \ De ráster \ Dominio ráster .

    
respondido por el Tomek 15.02.2013 - 10:08
0

Hay una herramienta en ArcGIS 3D Analyst llamada Dominio raster que crea una huella de polígono o polilínea de las porciones de datos de un dataset ráster e ignora las celdas NoData. Funcionó muy bien para mí.

    
respondido por el joey 12.04.2013 - 23:34
0

Puede crear un catálogo de ráster con una referencia espacial asignada, agregar el catálogo de ráster a ArcMap y luego "Exportar Huella". Recuerde que existe la opción de crear un catálogo de ráster "SIN MANEJO" para que no esté duplicando cada dataset ráster.

    
respondido por el nhunsaker 09.07.2013 - 20:06

Lea otras preguntas en las etiquetas