Digita qualcosa da cercare...

Codice

Questa pagina mostra parte del codice utile che condividiamo con i nostri clienti per aiutarli ad automatizzare il geoprocessing e altre attività. Un esempio di queste altre attività include il controllo dei dati mediante la creazione di elenchi di inventario dei dati che possono essere esportati in file CSV. Ad esempio, qui abbiamo incluso uno script che elenca tutti i metadati per i dati spaziali in più geodatabase di file in una directory, quindi genera i risultati in un file CSV. È quindi possibile eseguire un secondo script per aggiornare in batch eventuali metadati mancanti.

Se c'è uno script che vorresti vedere nell'elenco seguente, inviaci un messaggio perché abbiamo scritto centinaia di script come questi e potremmo già avere uno script che fa quello che desideri, oppure potremmo scrivere lo script per te. Allo stesso modo, molti di questi script utilizzano ArcPy, tuttavia, se necessario, possiamo riscrivere qualsiasi di questi script senza ArcPy e, in alcuni casi, abbiamo già scritto alcuni script senza ArcPy, in modo che tu possa utilizzarli se non disponi del software ArcGIS.

Tutti i nostri script Python utilizzano Python 3 e utilizziamo Visual Studio Code per il nostro IDE. Fateci sapere se riscontrate problemi con l'esecuzione di uno qualsiasi degli script e ricordate che quando eseguite uno di questi script che modificano i dati, è importante eseguire il backup dei dati nel caso in cui sia necessario ripristinare le modifiche.

Elenca tutti i geodatabase aziendali, le classi di entità geografiche e i relativi metadati

#

Questo script è utile per il controllo dei metadati. Lo script può essere eseguito su più geodatabase enterprise e creerà un file CSV di output con queste colonne: "Geodatabase", "Feature Dataset", "Classe di caratteristiche", "Riferimento spaziale", "Conteggio righe", "Conteggio colonne", "Titolo metadati", "Descrizione metadati", "Riepilogo metadati", 'Crediti metadati', 'Vincoli di accesso ai metadati'.

Per utilizzare questo script, è necessario modificare la riga 19 in modo che punti ai file di connessione 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)