Creazione di fishnet dalla classe di caratteristiche del modello usando ArcPy?


9

Non riesco a utilizzare lo strumento arcpy.CreateFishnet_management perché definire il parametro "templateExtent" con uno shapefile non riempie automaticamente i parametri "originCoordinate" e "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")

inserisci qui la descrizione dell'immagine

Funziona in ModelBulider, quindi qualcosa è in esecuzione sullo sfondo di ModelBulider che potrebbe creare i parametri "originCoordinate" e "yAxisCoordinate" quando ha un "templateExtent". Come posso far funzionare questo strumento in ArcPy avendo solo il parametro "templateExtent"?

Sarei davvero felice se qualcuno avesse una soluzione perché ho bisogno di Fishnet in uno scripttool e non posso farne a meno perché alla fine c'è un ciclo quindi i valori dell'estensione sono sempre diversi. la prima parte dell'intera sceneggiatura


Qualcuno sa perché aggiungiamo un 10 alla parte della soluzione sopra? 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

Questo non fornisce una risposta alla domanda. Una volta che hai una reputazione sufficiente , sarai in grado di commentare qualsiasi post ; fornire invece risposte che non richiedono chiarimenti da parte del richiedente . - Dalla recensione
Dan C

Risposte:


14

ecco un esempio. È necessario estrarre il rettangolo di selezione da un oggetto di descrizione.

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, qual è lo scopo di + 10in str(desc.extent.YMax + 10)?
Maycca,

buona domanda. In realtà non necessario in questo caso. Ho l'abitudine di aggiungere un valore arbitrario allo Ymin per costruire un asse verticale, ma qui ho usato Ymax, quindi è eccessivo.
Radouxju,

4

Ecco un approccio alternativo che ho usato per creare più reti da pesca all'interno di ciascuna funzionalità all'interno di una classe di caratteristiche. La variabile search_extents definisce il percorso di quella classe di caratteristiche che definisce le estensioni di ogni rete da pesca che volevo creare. Non c'è stata rotazione della rete.

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

Ecco il codice che ho finalmente funzionato con successo (con l'aiuto degli esempi sopra) per risolvere il problema descritto qui:

    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")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.