Digite algo para pesquisar...

Código

Esta página mostra alguns dos códigos úteis que compartilhamos com nossos clientes para ajudá-los a automatizar o geoprocessamento e outras tarefas. Um exemplo dessas outras tarefas inclui auditoria de dados por meio da criação de listas de inventário de dados que podem ser geradas em arquivos CSV. Por exemplo, incluímos aqui um script que lista todos os metadados para dados espaciais em vários bancos de dados geográficos de arquivos em um diretório e, em seguida, envia os resultados para um arquivo CSV. Um segundo script pode então ser executado para atualizar em lote quaisquer metadados ausentes.

Se houver um script que você gostaria de ver na lista abaixo, envie-nos uma mensagem porque escrevemos centenas de scripts como esses e podemos já ter um script que faz o que você deseja, ou podemos escrever o script para você. Da mesma forma, muitos desses scripts usam ArcPy, no entanto, podemos reescrever qualquer um desses scripts sem ArcPy, se necessário, e em alguns casos, já escrevemos alguns dos scripts sem ArcPy, para que você possa usá-los se não tiver o software ArcGIS.

Todos os nossos scripts Python usam Python 3 e usamos o Visual Studio Code para nosso IDE. Informe-nos se você tiver algum problema ao executar qualquer um dos scripts e lembre-se de que, ao executar qualquer um desses scripts que modificam dados, é importante fazer backup de seus dados caso precise reverter suas alterações.

Liste todos os bancos de dados geográficos corporativos e classes de recursos e seus metadados

#

Este script é útil para auditar metadados. O script pode ser executado em vários geodatabases enterprise e criará um arquivo CSV de saída com estas colunas: 'Geodatabase', 'Feature Dataset', 'Feature Class', 'Spatial Reference', 'Row Count', 'Column Count', 'Metadata Title', 'Metadata Description', 'Metadata Summary', 'Metadata Credits', 'Restrições de acesso a metadados'.

Para usar este script, você precisa alterar a Linha 19 para apontar para seus arquivos de conexão 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)