Tạo fishnet từ lớp tính năng mẫu bằng ArcPy?


9

Tôi không thể sử dụng công cụ arcpy.CreateFishnet_man quản lý vì xác định tham số bản mẫuMexExentent với một shapefile, nó không tự động điền các tham số vào nguồn gốc và điều khoản của yAxisCoordine.

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

nhập mô tả hình ảnh ở đây

Nó đang hoạt động trong ModelBulider, do đó, một cái gì đó đang chạy trong nền của ModelBulider rằng nó có thể tạo ra các tham số. Origin originCoordine và và yAxisCoordine, khi nó có một mẫuExExentent. Làm cách nào tôi có thể chạy công cụ này trong ArcPy bằng cách chỉ có tham số mẫu templateExtent '?

Tôi sẽ thực sự hạnh phúc nếu ai đó có giải pháp vì tôi cần Fishnet trong scripttool và không thể đi mà không có vì cuối cùng có một vòng lặp nên các giá trị của phạm vi luôn khác nhau. phần đầu tiên của toàn bộ kịch bản


Có ai biết tại sao chúng ta thêm 10 vào một phần của giải pháp trên không? arcpy.CreateFishnet_man quản lý (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 27/07/18

Điều này không cung cấp một câu trả lời cho câu hỏi. Một khi bạn có đủ danh tiếng, bạn sẽ có thể nhận xét về bất kỳ bài đăng nào ; thay vào đó, cung cấp câu trả lời không yêu cầu làm rõ từ người hỏi . - Từ đánh giá
Dan C

Câu trả lời:


14

đây là một ví dụ. Bạn cần trích xuất hộp giới hạn từ một đối tượng mô tả.

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, mục đích của là những gì + 10trong str(desc.extent.YMax + 10)?
maycca

câu hỏi hay. Thực tế không cần thiết trong trường hợp này. Tôi đã có thói quen thêm một giá trị tùy ý vào Ymin để xây dựng trục dọc, nhưng ở đây tôi đã sử dụng Ymax, do đó nó quá mức cần thiết.
radouxju

4

Đây là một cách tiếp cận thay thế mà tôi đã sử dụng để tạo nhiều fishnets trong phạm vi của từng tính năng trong một lớp tính năng. Biến search_extents xác định đường dẫn đến lớp tính năng đó xác định phạm vi của mỗi fishnet mà tôi muốn tạo. Không có vòng quay của fishnet.

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

Đây là đoạn mã cuối cùng tôi đã làm việc thành công (với sự trợ giúp từ các ví dụ trên) để giải quyết vấn đề được mô tả ở đây:

    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")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.