Estoy procesando 18,000 clases de entidad (guardadas en un archivo GDB), cada una con ~ 500 registros (entidades de polígono) en áreas oceánicas, y estoy ejecutando un script para eliminar el área que se superpone con la costa, usando la función Borrar. El script se ejecuta con éxito, pero literalmente tarda días en completarse. Algunos archivos tardan segundos en procesarse (supongo que esto se debe al hecho, que he verificado, de que no se superponen con la costa), mientras que algunas clases de entidad tardan más de una hora en procesarse.
Estoy trabajando localmente en mi máquina, ejecutando el script en IDLE, con ArcGIS 10.1 (todas las licencias) en una computadora con Windows 7 de 32 bits, Intel DuoCore de 3.33 GHz, 4 GB de RAM.
Estoy aprendiendo las cuerdas con Python y realmente agradecería consejos sobre mi script si hay pasos que puedo seguir para acelerar el tiempo de procesamiento. ¡Gracias!
# 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()
fuente
Minimum Bounding Geometry
en su clase de entidad de destino utilizando la Opción de grupoALL
y el tipo de geometríaENVELOPE
. Realice un borrado en la clase de entidad de envolvente resultante utilizando su enorme línea costera. Use esa salida de ese borrado para hacer unClip
en su clase de entidad de destino original. Esto simplifica el paso complejo, el borrado y lo sustituye por un Clip menos costoso en lugar de una característica más pequeña.