6 votos

Que es el proceso más eficiente en ModelBuilder - Merge/Disolver o Unión/Disolver?

Estoy creando un modelo que combina cuatro archivos muy grandes y los disuelve. Por el momento, mi flujo de trabajo utiliza la herramienta de Combinación y, a continuación, la herramienta de Disolver. Sin embargo, me preguntaba si mediante la Unión de la herramienta y, a continuación, la disolución será más o menos eficiente. No tengo necesidad de mantener los atributos para mis propósitos. Sólo necesito para crear una capa que contiene la geometría. Las clases de entidad pueden superponerse unos a otros, y que también puede contener solapamientos en sí mismos. Como el resultado final es el mismo, ¿alguien sabe que proceso sería más eficiente del tiempo?

A continuación se muestran imágenes de mi trabajo:

De mezcla, a continuación, Disolver:

enter image description here

De la unión, a continuación, Disolver:

enter image description here

9voto

UnkwnTech Puntos 21942

Esta es una forma muy simplista de la prueba, pero creo que muestra de manera concluyente que Merge+Dissolve es aproximadamente 3 veces más rápido que Union+Dissolve en este conjunto de datos, y creo que lo más complejo de los datos se produce en él, la diferencia sólo ampliar.

import arcpy,time

if arcpy.Exists("C:/temp/test.gdb"):
    arcpy.Delete_management("C:/temp/test.gdb")

arcpy.CreateFileGDB_management("C:/temp","test.gdb")
arcpy.CreateFishnet_management("C:/temp/test.gdb/fishnet1","10 10","10 20","1","1","50","50","#","LABELS","0 0 75 75","POLYLINE")
arcpy.Buffer_analysis("C:/temp/test.gdb/fishnet1_label","C:/temp/test.gdb/fishnet1circles","0.51 Unknown","FULL","ROUND","NONE","#")
arcpy.CreateFishnet_management("C:/temp/test.gdb/fishnet2","10.1 10.1","10.1 20","1","1","50","50","#","LABELS","0 0 75 75","POLYLINE")
arcpy.Buffer_analysis("C:/temp/test.gdb/fishnet2_label","C:/temp/test.gdb/fishnet2circles","0.51 Unknown","FULL","ROUND","NONE","#")

start = time.clock()
arcpy.Merge_management("C:/temp/test.gdb/fishnet1circles;C:/temp/test.gdb/fishnet2circles","C:/temp/test.gdb/fishnetMerge","#")
elapsed = (time.clock() - start)
print("Merge took " + str(elapsed) + " seconds")
arcpy.Dissolve_management("C:/temp/test.gdb/fishnetMerge","C:/temp/test.gdb/fishnetMergeDissolve","#","#","MULTI_PART","DISSOLVE_LINES")
elapsed = (time.clock() - start)
print("Merge and Dissolve took " + str(elapsed) + " seconds")

start = time.clock()
arcpy.Union_analysis("C:/temp/test.gdb/fishnet1circles #;C:/temp/test.gdb/fishnet2circles #","C:/temp/test.gdb/fishnetUnion","ONLY_FID","#","GAPS")
elapsed = (time.clock() - start)
print("Union took " + str(elapsed) + " seconds")
arcpy.Dissolve_management("C:/temp/test.gdb/fishnetUnion","C:/temp/test.gdb/fishnetUnionDissolve","#","#","MULTI_PART","DISSOLVE_LINES")
elapsed = (time.clock() - start)
print("Union and Dissolve took " + str(elapsed) + " seconds")

Corrí la prueba de INACTIVIDAD utilizando ArcGIS for Desktop 10.1 SP1 y Python 2.7.2 en Windows 7 SP1 y los resultados fueron:

>>> 
Merge took 1.82999991257 seconds
Merge and Dissolve took 5.45186011302 seconds
Union took 7.6488681498 seconds
Union and Dissolve took 14.1194398165 seconds
>>>

Como usted sugiere el Disolver después de que la Unión era un poco más rápido que el de Disolver después de la Combinación, pero no suficiente para superar la gran brecha entre la Mezcla y de la Unión.

4voto

Anthony Cramp Puntos 126

Merge es definitivamente más rápido que el de la Unión. PolyGeo ya ha dado una prueba, así que no voy a hablar de eso.

Lo que voy a tratar de explicar la razón detrás de la Combinación de ser más rápido.

Cuando se ejecuta una Operación Union, la geometría de las funciones que se utilizan para la Unión de la Operación. Dependiendo de la naturaleza Topológica, las nuevas características son generados. Los atributos también se combinan de todas las entidades de entrada. Más que encontrar la superposición de funciones y llevar a cabo esta operación union en ellos es a través de Algoritmos bastante CPU.

En comparación con esto, el proceso de Mezcla es una simple colección de todas las características. No hay superposición de verificación que se hace, no de la unión de esas geometrías está hecho. Por lo tanto, en todos los casos, Combinar siempre ha sido mucho más rápido que el de la Unión.

Llegando a la combinación de la Mezcla+Disolver v/s Unión+Disolver:

  • En la herramienta de Disolver, lo que pasa es que las geometrías de todas las características que tiene el mismo valor de un atributo, se unen, y luego simplificado.
  • La salida de la anterior herramienta de Combinación no puede ser planerlized (he.e sin superposiciones) El resultado del anterior proceso de Unión es plana, es decir, que se garantice que no habrá superposición de polígonos.
  • Por tanto, la Simplificación de la unión de la operación dentro de la herramienta de Disolver puede ser más rápido que en comparación con el resultado de la Combinación de la herramienta.

Sin embargo, con datos de gran tamaño, la mayor parte del tiempo se puede tomar con la primera Unión gp proceso, y por lo tanto el ahorro de tiempo en el Disolver gp operación pálido en comparación.

0voto

user20040 Puntos 11

si la combinación de correspondencia/disolver toma más de un par de minutos, usted puede acelerar el proceso mediante la eliminación de la entrada de índice espacial y, a continuación, el procesamiento de la mezcla/disolver. (la salida resultante shapefile va a tener un índice espacial)

usted puede hacer esto de forma manual en el catálogo (shapefile propiedades > pestaña índices > borrar; el uso de agregar a recrear el índice espacial) o con python: arcpy.RemoveSpatialIndex_management() y crearlo de nuevo si es necesario: arcpy.AddSpatialIndex_management()

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X