2

まず、私は Python の初心者です。現在、ArcGIS 環境で Python を扱っているクラスを受講する。私の現在のプロジェクトは、ファイルを作成し、他のファイルをそれらにコピーする単純なプログラムです。ただし、割り当ての一部は、印刷ステートメントに何が起こっているかを示すことです。たとえば、最終的な印刷ステートメントは次のようになります。

ポリゴン フィーチャクラスを処理しています....

FeatureClass の処理 >> 建物

フィールド情報:

 etc.

これを行う必要がある私のコードの一部を次に示します。

pointlist = arcpy.ListFeatureClasses("*", "Point")
print "Processing Point FeatureClasses..."
for pl in pointlist:
    arcpy.MakeFeatureLayer_management(pl, "Point" + 1)
    pointlayer = arcpy.SelectLayerByLocation_management(pl, "intersect", MapGridID)
    pointcount = int(arcpy.GetCount_management(pointlayer).getOutput(0))
    if pointcount >= 1:
        arcpy.CopyFeatures_management(pointlayer, OutputGDB)
    for pl in pointlist:
        print "Processing FeatureClass:" + pl
        pointfield = arcpy.ListFields()
        for pf in pointfield:
            print "Field Name:" + pf

最初の印刷ステートメント「Processing Point FeatureClasses」を出力するが、残りは実行せず、コードの次の部分にスキップしてそれを実行するという問題が発生します。理由はありますか?フォーマットや言葉遣いが間違っていたり、奇妙に聞こえる場合は申し訳ありません。ありがとうございました。

編集

私は教授にもメールを送り、いくつかのガイダンスを求めました。彼は上記のコード ブロックを少し編集したバージョンを返信してくれました。ポイントフィールドの印刷ステートメントを除いて、すべてを印刷できるようになりました。これらはスキップされるようになりました。コードは次のとおりです。

pointlist = arcpy.ListFeatureClasses("*", "Point")
print "Processing Point FeatureClasses...\n"
i = 1
for pl in pointlist:
    print "Processing FeatureClass: " + pl
    featlayernamepoint = "Point" + str(i)
    arcpy.MakeFeatureLayer_management(pl, featlayernamepoint)
    arcpy.SelectLayerByLocation_management(featlayernamepoint, "intersect",   featurelayerMG2)
    pointcount = int(arcpy.GetCount_management(featlayernamepoint).getOutput(0))
    if pointcount >= 1:
        arcpy.CopyFeatures_management(featlayernamepoint, OutputGDB)
        pointfield = arcpy.ListFields(featlayernamepoint)
        for pf in pointfield:
            print "Field Name: " + pf.name
    i += 1
4

1 に答える 1

0

ListFields() にポイントを渡すのを忘れました

pointfield = arcpy.ListFields(pl)
for pf in pointfield:
      print "Field Name:" + pf.name
于 2013-02-17T10:40:55.990 に答える