Escriba algo para buscar...

Código

Esta página muestra algunos de los códigos útiles que compartimos con nuestros clientes para ayudarlos a automatizar el geoprocesamiento y otras tareas. Un ejemplo de estas otras tareas incluye la auditoría de datos mediante la creación de listas de inventario de datos que se pueden exportar a archivos CSV. Por ejemplo, hemos incluido código aquí que enumera todos los metadatos para datos espaciales en varias geodatabases de archivos en un directorio y luego envía los resultados a un archivo CSV. Luego se puede ejecutar otro código para actualizar por lotes cualquier metadato faltante.

Si hay un código que le gustaría ver en la lista a continuación, envíenos un mensaje porque hemos escrito cientos de scripts como estos, y es posible que ya tengamos un script que haga lo que desea o podemos escribir el script por usted. Del mismo modo, muchos de estos scripts usan ArcPy, sin embargo, podemos reescribir cualquiera de estos scripts sin ArcPy si es necesario y en algunos casos, ya hemos escrito algunos de los scripts sin ArcPy, para que pueda usarlos si no tiene el software ArcGIS.

Todos nuestros scripts de Python usan Python 3 y nosotros usamos Visual Studio Code para nuestro IDE. Háganos saber si tiene algún problema al ejecutar cualquiera de los scripts y recuerde que al ejecutar cualquiera de estos scripts que modifican datos, es importante hacer una copia de seguridad de sus datos en caso de que necesite revertir los cambios.

Enumerar todas las Clases de Entidad y Geodatabases Corporativas y sus Metadatos

#

Este script es útil para auditar metadatos. El script se puede ejecutar en varias geodatabases empresariales y creará un archivo CSV de salida con estas columnas: 'Geodatabase', 'Dataset de Entidad', ' Clase de Entidad', 'Referencia Espacial', 'Recuento de Filas', 'Recuento de Columnas', 'Título de Metadatos', 'Descripción de Metadatos', 'Resumen de Metadatos', 'Créditos de Metadatos', 'Restricciones de Acceso a Metadatos'.

Para usar este script, debe cambiar la Línea 19 para que apunte a sus archivos de conexión 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)