Dari python bagaimana saya bisa membuat daftar semua kelas fitur dalam file geodatabase (* .gdb), termasuk di dalam dataset fitur? Contoh standar hanya mencantumkan kelas fitur di tingkat atas geodatabase:
import arcgisscripting, os
gp = arcgisscripting.create(9.3)
gp.workspace = 'd:\scratch.gdb'
fcs = gp.ListFeatureClasses()
for fc in fcs:
print fc
Tolong tunjukkan versi ArcGIS Desktop mana jawaban Anda berlaku (Saya mencari 9.3 tetapi kami mungkin juga mengumpulkan semua versi di satu tempat).
arcpy
arcgis-9.3
matt wilkie
sumber
sumber
arcpy.da.Walk
) adalah Bagaimana cara membuat inventaris GIS?Jawaban:
Rutin ini untuk arcgis10 mengembalikan semua fcs (mandiri atau dalam dataset fitur) di dalam gdb. Cukup atur arcpy.env.workspace Anda lalu lakukan for loop
sumber
Saya akhirnya menggunakan jawaban gotchula , tetapi tanpa hasil karena
saya biasanya menggunakan kembali pegangan FC yang dibuat dan hasil digunakan sekali kemudian dibuang, lebih mudah bagi saya untuk membaca dan memahami apafcs.append()
yang dilakukan daripadafcs = yield(...)
.Hasil:
Ini sekarang dalam modul yang saya sebut arcplus *. Tempatkan dengan kode atau PYTHONPATH Anda yang lain dan kemudian:
Arcplus juga menambahkan pemfilteran wildcard; untuk hanya memproses kelas fitur yang dimulai dengan "HD_" dalam kumpulan fitur yang berisi "Hydro"
. * sekarang di Github, ditingkatkan untuk 10.x. Untuk arcgis 9.3 lihat di sini .
sumber
yield
sini. Pertama, "pegangan" yang Anda maksud bukan pegangan sama sekali, itu hanya string. Dan jika maksud Anda adalah untuk membuat daftar kelas fitur sekitar untuk beberapa iterasi, Anda masih dapat menyimpannya sebagai fungsi generator dan cukup "listify" itu:my_list = list(generator_function(args))
ini mengevaluasi generator dan menyimpan hasilnya dalam variabel daftar.fcs = fcs.append(...)
jauh lebih cepat daripadafcs = list(yield(...))
.Saya menyadari pertanyaan ini ditandai 9.3, tetapi siapa pun yang mencari jawaban yang sama pada 10.1 dan seterusnya lebih baik menggunakan arcpy.da.Walk . Lebih cepat dan lebih akurat daripada ListDatasets / FeatureClasses / Raster / dll.
Fungsi berjalan bekerja dengan cara yang sama seperti berjalan python . Itu iterates melalui direktori di jalur yang diberikan dan pada setiap iterasi, root mewakili path lengkap dari direktori, dan dirs dan dataset adalah daftar dari subdirektori dan file yang terkandung di dalamnya.
Saat berjalan melalui geodatabase, kumpulan data fitur diperlakukan dengan cara yang sama seperti direktori. Jika Anda hanya ingin mendaftar dataset dan dataset fitur dalam folder root dan tidak membuka dataset fitur untuk melihat konten, Anda dapat melakukan:
sumber
The
ListDatasets
Metode adalah apa yang saya pikir Anda cari. FGDB ini memiliki FD di dalamnya yang disebut "Wells" dan memiliki 3 FC di dalamnya. Untuk 9.3.1:sumber