ArcPy kullanarak şablon özellik sınıfından file oluşturma?


9

Arcpy.CreateFishnet_management aracını kullanamıyorum çünkü “templateExtent” parametresini otomatik olarak “originCoordinate” ve “yAxisCoordinate” parametrelerini doldurmuyor.

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

resim açıklamasını buraya girin

ModelBulider'da çalışıyor, bu yüzden ModelBulider'ın arka planında bir "templateExtent" olduğunda "originCoordinate" ve "yAxisCoordinate" parametrelerini oluşturabileceği bir şey çalışıyor. Bu aracın ArcPy'de yalnızca “templateExtent” parametresini kullanarak çalışmasını nasıl sağlayabilirim?

Birisi bir çözüm varsa gerçekten mutlu olurdu çünkü Fishnet bir scripttool gerekir ve olmadan bir gidemem çünkü sonunda bir döngü vardır, bu nedenle kapsam değerleri her zaman farklıdır. tüm senaryonun ilk kısmı


Birisi yukarıdaki çözümün bir kısmına neden 10 eklediğimizi biliyor mu? 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

Bu soruya bir cevap sağlamaz. Yeterli bir üne sahip olduğunuzda , herhangi bir yazı hakkında yorum yapabilirsiniz ; bunun yerine askerden açıklama gerektirmeyen cevaplar verin . - Şu kaynaktan
Dan C

Yanıtlar:


14

işte bir örnek. Sınırlayıcı kutuyu açıklayan bir nesneden çıkarmanız gerekir.

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, amacı nedir + 10içinde str(desc.extent.YMax + 10)?
maycca

iyi soru. Aslında bu durumda gerekli değildir. Dikey bir eksen oluşturmak için Ymin'e keyfi bir değer ekleme alışkanlığım var, ama burada Ymax'ı kullandım, bu yüzden aşırı.
radouxju

4

İşte bir özellik sınıfındaki her özelliğin kapsamı içinde birden fazla balık ağı oluşturmak için kullandığım alternatif bir yaklaşım. Search_extents değişkeni, oluşturmak istediğim her ağın uzantılarını tanımlayan o özellik sınıfının yolunu tanımlar. Fileın dönüşü yoktu.

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

İşte sonunda burada açıklanan sorunu çözmek için (yukarıdaki örneklerden yardım alarak) başarıyla çalıştım kodu:

    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")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.