ArcPy를 사용하여 템플릿 피처 클래스에서 fishnet을 생성 하시겠습니까?


9

arctemp.CreateFishnet_management 도구를 사용할 수 없습니다.“templateExtent”매개 변수를 shapefile로 정의하기 때문에“originCoordinate”및“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")

여기에 이미지 설명을 입력하십시오

ModelBulider에서 작업 중이므로 ModelBulider의 배경에서 무언가가 실행되어 "templateExtent"가있을 때 "originCoordinate"및 "yAxisCoordinate"매개 변수를 작성할 수 있습니다. “templateExtent”매개 변수 만 사용하여 ArcPy에서이 도구를 실행하려면 어떻게해야합니까?

스크립트 툴에 Fishnet이 필요하기 때문에 누군가가 해결책을 가지고 있다면 결국 행복 할 것입니다. 결국 루프가 있기 때문에 범위 값이 항상 다르기 때문에 하나도 갈 수 없습니다. 전체 스크립트의 첫 부분


왜 우리가 위의 솔루션의 일부에 10을 더하는지 알고 있습니까? 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

이것은 질문에 대한 답변을 제공하지 않습니다. 평판 이 충분 하면 모든 게시물댓글 수 있습니다 . 대신 asker의 설명이 필요없는 답변을 제공하십시오 . - 리뷰에서
Dan C

답변:


14

여기 예가 있습니다. 설명 개체에서 경계 상자를 추출해야합니다.

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의 목적은 무엇인가 + 10에가 str(desc.extent.YMax + 10)?
maycca

좋은 질문. 이 경우 실제로 필요하지 않습니다. 수직 축을 만들기 위해 Ymin에 임의의 값을 추가하는 습관이 있지만 여기서는 Ymax를 사용했기 때문에 과잉입니다.
radouxju

4

다음은 피처 클래스 내의 각 피처 범위 내에서 여러 개의 어망을 만드는 데 사용한 대체 방법입니다. search_extents 변수는 생성하려는 각 망의 범위를 정의하는 해당 피쳐 클래스의 경로를 정의합니다. 망사 회전이 없었습니다.

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

여기에 설명 된 문제를 해결하기 위해 마침내 위의 예제의 도움으로 성공적으로 작업 한 코드가 있습니다.

    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")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.