CÓMO
Los elementos de una geodatabase de archivos comprimida (FGDB) pueden tener funcionalidades limitadas para la copia de seguridad de datos. Disponer de los datos en una base de datos facilita el acceso a la visualización de los datos. Realizar una copia de seguridad de los elementos de ArcGIS Online en una conexión de base de datos con ArcGIS API for Python permite descargar, extraer y copiar simultáneamente varios elementos.
from arcgis.gis import GIS import arcpy import os import zipfile import glob import shutil arcpy.env.overwriteOutput = True
gis=GIS("https://arcgis.com","username","password") folders = [] root = r"Ruta a la ubicación en la que se descargan los elementos AGOL" items = ['ItemID1', 'ID2', 'ID3', 'ID4'] destination = r"Ruta a la ubicación en la que se extraen las carpetas comprimidas descargadas" outputPath = r"Ruta de archivo completa a la conexión SDE\<connectionname>.sde"
#la variable 'items' se puede reemplazar para obtener todos los elementos de ArcGIS Online si se necesita realizar una copia de seguridad de todos los elementos for item in items: test = gis.content.get(item) fgdb_title = test.title fgdb_title=fgdb_title.replace('_', '') result = test.export(fgdb, "File Geodatabase") result.download(root) result.delete() folders.append(root +'\\' +fgdb_title + '.zip') print(folders)
for folder in folders: with zipfile.ZipFile(folder) as zf: folder.replace('_','') zf.extractall(destination)
Nota: El paso 5 para eliminar los archivos locales solo es necesario si se produce un error al ejecutar el script debido a archivos existentes.
for FGDB in FGDBlist: item_delete = (destination+FGDB+'\\') #Se eliminan las FGDB de la carpeta de destino (opcional) shutil.rmtree(item_delete)
FGDBlist=os.listdir(destination) for FGDB in FGDBlist: gdb_var=(destination+FGDB+'\\') arcpy.env.workspace=(gdb_var) featureclasses = arcpy.ListFeatureClasses() print(featureclasses) for FC in featureclasses: rename = arcpy.Rename_management(FC, FC + "_copy", "FeatureClass") print(rename) arcpy.FeatureClassToFeatureClass_conversion(gdb_var + FC + "_copy", outputPath, FC + "_copy")
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri