Из python, как я могу построить список всех классов объектов в файловой базе геоданных (* .gdb), включая внутренние наборы классов объектов? В стандартном примере перечислены только классы пространственных объектов на верхнем уровне базы геоданных:
import arcgisscripting, os
gp = arcgisscripting.create(9.3)
gp.workspace = 'd:\scratch.gdb'
fcs = gp.ListFeatureClasses()
for fc in fcs:
print fc
Укажите, к какой версии ArcGIS Desktop относится ваш ответ (я ищу 9.3, но мы могли бы также собрать все версии в одном месте).
arcpy
arcgis-9.3
Мэтт Уилки
источник
источник
arcpy.da.Walk
): Как сделать инвентаризацию ГИС?Ответы:
Эта подпрограмма для arcgis10 возвращает все fcs (автономное ИЛИ в наборе классов объектов) внутри GDB. Просто установите свой arcpy.env.workspace и выполните цикл for
источник
Я закончил тем, что использовал ответ gotchula , но без выхода, потому что
я, как правило, повторно использую созданныемаркеры FC , а выходыиспользуются один раз, а затем отбрасываются,мне легче читать и понимать, чтоfcs.append()
делаетfcs = yield(...)
.Полученные результаты:
Теперь это в модуле, который я называю arcplus *. Поместите с другим кодом или PYTHONPATH, а затем:
Arcplus также добавляет фильтрацию по шаблону; обрабатывать только те классы объектов, которые начинаются с "HD_" в наборах классов объектов, содержащих "Hydro"
. * теперь на Github, обновлен до 10.x. Для arcgis 9.3 смотрите здесь .
источник
yield
здесь. С одной стороны, «дескрипторы», на которые вы ссылаетесь, вовсе не дескрипторы, а просто строки. И если вы хотите сохранить список классов объектов для нескольких итераций, вы все равно можете сохранить его как функцию генератора и просто «прослушать» его:my_list = list(generator_function(args))
это оценивает генератор и сохраняет результат в переменной списка.fcs = fcs.append(...)
делает гораздо быстрее, чемfcs = list(yield(...))
.Я понимаю, что этот вопрос помечен как 9.3, но всем, кто ищет тот же ответ в 10.1 и выше, лучше использовать arcpy.da.Walk . Это быстрее и точнее, чем ListDatasets / FeatureClasses / Rasters / etc.
Функция прогулки работает так же, как прогулка питона . Он выполняет итерацию по каталогам по заданному пути, и на каждой итерации root представляет полный путь к каталогу, а каталоги и наборы данных - это списки подкаталогов и файлов, содержащихся в них.
При обходе базы геоданных наборы классов объектов обрабатываются так же, как и каталоги. Если вы хотите перечислить только наборы данных и наборы классов объектов в корневой папке, а не открывать наборы классов объектов для просмотра содержимого, вы можете сделать следующее:
источник
ListDatasets
Метод является то , что я думаю , что вы ищете. В этом FGDB есть FD, называемый "Wells", и в нем есть 3 FC. Для 9.3.1:источник