Durch das Einfügen temporärer Ebenen in Ihre Modelle wird auch die Verarbeitungszeit verkürzt. Unter dem Gesichtspunkt der Verarbeitung ist das Schreiben in den Speicher wesentlich effizienter als das Schreiben auf die Festplatte. In ähnlicher Weise können Sie temporäre Daten in den Arbeitsbereich in_memory schreiben , was auch rechnerisch effizienter ist.
Viele Vorgänge in ArcGIS erfordern temporäre Ebenen als Eingaben. Zum Beispiel ist " Ebene nach Ort auswählen" (Datenverwaltung) ein sehr leistungsfähiges und praktisches Tool, mit dem Sie Merkmale einer Ebene auswählen können, die räumliche Beziehungen mit einem anderen Auswahlmerkmal teilen. Sie können komplexe Beziehungen wie "HAVE_THEIR_CENTER_IN" oder "BOUNDARY_TOUCHES" usw. angeben.
Bearbeiten:
Betrachten Sie aus Neugier und um die Verarbeitungsunterschiede mithilfe von Feature-Layern und dem Arbeitsbereich in_memory zu erläutern, den folgenden Geschwindigkeitstest, bei dem 39.000 Punkte 100 m gepuffert sind:
import arcpy, time
from arcpy import env
# Set overwrite
arcpy.env.overwriteOutput = 1
# Parameters
input_features = r'C:\temp\39000points.shp'
output_features = r'C:\temp\temp.shp'
###########################
# Method 1 Buffer a feature class and write to disk
StartTime = time.clock()
arcpy.Buffer_analysis(input_features,output_features, "100 Feet")
EndTime = time.clock()
print "Method 1 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)
############################
# Method 2 Buffer a feature class and write in_memory
StartTime = time.clock()
arcpy.Buffer_analysis(input_features, "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 2 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)
############################
# Method 3 Make a feature layer, buffer then write to in_memory
StartTime = time.clock()
arcpy.MakeFeatureLayer_management(input_features, "out_layer")
arcpy.Buffer_analysis("out_layer", "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 3 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)
Wir können sehen, dass die Methoden 2 und 3 äquivalent und ungefähr dreimal schneller als Methode 1 sind. Dies zeigt die Leistungsfähigkeit der Verwendung von Feature-Layern als Zwischenschritte in größeren Workflows.