Je traite 18000 classes d'entités (enregistrées dans un fichier GDB), chacune avec environ 500 enregistrements (entités polygonales) dans les zones océaniques, et j'exécute un script pour supprimer les zones chevauchant la côte, en utilisant la fonction Effacer. Le script s'exécute avec succès, mais prend littéralement des jours. Certains fichiers prennent quelques secondes à traiter (je suppose que cela est dû au fait, que j'ai vérifié, qu'ils ne se chevauchent pas avec le littoral) tandis que certaines classes d'entités prennent plus d'une heure à traiter.
Je travaille localement sur ma machine, exécutant le script dans IDLE, avec ArcGIS 10.1 (toutes les licences) sur un ordinateur Windows 7 32 bits, Intel DuoCore 3,33 GHz, 4 Go de RAM.
J'apprends les cordes avec Python et j'apprécierais vraiment des conseils sur mon script s'il y a des mesures que je peux prendre pour accélérer le temps de traitement. Je vous remercie!
# 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()