สร้าง Fishnet จากคลาสคุณลักษณะเทมเพลตโดยใช้ ArcPy?


9

ฉันไม่สามารถใช้เครื่องมือ arcpy.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 ว่ามันสามารถสร้างพารามิเตอร์“ originCoordinate” และ“ yAxisCoordinate” เมื่อมี“ templateExtent” ฉันจะทำให้เครื่องมือนี้ทำงานใน ArcPy ได้อย่างไรโดยมีเพียงพารามิเตอร์“ templateExtent”?

ฉันจะมีความสุขมากถ้าใครมีวิธีแก้ปัญหาเพราะฉันต้องการ Fishnet ใน scripttool และไม่สามารถไปได้โดยไม่ต้องเพราะในท้ายที่สุดมีการวนรอบเพื่อให้ค่าขอบเขตแตกต่างกันเสมอ ส่วนแรกของสคริปต์ทั้งหมด


มีใครรู้บ้างไหมว่าทำไมเราจึงเพิ่ม 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

สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม เมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด ๆ ; แทนที่จะให้คำตอบที่ไม่จำเป็นต้องชี้แจงจากผู้ถาม - จากการทบทวน
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

นี่เป็นวิธีอื่นที่ฉันใช้ในการสร้าง fishnet หลายตัวภายในขอบเขตของแต่ละคุณสมบัติภายในคลาสคุณลักษณะ ตัวแปร 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.