Si usted está familiarizado con secuencias de comandos de python, escribí el siguiente código para este problema exacto que tuve el mes pasado. Puede crear una secuencia de comandos de la herramienta en ArcToolbox para ejecutar la secuencia de comandos. Cuando se Disuelven o Unsplit herramientas de línea tiene numerosos antecedentes, tiende a estancar y choque. Supongo que esto es debido a que "Esta herramienta se utiliza un proceso de ordenamiento en teselas para manejar conjuntos de datos muy grandes para un mejor rendimiento y escalabilidad. Para obtener más detalles, consulte Geoprocesamiento con grandes conjuntos de datos." Lo ESRI dice, no mejora el rendimiento. Me encontré esto en varios shapefiles con más de 400.000 total de registros. La herramienta de disolver corrió por más de 72 horas y aún no ha acabado. Mi script tomó menos de 10 minutos.
Esencialmente, la herramienta se rompe su contornos de elevación en los shapefiles de el mismo valor (es decir, 15 shapefiles de elevaciones 1ft - 15 pies si sus contornos son de 1 ft contornos como el mío). También compensa los valores negativos (tengo sitios cerca de la costa). Las formas son luego combinadas, disuelto, y de varias partes para singlepart saltos de líneas separadas en los registros individuales. Usted puede modificar el dissolve_fields variable y el nombre de campo en todo el código (he marcado los lugares) para atender a sus necesidades. Espero te sirva de ayuda.
# Contour_Merge_And_Dissolve.py
# Import modules
import arcpy
from arcpy import env
# Define functions
def min_max(featureClass, fieldName):
listItems = []
rows = arcpy.SearchCursor(featureClass)
for row in rows:
listItems.append(row.getValue(fieldName))
del rows
listItems.sort()
listMin = listItems[0]
listMax = listItems[-1]
return listMin, listMax
# Arguments
contourList = arcpy.GetParameterAsText(0) #input shapefiles, ElevationContours
outFolder = arcpy.GetParameterAsText(1) #output folder
# set workspace and overwrite option
arcpy.env.workspace = outFolder
arcpy.env.overwriteOutput = True
arcpy.env.outputZFlag = "Disabled"
arcpy.env.outputMFlag = "Disabled"
# local variables
dissolveFields = ["ELEV_FT"] # change field name here
# Process: Merge
arcpy.AddMessage("Merging contours...")
arcpy.Merge_management(contourList, "contour_merge.shp")
# Get Min/Max values of ELEV_FT field
ft_min, ft_max = min_max("contour_merge.shp", "ELEV_FT") # change field name here
ft_range = ft_max - ft_min
arcpy.AddMessage("ELEV_FT MIN: " + str(ft_min))
arcpy.AddMessage("ELEV_FT MAX: " + str(ft_max))
# Set progressor
arcpy.SetProgressor("step", "Breaking apart contours...", 0, ft_range, 1)
arcpy.AddMessage("Breaking apart contours...")
# Break apart and dissolve for each ELEV_FT value
mergeList = []
counter = ft_min
while counter <= ft_max:
arcpy.SetProgressorLabel("Breaking out " + str(counter) + "ft contours...")
arcpy.AddMessage("Attempting " + str(counter) + "ft contours...")
counter_str = str(counter)
counter_str = counter_str.replace("-", "neg")
thisLyr = "elev_" + counter_str + "_lyr"
thisDis = "elev_" + counter_str + "_dissolve.shp"
where_clause = '"ELEV_FT" = ' + str(counter) # change field name here
# Make Layer
arcpy.management.MakeFeatureLayer("contour_merge.shp", thisLyr)
# Select by attributes
arcpy.SelectLayerByAttribute_management(thisLyr, "NEW_SELECTION", where_clause)
# Dissolve Layer to new shape
arcpy.Dissolve_management(thisLyr, thisDis, dissolveFields, "", "SINGLE_PART", "DISSOLVE_LINES")
# Add to mergeList
mergeList.append(thisDis)
counter += 1
arcpy.SetProgressorPosition()
arcpy.ResetProgressor()
# Merge contours
arcpy.AddMessage("Merging dissolved layers...")
arcpy.Merge_management(mergeList, "contour_dissolve.shp")
# Multipart to singlepart
arcpy.AddMessage("Converting multipart to singlepart...")
arcpy.MultipartToSinglepart_management("contour_dissolve.shp", "contour_singlepart.shp")
# Clean up
for shape in mergeList:
arcpy.Delete_management(shape)