Suite

Créer une sauvegarde FGDB hebdomadaire d'ArcSDE ?


Je dois créer un script qui copiera les données parcellaires de notre comté, conservées dans SDE/SQL, dans une géodatabase fichier. Ce script sera exécuté en tant que tâche planifiée au cours du week-end. Quel outil GP recommandez-vous pour ce processus ? Considérez que notre schéma est « gravé dans la pierre » et que nous n'avons aucune classe de relations à maintenir. J'ai testé à la fois CopyFeatures_management et FeatureClassToFeatureClass_conversion. Les deux fonctionnent. FC à FC est légèrement plus rapide, mais la vitesse n'est pas vraiment un problème. En théorie, CopyFeatures, exécuté avec Overwrite = True, correspond à notre flux de travail car nous ne convertissons pas en un fichier de formes ou une couverture. FeatureClassToGeodatabase_conversion peut être le meilleur choix, car environ 25 classes d'entités doivent être copiées dans le même FGDB.

De plus, je dois m'assurer que la machine exécutant le script est capable de se connecter aux données SDE. Nous utilisons le schéma DBO avec authentification du système d'exploitation. Le script sera probablement exécuté par le même serveur qui héberge notre SDE. Quelqu'un a-t-il une expérience avec un scénario similaire?


J'ai utilisé ce script dans le passé (Attention, ne copie aucune topologie, classe de relation, etc.):

import arcpy, os def ExportSDEtoGDB(sde_gdb, out_loc, out_name, gdb_type="File Geodatabase"):"Crée une copie d'une géodatabase SDE vers une géodatabase fichier ou personnelle. Cela copiera toutes les tables, rasters et jeux de données d'entités. Tous Les classes d'entités resteront dans leurs jeux de données d'entités respectés dans la nouvelle géodatabase. Paramètres : sde_gdb : SDE Database out_loc : dossier de sortie pour la nouvelle géodatabase out_name : Nom de la nouvelle géodatabase gdb_type : Type de géodatabase. La valeur par défaut est 'File Geodatabase"# Create GDB if gdb_type == 'File Geodatabase': gdb = str(arcpy.CreateFileGDB_management(out_loc, out_name, 'CURRENT').getOutput(0)) else: gdb = str(arcpy.CreatePersonalGDB_management(out_loc, out_name, 'CURRENT').getOutput( 0)) # boucle à travers sde et copie arcpy.env.workspace = sde_gdb pour la table dans arcpy.ListTables() : t_name = table.split('.')[-1] arcpy.TableToGeodatabase_conversion(table, gdb) pour le raster dans arcpy.ListRasters() : arcpy.CopyRaster_management(raster, os.path.join(gdb, raster)) pour featd dans arcpy.ListDatasets('*','Feature'): arcpy.env.workspace = fd = os.path.join(sde_gdb, featd) fd_name = featd.split('.')[-1] sr = arcpy. Describe(fd).spatialReference gdb_fd = str(arcpy.CreateFeatureDataset_management(gdb, fd_name, sr).getOutput(0)) arcpy.AddMessage('Created Feature Dataset : %s' %fd_name) pour fc dans arcpy.ListFeatureClasses() : fc_name = fc.split('.')[-1] arcpy.FeatureClassToFeatureClass_conversion(fc, gdb_fd, fc_name) arcpy.AddMessage('Copie toutes les classes d'entités de : %s

' %featd)

Vous pouvez envisager d'exporter vers un document d'espace de travail XML via l'outil Exporter un document d'espace de travail XML.

Vous pouvez saisir une géodatabase, puis tous les objets, y compris les objets comportementaux, seront exportés. Le problème avec Copy Features et FC to FC est qu'ils laissent derrière eux les objets comportementaux (c'est-à-dire les réseaux, la topologie, etc.). Peut ne pas être pertinent pour vous à ce stade, mais mérite toujours d'être mentionné pour référence future. De plus, il s'agit d'un outil pour l'ensemble de la géodatabase au lieu de parcourir toutes vos FC une par une.

En ce qui concerne l'exécution du script, tant que le compte utilisateur utilisé dispose des privilèges appropriés pour lire les données, vous êtes prêt à partir (c'est-à-dire que le compte ne doit pas nécessairement faire partie de DBO). Dans votre script, mieux vaut simplement pointer sur votre fichier de connexion.


Voir la vidéo: GeodatabaseBasicsPart1 (Octobre 2021).