3

複数の空間範囲をループして、4 つの異なるレイヤーの 17 の結合を作成しようとしています。

ArcGIS Desktop 10.0、ArcInfo (高度) を実行しています。

Gridnums = range(1,18)
for i in Gridnums:
    #vis6class = ws + "/" + "TVvis6class_G" + str(i)
    inList = arcpy.ListFeatureClasses("*ProcGrid_"+str(i), "")
    print "inList: " + str(inList)
    arcpy.Union_analysis([InList], ws + "/" + "TVvis6class_G" + str(i))
    print "Union completed for Grid " + str(i)
    arcpy.AddField_management(vis6class, "Object", "TEXT", 10)
    arcpy.AddField_management(vis6class, "Revert", "SHORT")
    rows = arcpy.UpdateCursor(vis6class)
    for row in rows:
        row.Revert = 0
        if row.Road == 1:
            row.Object = Road
            rows.updateRow(row)
        elif row.Water == 1:
            row.Object = Water
            rows.updateRow(row)
        elif row.Building == 1:
            row.Object = Building
            rows.updateRow(row)
        else:
            row.Object = row.Landcover
            rows.updateRow(row)

エラー コード (あまり役に立ちません):

inList: [u'Road_ProcGrid_1', u'FPs_S_ProcGrid_1', u'er_di_ProcGrid_1', u'TV_v_ProcGrid_1']

トレースバック (最後の最後の呼び出し): ファイル "E:\Projects\TV\01_Python\LandCover\LC_2_Vector_Tile_6class_091312.py"、48 行目、arcpy.Union_analysis([InList], ws + "/" + "TVvis6class_G" + str( i)) ファイル "C:\Program Files\ArcGIS\Desktop10.0\arcpy\arcpy\analysis.py"、483 行目、Union raise e RuntimeError: Object: Error in execution tool

これが ArcGIS のプログラミング フォーラムであることは知っていますが、esri フォーラムにも投稿しましたが、多くの意見が寄せられましたが、フィードバックはほとんどありませんでした。特定の範囲の各データセットを手動で選択すると、ツール自体が実行されるため、問題はコーディングにあるはずです。

ご意見ありがとうございます。

リッチ

4

2 に答える 2

2

引用符なしの「inList」ではなく、入力として [InList] があります。

于 2012-10-03T20:13:29.330 に答える
0

ArcGIS オンライン ヘルプによるとUnion_analysis、文字列を渡す場合、この関数には 2 番目の引数としてクラスが必要です。代わりにオブジェクトを渡してみてください。

于 2012-09-17T09:45:00.937 に答える