Geben Sie etwas zum Suchen ein...

Code

Diese Seite zeigt einige nützliche Codes, die wir mit unseren Kunden teilen, um sie bei der Automatisierung der Geoverarbeitung und anderer Aufgaben zu unterstützen. Ein Beispiel für diese anderen Aufgaben ist die Datenprüfung durch die Erstellung von Dateninventurlisten, die in CSV-Dateien ausgegeben werden können. Beispielsweise haben wir hier ein Skript eingefügt, das alle Metadaten für räumliche Daten in mehreren File-Geodatabases in einem Verzeichnis auflistet und die Ergebnisse dann in eine CSV-Datei ausgibt. Anschließend kann ein zweites Skript ausgeführt werden, um alle fehlenden Metadaten stapelweise zu aktualisieren.

Wenn es ein Skript gibt, das Sie gerne in der Liste unten sehen würden, dann senden Sie uns bitte eine Nachricht, da wir Hunderte solcher Skripte geschrieben haben und möglicherweise bereits ein Skript haben, das das tut, was Sie wollen, oder wir könnten das Skript für Sie schreiben. Ebenso verwenden viele dieser Skripte ArcPy. Wir können jedoch bei Bedarf jedes dieser Skripte ohne ArcPy umschreiben. In einigen Fällen haben wir einige der Skripte bereits ohne ArcPy geschrieben, sodass Sie sie verwenden können, wenn Sie keine ArcGIS-Software haben.

Alle unsere Python-Skripte verwenden Python 3, und wir verwenden Visual Studio Code für unsere IDE. Teilen Sie uns bitte mit, wenn beim Ausführen eines der Skripts Probleme auftreten. Denken Sie daran, dass es beim Ausführen eines dieser Skripts, die Daten ändern, wichtig ist, Ihre Daten zu sichern, für den Fall, dass Sie Ihre Änderungen rückgängig machen müssen.

Listen Sie alle Enterprise-Geodatabases und Feature-Classes sowie deren Metadaten auf

#

Dieses Skript ist nützlich für die Prüfung von Metadaten. Das Skript kann über mehrere enterprise Geodatabases hinweg ausgeführt werden und erstellt eine Ausgabe-CSV-Datei mit den folgenden Spalten: „Geodatabase“, „Feature Dataset“, „Feature Class“, „Spatial Reference“, „Zeilenanzahl“, „Spaltenanzahl“, „Metadatentitel“, „Metadatenbeschreibung“, „Metadatenzusammenfassung“, „Metadatennachweise“, „Metadatenzugriff“. Einschränkungen‘.

Um dieses Skript zu verwenden, müssen Sie Zeile 19 ändern, um auf Ihre SDE-Verbindungsdateien zu verweisen.

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)