追加する前に、フィーチャクラスまたはテーブルに特定の名前のフィールドが含まれているかどうかを確認するにはどうすればよいですか?


8

シェープファイルに特定のフィールドがあるかどうか、およびフィールドを追加しないかどうかを確認するスクリプトを作成しようとしています。フィールドを表示するために取得しますが、ループは各フィールドを通過するため、指定されたフィールドが存在しない場合は常に新しいフィールドが作成されます。でもそこにあるなら、そこにあると言って欲しいし、新しいフィールドを作るのではないなら。これまでのところ私のコードはただ言う:

"not filled in yet"
"not filled in yet"
"not filled in yet"
"cities.shp"
"not filled in yet"

(この原因で出力されるフィールドは5つあります)

これまでの私のコード:

fieldList = arcpy.ListFields("cities.shp")

for field in fieldList:

if field.name == "CAPITAL":
    print "cities.shp"

else: 
    "then add new field"

1
そのコードは本当にその出力と一致しますか?私はarcpyに詳しくありませんが、非常に疑わしいようです。
BradHards 2013年

回答:


10

現在のフィールド名をループする代わりに、追加するフィールド名をループできます。to_addフィーチャクラスに必要なフィールド名を含むリストがあるとします。その後、使用することができin、各項目からかどうかを確認する声明をto_addですfieldList。以下はうまくいくはずです:

#List of field names to be added
to_add = ["Area", "Date_add", "User_add", "etc."]

#Create a list of existing field names
fieldList = arcpy.ListFields("cities.shp")    
fieldName = [f.name for f in fieldList]

for field in to_add:
  if field in fieldName:
    print "Already exists!"
  else:
    arcpy.AddField_management("cities.shp", field, "TEXT")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.