名前を使用して、フィーチャクラスまたはテーブルのジオデータベースを検索する方法を探しています。
このような機能はありますか?
明らかに、ウィンドウ検索はジオデータベース内のテーブルのランダムIDのみを返します。実際にデータセットを検索したいのですが。
ジオデータベースに空間データを保存しているのは私だけではなく、他の数千のデータセットと一緒にアーカイブして、それをふるいにかけたくないので、これは多くの人に役立つと思います。
これらのジオデータベースをArcCatalog内で検索したいのですが。
名前を使用して、フィーチャクラスまたはテーブルのジオデータベースを検索する方法を探しています。
このような機能はありますか?
明らかに、ウィンドウ検索はジオデータベース内のテーブルのランダムIDのみを返します。実際にデータセットを検索したいのですが。
ジオデータベースに空間データを保存しているのは私だけではなく、他の数千のデータセットと一緒にアーカイブして、それをふるいにかけたくないので、これは多くの人に役立つと思います。
これらのジオデータベースをArcCatalog内で検索したいのですが。
回答:
これは、Pythonを使用して、あなたが求めていることを実行する長い方法です:
検索するすべてのジオデータベースのリストが必要です。たくさんある場合は、問題のディレクトリでpythonのwalk関数を使用します。データベースに応じて、.gdbやが含まれるフォルダを分離し.mdbます。
GeoDatabase内のすべてのデータセットを検索します。
データセット内のすべてのレイヤーを見つけます。
あなたが探しているもののレイヤーからの検索結果。
これが私が話していることのコードサンプルです:
import arcpy
from arcpy import env
x = 'File Name That You Are Looking For'
GDBs = ['GeoDatabase1', 'GeoDatabase2', 'ect'] # Your list of GeoDatabases
for GDB in GDBs: # Iterate through your list
env.workspace = GDB
GDBds = arcpy.ListDatasets() # Find datasets in GeoDatabase
for ds in GDBds: # Iterate through datasets
env.workspace = GDB + '/' + ds
fc = arcpy.ListFeatureClasses() # Find all data in the dataset
for f in fc:
if f.find(x) != -1:
print GDB + '/' + ds + '/' + f
データセット内にある場合とない場合があるフィーチャクラスを検索する別の方法は、前述のようにwalk関数を使用することです。検索に必要なのはワークスペース(つまり、何百ものGDBを含むフォルダー)だけです。
import arcpy, os
workspace = "Path/to/folder"
search = "name_string_you_are_searching_for"
feature_classes = []
for dirpath, dirnames, filenames in arcpy.da.Walk(workspace,
datatype="FeatureClass",
type="ANY"):
for fname in filenames:
# search for string in string to eliminate the need for exact filenames
if search.upper() in fname.upper():
feature_classes.append(os.path.join(dirpath, fname))
結果のリストには、検索基準に一致するすべてのフィーチャクラスのパスとファイル名が含まれ、印刷できます。
for fc in feature_classes:
print fc
このwalk機能を変更type=""して、フィーチャタイプに変更することにより、特定のタイプのフィーチャ(つまり、ポリゴン、ポイント、ラスターなど)を検索することもできます。
少し前に、ジオデータベースやその他の空間データのインデックス作成に役立つ可能性のあるソフトウェアを見つけました。
https://www.voyagersearch.com/
社内で試してみましたが、色々な理由で使いきれませんでしたが、便利な機能がたくさんあります。要約すると、位置を使用して検索できる空間データセットのインデックスが作成されます。データの範囲、名前、およびデータの属性/コンテンツ(と思う)も記録されるためです。
これは、GeoDBのインデックスです:https ://voyagersearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodatabases-and-Shapefiles
これは彼らのデモページで、私よりもその機能を実証するのに優れています。 http://voyagerdemo.com/web/navigo/#/home