ฉันสิ้นสุดการใช้คำตอบของ gotchulaแต่ไม่มีผลตอบแทนเพราะฉันมักจะกลับมาใช้จับเอฟซีที่สร้างขึ้นและอัตราผลตอบแทนของถูกนำมาใช้ครั้งเดียวแล้วทิ้งมันง่ายสำหรับผมที่จะอ่านและเข้าใจในสิ่งที่จะทำมากกว่าfcs.append()
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
ผล:
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
...
นี่คือโมดูลที่ฉันเรียกว่าarcplus * วางด้วยรหัสอื่นของคุณหรือ PYTHONPATH แล้ว:
import arcplus
fcs = arcplus.listAllFeatureClasses('d:\default.gdb')
for fc in fcs:
print "magic happens with: ", fc
Arcplus ยังเพิ่มตัวกรองสัญลักษณ์ ในการประมวลผลเฉพาะคลาสของคุณลักษณะที่ขึ้นต้นด้วย "HD_" ภายในชุดข้อมูลคุณลักษณะที่มี "Hydro"
fcs = arcplus.listAllFeatureClasses(gdb, fd_filter='*Hydro*', fc_filter='HD_*')
. * ทันทีบน Github อัปเกรดเป็น 10.x สำหรับ ArcGIS 9.3 ดูที่นี่
arcpy.da.Walk
) เป็นวิธีการสร้างสินค้าคงคลัง GIS?