数十のフィーチャクラスがあり、そのうちの1つに探しているフィールドが含まれています。それらはいくつかの異なるファイルジオデータベースに格納されます。
各フィーチャクラスを検索して、自分のフィールドを持つフィーチャクラスをすばやく見つける方法はありますか?それとも、カタログでそれぞれの属性テーブルを確認する必要がありますか?一部のファイルは同じ名前ですが、別の場所に保存されています。
Calculate Value
ModelBuilderのツール内でこれを実行できるようにしたいので、必要になるたびに単一のファイルgdbでモデルを実行し、そのgdb内のすべてのフィーチャクラスを検索してフィールドを探します。 。
これまでのところ、gdbファイル内のすべての機能クラスを再帰的に反復する機能クラスイテレータがあります。内部Calculate Value
には、次のコードがあります。
findField(r"%Feature%", "%Search Field%")
def findField(fc, fi):
lst = arcpy.ListFields(fc)
for f in lst:
if f.name == fi:
return fc
else:
return "not found"
戻り値はOutput Values
文字列として収集されます。フィールドが少なくとも4つに存在するにもかかわらず、すべてのフィーチャクラスの出力は「見つかりません」でした。
Calculate Value
フィールドを検索し、フィールドが見つかった場合はフィーチャクラスのパスを文字列として返すために、内部にPythonコードを挿入しました-以下の私の回答を参照してください。