ArcPyを使用してテンプレートフィーチャクラスからフィッシュネットを作成しますか?


9

パラメーター「templateExtent」をシェープファイルで定義すると、ツール「pypy.CreateFishnet_management」を使用できません。パラメーター「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でこのツールを実行するにはどうすればよいですか?

誰かが解決策を持っていると本当に嬉しいです。スクリプトツールでフィッシュネットが必要ですが、最終的にループがあり、範囲の値が常に異なるため、解決策がないと解決できません。 スクリプト全体の最初の部分


上記のソリューションの一部に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

これは質問に対する答えを提供しません。十分な評判を得ると、どの投稿にもコメントできるようになります。代わりに、質問者からの説明を必要としない回答を提供してください。- 口コミより
ダン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.