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()