Answers:
使用一些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=""
的特征类型。
不久前,我遇到了一些软件,该软件可能用于索引GeoDatabase和其他空间数据:
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