Membuat jala dari kelas fitur templat menggunakan ArcPy?


9

Saya tidak dapat menggunakan alat arcpy.CreateFishnet_management karena mendefinisikan parameter "templateExtent" dengan sebuah shapefile itu tidak mengisi secara otomatis parameter "originCoordinate" dan "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")

masukkan deskripsi gambar di sini

Ini berfungsi di ModelBulider, jadi ada sesuatu yang berjalan di latar belakang ModelBulider sehingga dapat membuat parameter "originCoordinate" dan "yAxisCoordinate" ketika memiliki "templateExtent". Bagaimana saya bisa menjalankan alat ini di ArcPy dengan hanya memiliki parameter "templateExtent"?

Saya akan sangat senang jika seseorang memiliki solusi karena saya memerlukan Fishnet di sebuah scripttool dan tidak dapat pergi tanpa karena pada akhirnya ada satu lingkaran sehingga nilai-nilai sejauh ini selalu berbeda. bagian pertama dari keseluruhan naskah


Adakah yang tahu mengapa kita menambahkan 10 pada bagian dari solusi di atas? 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

Ini tidak memberikan jawaban untuk pertanyaan itu. Setelah Anda memiliki reputasi yang cukup, Anda akan dapat mengomentari setiap pos ; alih-alih, berikan jawaban yang tidak memerlukan klarifikasi dari penanya . - Dari Ulasan
Dan C

Jawaban:


14

di sini adalah sebuah contoh. Anda perlu mengekstrak kotak pembatas dari objek yang dijelaskan.

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, apa tujuan dari + 10di str(desc.extent.YMax + 10)?
maycca

Pertanyaan bagus. Sebenarnya tidak perlu dalam hal ini. Saya punya kebiasaan untuk menambahkan nilai sewenang-wenang pada Ymin untuk membangun sumbu vertikal, tetapi di sini saya menggunakan Ymax, oleh karena itu berlebihan.
radouxju

4

Berikut adalah pendekatan alternatif yang saya gunakan untuk membuat banyak fishnets dalam luasan setiap fitur dalam kelas fitur. Variabel search_extents mendefinisikan path ke kelas fitur yang mendefinisikan luasan setiap fishnet yang ingin saya buat. Tidak ada rotasi jala.

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

Inilah kode yang akhirnya berhasil saya kerjakan (dengan bantuan dari contoh di atas) untuk menyelesaikan masalah yang dijelaskan di sini:

    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")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.