Fischnetz aus Vorlagen-Feature-Class mit ArcPy erstellen?

9

Ich kann das Tool arcpy.CreateFishnet_management nicht verwenden, da der Parameter "templateExtent" mit einem Shapefile definiert wird und die Parameter "originCoordinate" und "yAxisCoordinate" nicht automatisch gefüllt werden.

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")

Geben Sie hier die Bildbeschreibung ein

Es funktioniert im ModelBulider, daher wird im Hintergrund des ModelBulider etwas ausgeführt, das die Parameter "originCoordinate" und "yAxisCoordinate" erstellen kann, wenn es einen "templateExtent" hat. Wie kann ich dieses Tool in ArcPy ausführen, indem ich nur den Parameter "templateExtent" habe?

Ich würde mich sehr freuen, wenn jemand eine Lösung hat, weil ich das Fischnetz in einem Skriptwerkzeug brauche und nicht darauf verzichten kann, weil es am Ende eine Schleife gibt, sodass die Werte des Ausmaßes immer unterschiedlich sind. der erste Teil des gesamten Skripts

Nora
quelle
Weiß jemand, warum wir dem obigen Teil der Lösung eine 10 hinzufügen? 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 ")
user5956986
Dies gibt keine Antwort auf die Frage. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren . Geben Sie stattdessen Antworten, die nicht vom Fragesteller geklärt werden müssen . - Aus dem Rückblick
Dan C

Antworten:

14

Hier ist ein Beispiel. Sie müssen den Begrenzungsrahmen aus einem Beschreibungsobjekt extrahieren.

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
quelle
@@ radouxju, was ist der Zweck von + 10in str(desc.extent.YMax + 10)?
Maycca
gute Frage. Eigentlich nicht nötig in diesem Fall. Ich habe die Angewohnheit, dem Ymin einen beliebigen Wert hinzuzufügen, um eine vertikale Achse zu erstellen, aber hier habe ich Ymax verwendet, daher ist es übertrieben.
Radouxju
4

Hier ist ein alternativer Ansatz, mit dem ich mehrere Fischnetze innerhalb der Ausdehnung jedes Features innerhalb einer Feature-Class erstellt habe. Die Variable search_extents definiert den Pfad zu dieser Feature-Class und definiert die Ausdehnung jedes Fischnetzes, das ich erstellen wollte. Es gab keine Drehung des Fischnetzes.

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"))
GForce
quelle
1

Hier ist der Code, mit dem ich endlich erfolgreich gearbeitet habe (mithilfe der obigen Beispiele), um das hier beschriebene Problem zu lösen:

    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")
Holly Copeland
quelle