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)