Czy tworzysz kabaretkę z klasy elementów szablonu za pomocą ArcPy?

9

Nie mogę użyć narzędzia arcpy.CreateFishnet_management, ponieważ zdefiniuj parametr „templateExtent” za pomocą pliku kształtu, który nie wypełnia automatycznie parametrów „originCoordinate” i „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")

wprowadź opis zdjęcia tutaj

Działa w ModelBulider, więc coś działa w tle ModelBulider, że może tworzyć parametry „originCoordinate” i „yAxisCoordinate”, gdy ma „templateExtent”. Jak mogę uruchomić to narzędzie w ArcPy, mając tylko parametr „templateExtent”?

Byłbym bardzo szczęśliwy, gdyby ktoś miał rozwiązanie, ponieważ potrzebuję kabaretki w narzędziu skryptowym i nie mogę przejść bez niej, ponieważ w końcu istnieje pętla, więc wartości zasięgu są zawsze różne. pierwsza część całego skryptu

Nora
źródło
Czy ktoś wie, dlaczego dodajemy 10 do powyższej części rozwiązania? 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 ”)
5956986
To nie daje odpowiedzi na pytanie. Gdy zdobędziesz wystarczającą reputację , będziesz mógł komentować dowolny post ; zamiast tego podaj odpowiedzi, które nie wymagają wyjaśnienia od pytającego . - Z recenzji
Dan C

Odpowiedzi:

14

Oto przykład. Musisz wyodrębnić obwiednię z obiektu opisu.

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
źródło
@@ radouxju, co jest celem + 10w str(desc.extent.YMax + 10)?
maycca
dobre pytanie. Właściwie nie jest to konieczne w tym przypadku. Mam w zwyczaju dodawać Ymin dowolną wartość do budowy osi pionowej, ale tutaj użyłem Ymax, dlatego jest to przesada.
radouxju
4

Oto alternatywne podejście, którego użyłem do stworzenia wielu sieci rybnych w zakresie każdej funkcji w klasie obiektów. Zmienna search_extents definiuje ścieżkę do tej klasy obiektów, określając zakres każdej sieci, którą chciałem utworzyć. Kabina nie była obracana.

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"))
Załoga G
źródło
1

Oto kod, który w końcu udało mi się skutecznie (z pomocą powyższych przykładów) rozwiązać problem opisany tutaj:

    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
źródło