Введите что-нибудь для поиска...

Код

На этой странице показан некоторый полезный код, которым мы делимся с нашими клиентами, чтобы помочь им автоматизировать геообработку и другие задачи. Примером других задач является аудит данных путем создания списков инвентаризации данных, которые можно вывести в файлы CSV. Например, мы включили сюда скрипт, который перечисляет все метаданные для пространственных данных в нескольких файловых базах геоданных в каталоге, а затем выводит результаты в файл CSV. Затем можно запустить второй сценарий для пакетного обновления недостающих метаданных.

Если есть сценарий, который вы хотели бы видеть в списке ниже, отправьте нам сообщение, поскольку мы написали сотни подобных сценариев, и, возможно, у нас уже есть сценарий, который делает то, что вы хотите, или мы можем написать сценарий для вас. Аналогично, многие из этих сценариев используют ArcPy, однако при необходимости мы можем переписать любой из этих сценариев без ArcPy, а в некоторых случаях мы уже написали некоторые сценарии без ArcPy, так что вы можете использовать их, если у вас нет программного обеспечения ArcGIS.

Все наши сценарии Python используют Python 3, и мы используем код Visual Studio для нашей IDE. Сообщите нам, если у вас возникнут проблемы с запуском любого из сценариев. Помните, что при запуске любого из этих сценариев, изменяющих данные, важно создать резервную копию данных на случай, если вам понадобится отменить изменения.

Перечислите все многопользовательские базы геоданных и классы объектов, а также их метаданные.

#

Этот сценарий полезен для аудита метаданных. Сценарий можно запустить в нескольких базах геоданных enterprise. Он создаст выходной файл CSV со следующими столбцами: «База геоданных», «Набор данных объектов», «Класс объектов», «Пространственная привязка», «Количество строк», «Количество столбцов», «Название метаданных», «Описание метаданных», «Сводка метаданных», «Кредиты метаданных», «Доступ к метаданным». Constraints'.

Чтобы использовать этот сценарий, вам необходимо изменить строку 19, указав на файлы подключения SDE.

import csv
import os

from arcpy import Describe
from arcpy import env
from arcpy import GetCount_management
from arcpy import ListDatasets
from arcpy import ListFeatureClasses
from arcpy import ListFields
from arcpy import metadata as md

# the output CSV file name
output_csv_file = 'enterprise_gdbs_results.csv'

# or use this to make the output CSV file name the same as the script name
# output_csv_file = os.path.basename(__file__).replace('.py','.csv')

# change this path to use your SDE connection files
sde_connection_files = 'c:/gis/sde_connection_files'

with open(output_csv_file,'w',newline='') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=',')
    column_headers = [
        'Geodatabase', 'Feature Dataset', 'Feature Class', 
        'Spatial Reference', 'Row Count', 'Column Count', 
        'Metadata Title', 'Metadata Description', 'Metadata Summary',
        'Metadata Credits', 'Metadata Access Constraints'
    ]
    
    csv_writer.writerow(column_headers)

    for (folder, dirs, files) in os.walk(sde_connection_files):
        for file in files:
            if(not file.startswith('_') and file.endswith('.sde')):
                geodatabase = file.split('@')[1]

                wksp = os.path.join(folder,file)
                env.workspace = wksp

                datasets = ListDatasets(feature_type='feature')
                datasets = [''] + datasets if datasets is not None else []

                for dataset in datasets:
                    for feature_class in ListFeatureClasses(dataset):
                        desc = Describe(feature_class)
                        spatial_reference = desc.SpatialReference.factoryCode
                        count = GetCount_management(feature_class)[0]
                        column_count = len(ListFields(feature_class))
                        metadata = md.Metadata(feature_class)

                        row = [
                            geodatabase,dataset,feature_class,
                            spatial_reference,count,column_count,
                            metadata.title,metadata.description,
                            metadata.summary,metadata.credits,
                            metadata.accessConstraints    
                        ]

                        print(row)
                        
                        csv_writer.writerow(row)