5 votos

¿Cómo hacer intersección con ModelBuilder iteración?

Pic of ModelMe gustaría participar en la intersección de las dos zonas (una generados al azar), y ello a n veces. Que puedo hacer y obtener un resultado, pero no puedo guardar todas las áreas de intersección de un archivo al final.

El problema es que cuando ejecuto mi modelo más de una vez me dice que mi búfer de archivo de salida ya existe, lo que yo puedo imaginar que iba a pasar de nuevo por la intersección. Lo que me gustaría pasar es que al ejecutar mi modelo donde puedo producir nuevos puntos al azar cada vez que, luego de búfer de ellos y cruzan la disolución tampón con otra área y, a continuación, salir de la zona. Entonces yo quiero hacer esto varias veces.

Si no está redactado muy bien, a continuación, sólo házmelo saber y te puedo explicar lo que quiero decir de otra manera. Muchas gracias

4voto

ParoX Puntos 773

En el modelo del generador, para evitar que se sobrescribe con los iteradores, usted tiene que utilizar en línea de las variables. Ver ESRI ayuda:

http://resources.arcgis.com/en/help/main/10.1/index.html#//002w0000005w000000

Para su caso de uso en particular, ejemplo 2 explicar lo que tienes que hacer:

Cuando el iterador Recorrer en Clases de entidad se ejecuta, crea una salida variable para la ruta de acceso y el nombre de la clase de entidad. El valor en el Nombre de la variable puede ser utilizada para construir la ruta de acceso a la proyectada clase de entidad. Cuando se ejecuta la herramienta, %Nombre% se sustituye por el nombre de la clase de entidad.

Iterator output as inline variable

1voto

Roy Puntos 2884

Dos adiciones deben hacer este trabajo asumiendo entiendo lo que usted está buscando para hacer aquí.

Configuración de la sobrescritura de la variable de entorno a la verdadera voluntad de omitir errores donde el conjunto de datos ya existe. Ya que sólo necesita puntos al azar dentro del bucle que puede deshacerse de ellos después de cada iteración.

Segundo, si se establece un bucle, puede anexar el contador para el nombre de archivo cuando se ejecuta el intersect. Esto va a guardar todos tus archivos en lugar de que se sobrescriban. Si prefieres tener nombres más descriptivos se podría crear una lista de python (ejemplo abajo), y añadir un elemento de la lista para el nombre de archivo en cada iteración.

# example of a python list
list = ["filename1", "filename2", "filename3"]

Para tener acceso al elemento en una lista, utilice el contador del bucle.

# While the counter is less than the length of the list (we start counting from 0 instead of 1) print the list item
i = 0
while i < len(list):
    print list[i]
    i += 1

Ejemplo de código:

# Import arcpy module
import arcpy
arcpy.env.overwriteOutput = True

# Local variables:
Python_Intersect_prac = "D:\\Python_Intersect_prac"
Plume_dissolve1 = "Plume_dissolve1"
Random_Hs_shp = "D:\\Python_Intersect_prac\\Random_Hs.shp"
Random_Hs_b_shp = "C:\\Users\\c1022376\\My Documents\\Random_Hs_b.shp"
Random_Hs_b_Intersect = "C:\\Users\\c1022376\\My Documents\\ArcGIS\\Default1.gdb\\Random_Hs_b_Intersect"

# Initialize counter
i = 0

# How many times would you like to loop? (integer)
j = 5 # this will run 5 times

# the following code will iterate j times
while i < j:
    # Process: Create Random Points
    arcpy.CreateRandomPoints_management(Python_Intersect_prac, "Random_Hs", "", "-180 -90 180 90", "35", "0 Unknown", "POINT", "0")

    # Process: Buffer
    arcpy.Buffer_analysis(Random_Hs_shp, Random_Hs_b_shp, "4 DecimalDegrees", "FULL", "ROUND", "ALL", "")

    # Process: Intersect
    arcpy.Intersect_analysis("'C:\\Users\\c1022376\\My Documents\\Random_Hs_b" + i + ".shp' #;Plume_dissolve1 #", Random_Hs_b_Intersect, "ALL", "", "INPUT")

    # Iterate the counter
    i += 1

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