Ist Clip (Datenverwaltung) oder Nach Maske extrahieren (Spatial Analyst) effizienter?

12

Ich versuche, ein Orthofoto an einer Kreisgrenze zu befestigen. Ich habe das Extract By Mask Tool verwendet, aber dieser Vorgang wurde ungefähr 12 Stunden lang ausgeführt! Es hat bereits 2 Zyklen durchlaufen, also gehe ich davon aus, dass dies jede Band ist. Kann mich jemand korrigieren, wenn ich mich irre?

Wäre der Clip in der Datenverwaltung besser (schneller)? Wie wäre die Genauigkeit?

Ich habe immer versucht, Extract By Mask zu verwenden, aber das dauert zu lange.

user26133
quelle
Ich habe immer eher das Ausschneiden als das Extrahieren nach Maske vorgenommen, um ein Raster an die Kontur eines Polygons anzupassen, und es ist ziemlich schnell (Minuten, nicht Stunden). Können Sie klarstellen, was Sie unter "Genauigkeit" des Ergebnisses verstehen?
Erica
Ich habe das Clip-Tool einmal in der Datenverwaltung verwendet, aber es war ein Niederschlagsraster, das für einen viel größeren Bereich gedacht war, mit dem ich gearbeitet habe. Es war für eine Schulaufgabe, und sie erwähnten, dass es nicht gut ausgehen würde.
user26133
Nach meinem besten Wissen ändert Clip nicht den Inhalt der Rasterwerte (und auch nicht das Extrahieren nach Maske), sodass sie sich möglicherweise einfach darauf bezogen haben, dass die Analysewerte aufgrund des zu analysierenden kleineren räumlichen Bereichs ungenau sind, und nicht auf den Clip Prozess, der sich auf die Daten auswirkt. Das wäre für ein Orthophoto kein Problem, es sei denn, Sie verwenden es für die Analyse und nicht für den Hintergrund.
Erica
2
Der Clip erzeugt nur einen rechteckigen Bereich (Umschlag). Durch Extrahieren mit der Maske wird jedoch ein unregelmäßiges / mehrteiliges / ringförmiges Polygon erzeugt. Wenn Sie möchten, dass nur die Daten in einer Ausdehnung den Clip verwenden, ist dies viel schneller. Wenn Sie jedoch auf eine unregelmäßige Form zuschneiden müssen, verwenden Sie die Option Mit Maske extrahieren.
Michael Stimson
4
Tatsächlich kann der Clip auch unregelmäßige Formen haben. Wenn Sie die Polygone in der SHP-Datei auswählen, in die Sie das Raster schneiden möchten, und dann das Kontrollkästchen "Eingabe-Features zum Schneiden von Geometrie verwenden" aktivieren, wird die Polygonform und nicht die rechteckige Ausdehnung der gesamten SHP-Datei angezeigt.
ecologist1234

Antworten:

19

Ich habe einen Test durchgeführt, um festzustellen, wie sich die Geschwindigkeit und die Qualität der beiden Methoden unterscheiden. Hier sind die Ergebnisse:

Eingabedaten

  1. 4-Band-NAIP-DOQQ-Bild im .img-Format (349,34 MB)
  2. Eine Feature-Class, die als Maske / Clipper verwendet wird

Bildbeschreibung hier eingeben

Performance

Drei Versuche wurden durchgeführt und bewertet. Die Methode "Clip" (Datenverwaltung) ist erheblich schneller als die Methode "Nach Maske extrahieren" (Spatial Analyst).

Bildbeschreibung hier eingeben

Qualität

Beide Bereiche waren identisch, ebenso wie die NoData-Werte. Eine visuelle Beurteilung ergab jedoch, dass die Pixelanordnung durch das Maskenextraktverfahren leicht verändert wurde - wahrscheinlich das Ergebnis einer Art von Resampling. Die Pixelanordnung bei der Clip-Operation war identisch mit dem ursprünglichen Eingabebild.


# 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
quelle
1
Gute Antwort! Ich behaupte nicht, ein erfahrener Statistiker zu sein, aber ich habe in Minitab herumgespielt, also habe ich Ihre Zeitangaben einem 2-Stichproben-T-Test unterzogen und ich weiß, dass die Stichprobengröße etwas klein ist, aber es war ein bedeutender Unterschied. ;)
Hornbydd
3
Wenn die Methode zum Extrahieren nach Maske das Original in irgendeiner Weise geändert hat, wie Sie berichtet haben, wurde es wahrscheinlich nicht mit einer geeigneten Maske ausgeführt, dh einer, die genau mit dem ursprünglichen Raster ausgerichtet war. Das hätte die Neuabtastung des Originals erzwungen, was den zusätzlichen Rechenaufwand ausmachen würde - aber auch darauf hindeutet, dass Ihre Timing-Vergleiche keine faire Einschätzung der Situation sind. In der Tat beginnt der Ausschneidevorgang höchstwahrscheinlich mit dem Erstellen einer Maske und dem anschließenden Anwenden, sodass zu erwarten ist, dass das Ausschneiden ein wenig weniger effizient ist als das Extrahieren mit einer Maske allein.
whuber
1
Ich hoffe du wirst deinen Beitrag nicht dauerhaft löschen, Aaron: er enthält nützliche Informationen. Wenn Sie es aktualisieren könnten, um das Timing für eine genau registrierte Maske einzuschließen, wäre dies im Idealfall eine beispielhafte Antwort. (Wer weiß, dieses Ergebnis könnte auch meine Spekulationen widerlegen!)
whuber