내가 사용하는 결국 gotchula의 답변을 하지만, 수율하지 않고 있기 때문에 나는 일반적으로 FC 핸들 생성 및 수율의 한 번 사용 후 폐기 재사용 나 읽고 이해하는 것이 더 쉽다 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는 또한 와일드 카드 필터링을 추가합니다. "Hydro"를 포함하는 기능 데이터 세트 내에서 "HD_"로 시작하는 기능 클래스 만 처리
fcs = arcplus.listAllFeatureClasses(gdb, fd_filter='*Hydro*', fc_filter='HD_*')
. * 이제 Github에서 10.x로 업그레이드되었습니다. arcgis 9.3은 여기를 참조 하십시오 .
arcpy.da.Walk
)는 GIS 인벤토리를 만드는 방법