В моем офисе будут большие изменения в разделе ГИС. Этот раздел функционирует с 1980-х годов и содержит огромный набор данных ГИС (т. Е. Шейп-файлы, растровые файлы, данные и т. Д.), Но никогда не проходил никакой инвентаризации. Теперь это произойдет.
Существует ли какой-либо автоматизированный способ извлечения всей информации о данных ГИС (т. Е. Шейп-файл, покрытие дуговой информации, файл слоя, * .mxd, gdb, растровый файл и т. Д.) С ПК в файл Excel? Информация может включать дату создания, дату последнего редактирования, имя папки или контейнера и т. Д.
arcpy
file-geodatabase
excel
metadata
blu_sr
источник
источник
arcpy.da.walk
.Ответы:
Это работает для меня, используя
arcpy.da.Walk
функцию в ArcGIS 10.1 SP1:csv
Модуль также используется для упрощения записи выходного файла. Excel может открывать файлы CSV, чтобы вы могли просматривать их в виде электронных таблиц.Смотрите
arcpy.Describe
функцию для дополнительных свойств, которые вы можете включить в вывод.Если вы специально хотите проанализировать информацию из фактических метаданных , посмотрите сценарий в этом ответе: Создание таблицы, содержащей все имена файлов (и, возможно, метаданные) в файловой базе геоданных
источник
Когда вы используете Python, вы должны использовать правильные модули, чтобы делать то, что вы хотите. Например, чтобы найти все файлы в каталоге с расширением shp, есть гораздо более простые решения, которые были представлены без перерыва, что ужасно ... (как решение, представленное Натаном В., но есть много, много других, просто поиск в интернете)
Некоторые примеры с соответствующими модулями:
1) с модулем glob:
только шейп-файлы:
шейп-файлы и базы геоданных:
если вы хотите искать также в подкаталогах:
2) с os.listdir и пониманием списка (в две строки) -> список результатов
3) с модулем fnmatch:
и многие другие решения, рекурсивные и т. д.
источник
Спасибо artwork21 и Натану W за ваш ответ. И да, код Нэтена сотворил магию.
Только имя файла и местоположение. На компьютере, с которым я буду работать, есть большой файл покрытия (файл arc-info), он тоже будет работать на них?
источник
arcpy.da.walk
будет перечислять покрытия, но я бы не догадался, так как он не указан в dataType или типах фильтров.if
утверждении.txt.close()
если вы используете,with
потому что он сделает это за вас, когда блок выйдет.Если у вас есть ArcGIS Desktop 10.0 (или любой из его пакетов обновления), я думаю, что вам лучше всего написать скрипт на python, который использует os.walk для просмотра определенного каталога ГИС и поиска общих расширений файлов ГИС, таких как .shp,. gdb, .mdb и т.д ... и записывает результат в текстовый файл с разделителями-запятыми. Затем вы можете перевести текстовый файл в Excel, см. Пример кода ниже:
Если вы используете ArcGIS 10.1 (или более позднюю версию) для Desktop, то здесь есть другой ответ, использующий arcpy.da.Walk, который не был доступен в версии 10.0 или более ранней.
источник
csv
модуля, чтобы немного абстрагировать запись файла, и использованиеarcpy.da.walk
в 10.1 SP1, чтобы позволить ArcGIS обрабатывать список типов данных ГИС.Если вы хотите избежать программирования, это может быть самый простой и быстрый способ.
Существует дополнение для Excel, которое называется ASAP Utilities . Существует 90-дневная бесплатная пробная версия, но после этого она составляет 49 долларов США для коммерческого использования. Это бесплатно для студентов или личного пользования. Дополнение добавляет много полезных функций. Одним из которых является создание списка файлов в структуре папок. Он также предоставляет свойства файла. Вы можете ограничить результаты по типу файла, если хотите.
Вот видео как это сделать.
Я использовал это дополнение раньше, и результаты очень быстрые.
Обратите внимание, я не связан с этой компанией-разработчиком программного обеспечения.
источник
Я не мог заставить другие ответы работать полностью.
В первом примере, в каталоге с базами геоданных и шейп-файлами, я получил только список классов пространственных объектов в базе геоданных, но когда я закомментировал часть сценария баз геоданных, я получил список шейп-файлов.
Во втором примере часть базы геоданных вообще не работала, поэтому я скопировал часть базы геоданных первого примера. Я снова получил список только геоданных.
Затем меня поразило: базы геоданных читаются до шейп-файлов, и сценарий останавливается
break
в части базы геоданных.Будучи новичком в Python, я не знаю, зачем
break
это нужно, но без этого скрипт, кажется, идет бесконечным циклом, но, посколькуbreak
он мне нужен, мне пришло в голову, что помещение базы геоданных в отдельный цикл, после другого файла типы перечислены, решит проблему:#create blank text file with open("C:\\Temp\\GISlayers.txt", "w") as txt: for root, dirs, files in os.walk("C:\\Temp\\temp"): for f in files: #look for shapefiles, etc. [code...] for f in files: #look for geodatabases [code...]
Когда я это сделал, я получил полный список.
источник