मैंने गोटुला के उत्तर का उपयोग करके समाप्त कर दिया , लेकिन बिना उपज के क्योंकि मैं आम तौर पर बनाए गए एफसी हैंडल का फिर से उपयोग करता हूं और उपज का उपयोग एक बार किया जाता है , परित्याग करना मेरे लिए पढ़ने और समझने के लिए आसान है कि क्या 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
...
यह अब एक मॉड्यूल में है जिसे मैं चापलूस * कहता हूं । अपने अन्य कोड या PYTHONPATH के साथ रखें और फिर:
import arcplus
fcs = arcplus.listAllFeatureClasses('d:\default.gdb')
for fc in fcs:
print "magic happens with: ", fc
आर्कप्लस वाइल्डकार्ड फ़िल्टरिंग को भी जोड़ता है; केवल फीचर वर्गों को संसाधित करने के लिए जो "हाइड्रो" वाले फीचर डेटासेट में "HD_" से शुरू होते हैं
fcs = arcplus.listAllFeatureClasses(gdb, fd_filter='*Hydro*', fc_filter='HD_*')
। * अब जीथुब पर, 10.x के लिए उन्नत किया गया। आर्कगिस 9.3 के लिए यहां देखें ।
arcpy.da.Walk
) एक से अधिक लेकिन जीआईएस इन्वेंट्री कैसे बनाई जाती है?