34 votos

¿Obtener los límites de una imagen rasterizada como polígono en ArcGIS Desktop?

Tengo una imagen rasterizada rectangular en ArcGIS. Mi pregunta es: ¿cómo puedo producir un polígono que es sólo la extensión de la imagen de trama? Es decir, quiero tener una capa de polígono con un solo cuadrilátero que es el borde de la imagen.

He intentado simplemente hacer una conversión Raster->Polígono, pero esto intenta utilizar los datos de la imagen para generar el contorno - todo lo que quiero es el contorno del borde de la imagen.

¿Alguna idea?

Estoy utilizando ArcGIS Desktop 10.

43voto

Simon Nickerson Puntos 17147

Si tiene Spatial Analyst, puede hacerlo:

  1. multiplicar el raster por 0 para crear un raster de valor constante utilizando la Calculadora de Raster.
  2. convierta el resultado del paso 1 en polígono utilizando la herramienta Raster to Polygon.

Otra solución:

Si tu tienes Analista 3D entonces puede utilizar la licencia Herramienta de dominio rasterizado en 3D Analyst>Conversión>de raster (sin embargo, no tiene la función de suavizado)

11voto

Matt Puntos 406

¿Y si simplemente se digitaliza? Clic-clic-clic-hecho.

8 votos

No sé por qué se ha votado en contra de esta opción. Puede encontrar las coordenadas de las esquinas de la extensión y crear vértices en esas coordenadas. Incluso se puede utilizar para el análisis. Si es sólo para la visualización, click-click-click-click funciona muy bien.

6 votos

Yo diría que porque la trama podría tener una forma irregular y, dependiendo de la complejidad, podría resultar un trabajo de digitalización bastante pesado

4 votos

Pero el OP dijo que era rectangular. A mí me parece un trabajo bastante sencillo. Con el zoom y siendo preciso, la diferencia entre el contorno real de la trama y el contorno digitalizado sería insignificante para cualquier aplicación del mundo real.

11voto

ParoX Puntos 773

Yo uso este simple python script, crea un featureclass de polígono con la extensión de todos los raster presentes en una carpeta. Para usarlo, puede crear una herramienta en ArcToolbox o simplemente cambiar las variables InFolder y Dest (Destino).

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    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))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor

0 votos

puede decirnos en detalle cómo utilizar este código. Quiero usarlo en un archivo raster .asc. Mis imágenes son diferentes subcarpetas diferentes.

1 votos

Respuesta de jeb me ha funcionado, no tengo suficiente rep para votarlo. @GIS Data Butcher Guarda el código fuente completo en un archivo script.py y ejecútalo desde Ventana Python dentro de ArcMap. Puede utilizar el siguiente comando en Python Window para ejecutar script desde el archivo. > execfile(r'd: \temp\<strkeep>script<strkeep>.py ')

0 votos

perfecto!! me pregunto, ¿hay alguna manera de que la herramienta lea también las subcarpetas?

10voto

codinguser Puntos 206

Puede utilizar la herramienta Construir huella en la caja de herramientas de gestión de datos. Tienes que crear un conjunto de datos de mosaico a partir de tu raster.

Cree un nuevo mosaico en una geodatabase de archivos, añada su raster.

Abra su mosaico en ArcMap y extraiga la huella.

Eso es lo que yo haría.

4voto

heckj Puntos 3088

Sé que ha pasado un tiempo, pero personalmente creo que reclasificar y convertir la trama en polígono puede ser waaaaay demasiado tiempo. En mi opinión, la forma más fácil de hacerlo es:

Obtener maxX, maxY, minX, minY (esto se puede hacer en Python con el comando describe) Ejecuta Create Fishnet con la extensión anterior y el número de filas/columnas como 1

Si tiene muchos rásteres, esto debe hacerse en Python y puede crear cientos de huellas en cuestión de segundos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X