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()
la source
Minimum Bounding Geometry
sur votre classe d'entités cible à l'aide de l'option de groupeALL
et du type de géométrieENVELOPE
. Effacez la classe d'entités enveloppes résultante à l'aide de votre immense littoral. Utilisez cette sortie de cet effacement pour effectuer uneClip
sur votre classe d'entités cible d'origine. Cela simplifie l'étape complexe, l'effacement et le remplace par un clip moins coûteux par rapport à une fonctionnalité plus petite.