¿Crear mallas a partir de la clase de entidad de plantilla usando ArcPy?


9

No puedo usar la herramienta arcpy.CreateFishnet_management porque define el parámetro "templateExtent" con un archivo de forma que no llena automáticamente los parámetros "originCoordinate" y "yAxisCoordinate".

import arcpy
from arcpy import env
env.overwriteOutput = True
env.workspace = r"D:\Users\julia\erste_aufg"

#Process: Create Fishnet
outFeatureClass = r"D:\Users\julia\erste_aufg\at001l_wien\at001l_wien\wien.shp"
cellSizeWidth = '200'
cellSizeHeight = '200'
templateExtent = r"D:\Users\julia\erste_aufg\at001l_wien\at001l_wien\at001l_wien.shp"

arcpy.CreateFishnet_management(outFeatureClass, "", "", cellSizeWidth, cellSizeHeight, '0', '0', "", "NO_LABELS", templateExtent, "POLYGON")

ingrese la descripción de la imagen aquí

Está funcionando en ModelBulider, por lo que se está ejecutando algo en el fondo de ModelBulider que podría crear los parámetros "originCoordinate" y "yAxisCoordinate" cuando tiene un "templateExtent". ¿Cómo puedo hacer que esta herramienta se ejecute en ArcPy teniendo solo el parámetro "templateExtent"?

Sería realmente feliz si alguien tiene una solución porque necesito el Fishnet en una herramienta de escritura y no puedo ir sin ella porque al final hay un bucle, por lo que los valores de la extensión siempre son diferentes. la primera parte del guión completo


¿Alguien sabe por qué agregamos un 10 a la parte de la solución anterior? arcpy.CreateFishnet_management (fc [: - 4] + "_ c200.shp", str (desc.extent.lowerLeft), str (desc.extent.XMin) + "" + str (desc.extent.YMax + 10), " 200 "," 200 "," 0 "," 0 ", str (desc.extent.upperRight)," NO_LABELS "," # "," POLYGON ")
usuario5956986

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente reputación , podrá comentar cualquier publicación ; en su lugar, proporcione respuestas que no requieran una aclaración del autor de la pregunta . - De la opinión
Dan C

Respuestas:


14

Aquí hay un ejemplo. Debe extraer el cuadro delimitador de un objeto de descripción.

desc = arcpy.Describe(fc)
arcpy.CreateFishnet_management(fc[:-4]+"_c200.shp",str(desc.extent.lowerLeft),str(desc.extent.XMin) + " " + str(desc.extent.YMax + 10),"200","200","0","0",str(desc.extent.upperRight),"NO_LABELS","#","POLYGON")

@@ radouxju, ¿cuál es el propósito de + 10en str(desc.extent.YMax + 10)?
maycca

buena pregunta. En realidad no es necesario en este caso. Tengo la costumbre de agregar un valor arbitrario en el Ymin para construir un eje vertical, pero aquí usé Ymax, por lo tanto, es excesivo.
radouxju

4

Aquí hay un enfoque alternativo que usé para crear múltiples redes de pesca dentro de la extensión de cada entidad dentro de una clase de entidad. La variable search_extents define la ruta a esa clase de entidad que define las extensiones de cada red que quería crear. No hubo rotación de la red.

search_extents = "path to extents" 
rows = arcpy.SearchCursor(search_extents)
shapeName = arcpy.Describe(search_extents).shapeFieldName
for row in rows:
    print("Starting Extent" + row.getValue("Extent_Num"))
    feat = row.getValue(shapeName)
    extent = feat.extent
    arcpy.CreateFishnet_management(arcpy.env.workspace + "/extents/extentgrid" + row.getValue("Extent_Num"),str(extent.lowerLeft), str(extent.upperLeft),"0","0","200","200",str(extent.upperRight),"NO_LABELS","#","POLYGON")
    print("Finishing Extent" + row.getValue("Extent_Num"))

1

Aquí está el código que finalmente pude trabajar con éxito (con la ayuda de los ejemplos anteriores) para resolver el problema descrito aquí:

    env.workspace = "C:/Holly/Work/Projects/NavigationStudy2019/Data"

    # Fetch each feature from the cursor and examine the extent properties
    for row in arcpy.da.SearchCursor(feature_class, ['SHAPE@', 'id']):
        extent = row[0].extent
        print('Extent of home range {}:'.format(row[1]))
        print('XMin: {}, YMin: {}'.format(extent.XMin, extent.YMin))
        print('XMax: {}, YMax: {}'.format(extent.XMax, extent.YMax))
        arcpy.CreateFishnet_management("fishnet_temp.shp",
                                       str(extent.XMin) + " " + str(extent.YMax),
                                       str(extent.XMin) + " " + str(extent.YMax + 10),
                                       "100",
                                       "100",
                                       "",
                                       "",
                                       "",
                                       "LABELS",
                                       feature_class,
                                       "POLYGON")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.