Ich verarbeite 18.000 Feature-Classes (in einer GDB-Datei gespeichert) mit jeweils ~ 500 Datensätzen (Polygon-Features) in Meeresgebieten und führe mithilfe der Löschfunktion ein Skript zum Entfernen von mit der Küste überlappenden Bereichen aus. Das Skript wird erfolgreich ausgeführt, dauert jedoch buchstäblich Tage. Die Verarbeitung einiger Dateien dauert Sekunden (ich gehe davon aus, dass dies auf die Tatsache zurückzuführen ist, dass sie sich nicht mit der Küstenlinie überschneiden), während die Verarbeitung einiger Feature-Classes über eine Stunde dauert.
Ich arbeite lokal auf meinem Computer und führe das Skript in IDLE mit ArcGIS 10.1 (alle Lizenzen) auf einem 32-Bit-Computer mit Windows 7, 3,33 GHz Intel DuoCore und 4 GB RAM aus.
Ich lerne die Seile mit Python und würde mich sehr über Tipps zu meinem Skript freuen, wenn ich Schritte unternehmen kann, um die Verarbeitungszeit zu verkürzen. Vielen Dank!
# Import modules
import arcpy
import sys
import os
from arcpy import env
arcpy.env.overwriteOutput = True
print arcpy.env.overwriteOutput
#Erase coastline from selected buffers.
workspace = "C:\\DIR\\points_buff\\"
arcpy.env.workspace = workspace
erase_output = workspace+"erased.gdb\\"
erasedirectorypath = "C:\\DIR\\points_buff\\selectedbuff.gdb"
fileList = []
for dirpath, dirnames, erases in arcpy.da.Walk(erasedirectorypath,
datatype="FeatureClass",
type="Polygon"):
for erase in erases:
fileList.append(os.path.join(dirpath, erase))
filenameparts = erase.split('_')
if int(filenameparts[1]) > int(1967):
try:
#Set variables for Erase tool
in_features = erasedirectorypath+"\\"+erase
coastline_feat = "C:\\DIR\\Basic_NE.gdb\\Coastline_Eastern_US"
out_erase_feat = erase_output+erase[:-4]+"_er"
arcpy.Erase_analysis(in_features, coastline_feat, out_erase_feat, '')
print arcpy.GetMessages()
print "Coastline has been erased from " + erase + " and saved to " + erase_output
except:
print arcpy.GetMessages()
quelle
Minimum Bounding Geometry
Ihre Ziel-Feature-Class mit GruppenoptionALL
und Geometrietyp ausENVELOPE
. Führen Sie eine Löschung der resultierenden Hüllkurven-Feature-Class anhand Ihrer riesigen Küste durch. Verwenden Sie diese Ausgabe aus dieser Löschung, um eineClip
für Ihre ursprüngliche Ziel-Feature-Class durchzuführen. Dies vereinfacht den komplexen Schritt, das Löschen, und ersetzt ihn durch einen kostengünstigeren Clip gegen ein kleineres Feature.