Cuối cùng tôi đã sử dụng câu trả lời của gotchula , nhưng không có năng suất vì tôi thường sử dụng lại các tay cầm FC được tạo và năng suất được sử dụng một lần sau đó loại bỏ nó giúp tôi dễ đọc và hiểu những gì fcs.append()
đang làm hơn fcs = yield(...)
.
def listFcsInGDB(gdb):
''' list all Feature Classes in a geodatabase, including inside Feature Datasets '''
arcpy.env.workspace = gdb
print 'Processing ', arcpy.env.workspace
fcs = []
for fds in arcpy.ListDatasets('','feature') + ['']:
for fc in arcpy.ListFeatureClasses('','',fds):
#yield os.path.join(fds, fc)
fcs.append(os.path.join(fds, fc))
return fcs
gdb = sys.argv [1]
fcs = listFcsInGDB(gdb)
for fc in fcs:
print fc
Các kết quả:
d:\> python list-all-fc.py r:\v5\YT_Canvec.gdb
Processing r:\v5\YT_Canvec.gdb
Buildings_and_structures\BS_2530009_0
Buildings_and_structures\BS_2380009_2
Buildings_and_structures\Tower
Buildings_and_structures\Underground_reservoir
...
Đây là bây giờ trong một mô-đun tôi gọi arcplus *. Đặt với mã khác của bạn hoặc PYTHONPATH và sau đó:
import arcplus
fcs = arcplus.listAllFeatureClasses('d:\default.gdb')
for fc in fcs:
print "magic happens with: ", fc
Arcplus cũng thêm tính năng lọc ký tự đại diện; chỉ xử lý các lớp tính năng bắt đầu bằng "HD_" trong bộ dữ liệu tính năng có chứa "Hydro"
fcs = arcplus.listAllFeatureClasses(gdb, fd_filter='*Hydro*', fc_filter='HD_*')
. * hiện có trên Github, được nâng cấp cho 10.x. Đối với arcgis 9.3 xem tại đây .
arcpy.da.Walk
) là Làm thế nào để tạo một kho lưu trữ GIS?