¿Es Clip (gestión de datos) o Extraer por máscara (Spatial Analyst) más eficiente?

12

Estoy tratando de recortar una ortofoto a un límite del condado. He estado usando la herramienta Extraer por máscara, ¡pero este proceso se ha estado ejecutando durante aproximadamente 12 horas! Ya pasó por 2 ciclos, así que supongo que esta es cada banda. ¿Alguien puede corregirme si me equivoco en eso?

¿El Clip en la gestión de datos funcionaría mejor (más rápido)? ¿Cómo sería la precisión?

Siempre he tratado de usar Extract By Mask, pero esto lleva demasiado tiempo.

usuario26133
fuente
Siempre he recortado en lugar de extraer por máscara para recortar un ráster al contorno de un polígono, y es bastante rápido (minutos, no horas). ¿Puedes aclarar qué quieres decir con "precisión" del resultado?
Erica
Una vez utilicé la herramienta Clip en la gestión de datos, pero era un ráster de precipitación que debía usarse en un área mucho más grande con la que estaba trabajando. Fue para una tarea escolar, y mencionaron que no saldría bien.
user26133
Que yo sepa, Clip no cambia el contenido del valor ráster (ni Extract By Mask), por lo que simplemente se han estado refiriendo a que los valores de análisis son inexactos debido al área espacial más pequeña que se analiza, en lugar del clip proceso que afecta los datos. Eso no sería un problema para una ortofoto a menos que la esté utilizando para análisis en lugar de fondo.
Erica
2
El clip solo hace un área rectangular (sobre), sin embargo, extraer por máscara extraerá un polígono irregular / multiparte / donut. Si solo desea que los datos en una extensión usen un clip, es mucho más rápido, pero si necesita recortar a una forma irregular, use extraer por máscara.
Michael Stimson
44
En realidad, el clip también puede hacer formas irregulares. Si selecciona los polígonos en el archivo shp en el que desea recortar el ráster y luego marca la casilla "Usar entidades de entrada para recorte de geometría", obtendrá la forma del polígono, no la extensión rectangular de todo el archivo shp.
ecologista1234

Respuestas:

19

Ejecuté una prueba para determinar cómo la velocidad y la calidad difieren entre los dos métodos, aquí están los resultados:

Los datos de entrada

  1. Imagen NAIP DOQQ de 4 bandas en formato .img (349.34MB)
  2. Una clase de entidad utilizada como máscara / clipper

ingrese la descripción de la imagen aquí

Actuación

Se realizaron tres ensayos y se compararon. El método Clip (gestión de datos) es significativamente más rápido que el método Extract by Mask (Spatial Analyst).

ingrese la descripción de la imagen aquí

Calidad

Ambas extensiones fueron idénticas al igual que los valores NoData. Sin embargo, una evaluación visual mostró que el extracto por el método de máscara alteró ligeramente la disposición de píxeles, probablemente el resultado de algún tipo de remuestreo. La disposición de píxeles en la operación de recorte fue idéntica a la imagen de entrada original.


# Import system modules
import arcpy, time, os
from arcpy import env
from arcpy.sa import *

env.overwriteOutput = 1

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set local variables
inRaster = r'C:\temp\naip2011.img'
inMaskData = r'C:\temp\fgdb.gdb\clipper'
outws = r'C:\temp'
out1 = os.path.join(outws, 'extractbymask.img')
out2 = os.path.join(outws, 'clip.img')

#############TRIAL 1: EXTRACT BY MASK#########################################
start = time.clock()

# ExtractByMask
outExtractByMask = ExtractByMask(inRaster, inMaskData)

# Save the output
outExtractByMask.save(out1)

end = time.clock()
total = end - start

print "The extract by mask method took:  %s seconds" % round(total, 3)

###############TRIAL 2: CLIP#################################################
start = time.clock()

# Clip
arcpy.Clip_management(inRaster, "#", out2, inMaskData, "", "ClippingGeometry")

end = time.clock()
total = end - start

print "The clip method took:             %s seconds" % round(total, 3)
Aaron
fuente
1
¡Gran respuesta! No pretendo ser un experto en estadística, pero estaba jugando en minitab, así que puse sus tiempos en una prueba t de 2 muestras y sé que el tamaño de la muestra es un poco pequeño, pero fue una diferencia significativa. ;)
Hornbydd
3
Si el método de extracción por máscara alteró el original de alguna manera, como informa, probablemente no se realizó con una máscara adecuada: es decir, una que estuviera exactamente alineada con el ráster original. Eso habría obligado a volver a muestrear el original, lo que explicaría la carga computacional adicional, pero también sugiere que sus comparaciones de tiempo no son una evaluación justa de la situación. De hecho, el procedimiento de recorte probablemente comienza creando una máscara y luego aplicándola, por lo que uno esperaría que el recorte sea un poco menos eficiente que una extracción por máscara sola.
whuber
1
Espero que no mantengas tu contribución eliminada permanentemente, Aaron: contiene información útil. Idealmente, si pudiera actualizarlo para incluir el tiempo para una máscara registrada con precisión, sería una respuesta ejemplar. (¿Quién sabe, ese resultado podría refutar mis especulaciones, también!)
whuber