Remarques sur le géotraitement des données ArcSDE

Création dynamique de fichiers de connexion ArcSDE

Les fichiers de connexion ArcSDE peuvent être créés le cas échéant à l'aide de l'outil Créer un fichier de connexion à ArcSDE. Cet outil permet d'automatiser la création de fichiers de connexion ArcSDE en cas de besoin et évite ainsi de préparer les fichiers de connexion avant d'exécuter les outils ayant accès aux données ArcSDE. Vous pouvez obtenir les propriétés de la connexion à partir de n'importe quelle source, par exemple un fichier texte, un flux XML codé ou une base de données sécurisée, et les transmettre à l'outil Créer un fichier de connexion à ArcSDE pour créer le fichier de connexion ArcSDE requis. Lorsque vous avez terminé avec le fichier de connexion, vous pouvez le supprimer immédiatement à l'aide de l'outil Supprimer ou la commande de suppression appropriée du système d'exploitation.

AttentionAttention :

L'historique du géotraitement et les résultats stockent tous les paramètres passés aux outils. Comme les informations de connexion sont entrées dans les paramètres de l'outil Créer un fichier de connexion à ArcSDE, elles sont également stockées sauf si la consignation dans l'historique est activée. A chaque fois qu'un outil est exécuté, qu'il s'agisse d'un outil système, de modèle ou de script, un enregistrement de son exécution est consigné dans un fichier journal d'historique. Les informations contenues dans le fichier journal d'historique sont essentiellement les mêmes que celles se trouvant dans la fenêtre Résultats. Pour ne pas stocker les informations de connexion (mot de passe ou toute autre information sécurisé dans un paramètre) dans le journal d'historique ou dans la fenêtre Résultats lorsque l'outil Créer un fichier de connexion à ArcSDE est exécuté, désactivez la journalisation dans l'historique. Reportez-vous à la rubrique Fichiers d'historique pour plus de détails.

Performances des outils de géotraitement pour l'utilisation des données ArcSDE

Le géotraitement n'a aucun impact sur les performances réelles du serveur ArcSDE, la géodatabase ou la base de données. L'optimisation appropriée de la base de données, ainsi que la conception et l'implémentation de l'application à l'aide de la base de données (ArcSDE et la géodatabase dans ce cas) permettent principalement d'obtenir les meilleures performances lors de l'utilisation des données ArcSDE. Toutefois, certains éléments doivent être pris en compte lors de l'utilisation des données ArcSDE dans les outils de géotraitement pour éviter certains problèmes du workflow susceptibles de nuire aux performances des outils et des workflow.

Les outils de géotraitement servent principalement aux opérations de création/chargement des données

La plupart des outils de géotraitement permettent de créer des données. Pour l'essentiel, les résultats du géotraitement doivent être affichés comme opération de chargement de données dans le cadre de l'envoi des résultats de l'outil vers ArcSDE. Il est important de planifier toutes les opérations de chargement de données de manière à ne pas nuire aux performances de la base de données. La plupart des administrateurs de bases de données (et utilisateurs) ne seront pas très contents lorsque le résultat de l'outil Agréger contiendra 50 millions d'enregistrements et que le chargement des données par l'outil dans la base ArcSDE s'effectuera le matin aux heures de pointe sur le réseau et la base de données. Les opérations de chargement de données volumineuses peuvent affecter chaque utilisateur de la base de données (et dans certains cela peut représenter des centaines ou des milliers d'utilisateurs), mais aussi chaque utilisateur du réseau vers lequel les données sont envoyées. Si les entrées de l'opération de géotraitement sont volumineuses ou sont combinées (comme pour l'utilisation des outils de superposition) pour créer une énorme classe d'entités en sortie, il est préférable de planifier la création de cette sortie à un moment de la journée où la charge du réseau et de la base de données sera le moins affectée.

RemarqueRemarque :

Dans la plupart des cas, il peut être judicieux d'utiliser les outils pour créer la sortie dans une géodatabase fichier. Une fois que la sortie a été validée dans la géodatabase fichier, vous pouvez transférer les données dans ArcSDE (en utilisant, par exemple, Copier des entités ou Classe d'entités vers classe d'entités) à un moment de la journée où l'impact sur les performances du réseau et de la base de données sera moindre.

Il sera peut-être nécessaire également de planifier le chargement de la sortie de géotraitement pour vous assurer qu'elle est stockée aussi efficacement que possible pour une récupération et mise à jour. Le mode d'utilisation des données peut déterminer son mode de stockage optimal dans la base de données. Les mots-clés de configuration ArcSDE peuvent être créés pour définir le mode de stockage des données. En règle générale, vous ne pouvez déterminer la meilleure configuration de stockage qu'après avoir analysé les données en sortie. Ainsi, l'envoi de la sortie dans une géodatabase fichier permettra d'analyser les données en sortie et d'éviter de charger inutilement les données dans ArcSDE. Une fois que la sortie dans la géodatabase fichier a été analysée pour déterminer les meilleurs paramètres de stockage à définir pour le type et l'utilisation des données, la sortie peut être chargée dans ArcSDE à partir d'un mot-clé de configuration approprié.

Cas où vous ne devez pas stocker les données dans ArcSDE

Les données intermédiaires sont créées lorsque vous exécutez des modèles et des scripts qui se déroulent en plusieurs étapes pour obtenir le résultat final. Si les données se trouvent dans ArcSDE et que vous envoyez également toutes les données intermédiaires vers ArcSDE, vous pouvez saturer le réseau et augmenter inutilement la charge du serveur de base de données. Il est recommandé d'envoyer toutes les données intermédiaires dans une géodatabase fichier ou, dans le cas de classes d'entités simples, à une classe d'entités momentanée.

Si le résultat de l'analyse est temporaire ou ne sera pas partagée par un grand nombre, stockez-le ailleurs que dans ArcSDE. Reportez-vous à la rubrique Types de géodatabases pour consulter une comparaison des différents types de géodatabases et vous aider à choisir le type qui répond le mieux à vos besoins.

Remarques sur l'index spatial des outils de géotraitement qui modifient les données existantes

Les index spatiaux sont utilisés dans ArcGIS pour rechercher rapidement les entités des classes. Chaque fois qu'une entité est insérée ou supprimée, l'index spatial doit être mis à jour. Lorsqu'une sortie est créée, le géotraitement diffère la création de l'index spatial des nouvelles classes d'entités jusqu'à la fin du chargement de toutes les données. Lorsque vous modifiez des classes d'entités existantes, deux options sont disponibles pour le moment de la mise à jour de l'index spatial. Vous pouvez laisser l'index spatial tel quel et le mettre à jour après chaque modification, ou vous pouvez retirer l'index spatial avant d'effectuer les modifications et le mettre à jour une fois après que toutes les modifications ont été effectuées.

Index spatiaux et outils de géotraitement

Certains outils de géotraitement peuvent modifier les données existantes :

Lorsque vous utilisez des outils de géotraitement qui modifient les données existantes, le paramètre d'environnement, MaintainSpatialIndex, permet de contrôler d'une certaine manière le mode de traitement de l'index spatial ArcSDE au cours des opérations d'insertion, de suppression et de mise à jour (appelées également modifications). Deux options peuvent fournir une amélioration des performances des opérations de mise à jour des données existantes. Vous pouvez activer le paramètre MaintainSpatialIndex pour laisser l'index spatial tel quel et laisser à ArcSDE l'initiative de la mise à jour automatique au cours des mises à jour. Ou alors, vous pouvez le désactiver, auquel cas les outils de géotraitement qui mettront à jour les données existantes ignoreront l'index spatial ArcSDE avant d'effectuer les mises à jour. L'index spatial sera lu une fois que toutes les modifications auront été effectuées.

index spatiaux lors de l'utilisation des curseurs de mise à jour et d'insertion

Les curseurs de mise à jour et d'insertion fonctionnent également avec les données existantes Lorsque vous utilisez les curseurs de mise à jour et d'insertion pour modifier les données, vous pouvez utiliser l'outil Supprimer un index spatial pour retirer l'index spatial ArcSDE avant les opérations de mise à jour qui impliquent un volume important d'enregistrements. Une fois que les mises à jour ont été effectuées, vous pouvez utiliser l'outil Ajouter un index spatial pour recréer l'index spatial. Cela peut améliorer dans l'ensemble les performances de l'opération de mise à jour dans le cas d'un volume important d'enregistrements. Reportez-vous à la rubrique Vue d'ensemble des index spatiaux de la géodatabase pour en savoir plus sur l'utilisation des index spatiaux.

Conseils sur les données ArcSDE lors de la création de scripts

Avec les systèmes de gestion de base de données relationnelles (SGBDR) tels qu'Oracle, SQL Server, IBM DB2 et PostgreSQL, les noms d'objet doivent être complets, surtout si les données auxquelles vous avez accès sont en dehors de votre structure. L'utilisation de noms complets permet de désigner clairement le nom d'un objet de manière à utiliser l'objet approprié (classe d'entités, table relationnelle, table, etc.). Chaque base de données présente une légère différence pour désigner un nom d'objet. Consultez la documentation de la base de données pour plus de détails.

Utilisez le nom complet de la table ou de la classe d'entités

Lorsqu'une table ou une classe d'entités qui n'est pas désignée de manière complète est transmise à un outil, le géotraitement attribue automatiquement un nom à partir du nom de l'utilisateur actuellement connecté dans l'espace de travail qui a été créé à l'aide du fichier de connexion ArcSDE. Si un script doit accéder aux données d'un utilisateur autre que l'utilisateur connecté, il doit désigner de manière complète le nom de la table ou la classe d'entités pour éviter que l'outil de géotraitement ne le désigne à partir du nom de l'utilisateur connecté. Sinon, une erreur peut se produire ou l'outil peut utiliser les données incorrectes.

Affiche l'utilisation d'une classe d'entités avec un nom complet qui appartient à un utilisateur autre que l'utilisateur connecté. L'utilisateur de la base de données des boîtes à outils doit posséder certains droits d'accès aux données de l'utilisateur de la carte.

import arcpy
# Create and ArcSDE connection file that connects as the toolbox database user
arcpy.CreateArcSDEConnectionFile_management(r'C:\temp',r'toolboxuser.sde','gpserver','5151','',"DATABASE_AUTH",'toolbox','toolbox')

# Perform a union operation using data owned by the connected user, toolbox,
# and another feature class owned by the map database user.
arcpy.Union_analysis(r'C:\temp\toolboxuser.sde\toolbox.states;C:\temp\toolboxuser.sde\map.counties',r'C:\temp\toolboxuser.sde\statesCountiesUnion')

Chaque base de données est légèrement différente quand il s'agit de désigner le nom complet d'un objet. Pour plus de détails, reportez-vous à la documentation SQL de votre SGBD.

Utiliser des noms de champ complets

Les champs sont considérés comme des objets dans la base de données, et lorsque vous accédez aux objets qui n'appartiennent pas à l'utilisateur connecté, vous devez accéder aux champs en utilisant leur nom complet. Chaque fois que vous créez une instruction SQL complexe, l'utilisation de noms de champ complets garantira le fonctionnement de l'instruction SQL. Encore une fois, chaque base de données est légèrement différente quad il s'agit de désigner les objets avec un nom complet. Pour plus de détails, reportez-vous à la documentation SQL de votre SGBD.

Géotraitement avec des données versionnées

Le versionnement de géodatabase est disponible uniquement dans les géodatabases Enterprise. ArcSDE est la géodatabase Enterprise. Avec les outils de géotraitement, vous pouvez accéder aux données versionnées de deux façons différentes selon que les données ArcSDE sont transmises comme chemin d'accès de jeu de données ou nom de couche.

Avec les classes d'entités, le géotraitement utilise toujours les informations de connexion dans le fichier de connexion qui fait partie du chemin d'accès à la classe d'entités ArcSDE pour ouvrir la classe d'entités. Cela signifie que pour accéder aux données vous êtes lié par la version définie dans les propriétés de connexion du fichier .sde.

Si vous ajoutez les données à ArcMap, elles sont représentées comme couches d'entités ou vues tabulaires. Lorsqu'un outil de géotraitement identifie une entrée comme couche d'entités ou vue tabulaire, il ne fait plus référence au fichier de connexion ArcSDE pour rouvrir la classe d'entités à l'aide des propriétés de la connexion du fichier de connexion. En fait, il accède à la classe d'entités à l'aide de l'espace de travail déjà ouvert de la couche. Si toutes les modifications, notamment la version vers laquelle pointe l'espace de travail, ont été apportés à l'espace de travail, l'outil les prend en compte. Si vous utilisez l'outil Changer de version dans ArcMap sur les données ArcSDE dans la table des matières ArcMap, l'outil de géotraitement utilise la version des donnes auxquelles l'espace de travail est connecté après que l'outil Modifier la version est appelé.

Utilisation des classes d'entités versionnées avec les outils de géotraitement

Lorsque vous accédez directement aux classes d'entités dans les outils de géotraitement en utilisant un chemin d'accès qui indique le fichier de connexion ArcSDE (.sde), vous gérez la version à laquelle les classes d'entités sont connectées comme suit :

  1. Vous référencez les classes d'entités à l'aide d'un chemin d'accès à un fichier de connexion ArcSDE.
  2. Vous créez une version à l'aide de l'outil Créer une version. Lorsque vous créez une version de cette façon, la nouvelle version sera un enfant de la version répertoriée dans le fichier de connexion transmise comme argument à l'outil.
  3. Vous créez un fichier de connexion à l'aide de l'outil Créer un fichier de connexion à ArcSDE en vous assurant que vous utilisez la nouvelle version créée dans le paramètre Version de l'outil.
  4. Vous utilisez ce nouveau fichier de connexion pour accéder à la classe d'entités pendant que vous êtes connecté à la nouvelle version.
  5. Pour utiliser de nouveau la classe d'entités pendant que vous êtes connecté à la version parent, utilisez le fichier de connexion d'origine.
AstuceAstuce :

Lorsque vous nommez les fichiers de connexion ArcSDE, il peut être utile de nommer le fichier .sde de manière à identifier clairement le travail effectué à l'aide de chaque fichier de connexion créé :

  • Utilisation des paramètres de connexion : gpserver5151toolboxVersion1.sde (nom du serveur + port + nom d'utilisateur + version)
  • Utilisation du nom de l'analyste SIG qui utilisera le fichier .sde : Ken.sde
  • Attribution d'un nom au fichier .sde en reprenant le nom du projet pour lequel il sera utilisé : ServiceEauxMAJJuin2010.sde

Quelle que soit la convention d'appellation utilisée, assurez-vous que le nom du fichier est clair et respecte les règles de sécurité de votre organisation.

Script Python affichant le workflow pour l'utilisation de classes d'entités versionnées

# VersionedFeatureClassExample.py 
# Description: Simple example showing how to access versioned feature classes in geoprocessing tools.
# Author: ESRI

# import system modules
import arcpy
import sys, os

# Set variables
sdeConnFilePath = sys.path[0] + os.sep + "sdeconnectionfiles"
analysisVersion = "TOOLBOX.proposedStreets2k9"
defaultVersionConnection = r'gpserver5151toolboxDEFAULT.sde'
proposedStreetsVersion = r'gpserver5151toolboxproposedStreets2k9.sde'

# Perform analysis on the Default version to determine current number of streams within 100 meters of streets.
inputFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'TOOLBOX.Redlands\TOOLBOX.streams'
selectFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'TOOLBOX.Redlands\TOOLBOX.street'
outputFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'StreamsNearStreets'

arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management(inputFC,"WITHIN_A_DISTANCE",selectFC,"100 Meters","NEW_SELECTION",'#'), outputFC,'','','')
print "Streams within 100 Meters of current streets: " + str(arcpy.GetCount_management(outputFC))

# Create an ArcSDE connection file for connecting to the proposedStreets2k9 version
folderName = sdeConnFilePath
fileName = proposedStreetsVersion
serverName = "gpserver"
serviceName = "5151"
databaseName = ""
authType = "DATABASE_AUTH"
username = "toolbox"
password = "toolbox"
saveUserInfo = "SAVE_USERNAME"
versionName = analysisVersion
saveVersionInfo = "SAVE_VERSION"

arcpy.CreateArcSDEConnectionFile_management (folderName, fileName, serverName, serviceName, databaseName, authType, username, password, saveUserInfo, versionName, saveVersionInfo)

# Perform the same analysis on the proposedStreets2k9 version to see the effect of the proposed changes.
inputFC = sdeConnFilePath + os.sep + proposedStreetsVersion + os.sep + r'TOOLBOX.Redlands\TOOLBOX.streams'
selectFC = sdeConnFilePath + os.sep + proposedStreetsVersion + os.sep + r'TOOLBOX.Redlands\TOOLBOX.street'
outputFC = sdeConnFilePath + os.sep + defaultVersionConnection + os.sep + r'NewStreamsNearStreets'

arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management(inputFC,"WITHIN_A_DISTANCE",selectFC,"100 Meters","NEW_SELECTION",'#'), outputFC,'','','')
print "Streams projected to be within 100 Meters of streets after proposed street additions:" + str(arcpy.GetCount_management(outputFC))

Accès aux classes d'entités versionnées à l'aide de couches d'entités/vues tabulaires avec les outils de géotraitement

Le workflow à utiliser pour accéder aux classes d'entités versionnées à l'aide des couches d'entités ou des vues tabulaires se présente comme suit :

  1. Créez une couche avec les outils Générer une couche ou Générer une vue tabulaire pour toutes les entrées. Assurez-vous d'utiliser le fichier de connexion ArcSDE dont le parent ou la version de démarrage sont spécifiés dans la propriété Version du fichier de connexion.
  2. Utilisez ces couches dans tous les outils.
  3. Si vous souhaitez changer de version, utilisez l'outil Changer de version.
  4. Continuez à utiliser les couches d'entités dans les outils. Le géotraitement respecte la version référencée par l'espace de travail ouvert après que l'outil Changer de version est appelé.
  5. Utilisez l'outil Changer de version en fonction des exigences du projet pour changer de version afin de réaliser les analyses.

Script Python affichant le workflow pour l'utilisation de couches d'entités versionnées

# VersionedFeatureLayersExample.py 
# Description: Simple example showing how to access versioned feature classes using layers.
# Author: ESRI

# import system modules
import arcpy
from arcpy import env
import sys, os

# Set Environments
env.workspace = sys.path[0] + os.sep + "gpserver5151toolboxDEFAULT.sde"

# Create the layers
arcpy.MakeFeatureLayer_management(r'TOOLBOX.Redlands\TOOLBOX.street', 'RedlandsStreets')
arcpy.MakeFeatureLayer_management(r'TOOLBOX.Redlands\TOOLBOX.streams', 'RedlandsStreams')

# Perform analysis on the Default version to determine current number of streams within 100 meters of streets.
arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management("RedlandsStreams","WITHIN_A_DISTANCE","RedlandsStreets","100 Meters","NEW_SELECTION",'#'), 'StreamsNearStreets','','','')
print "Streams within 100 Meters of current streets: " + str(arcpy.GetCount_management("StreamsNearStreets"))

# Change to the development version
arcpy.ChangeVersion_management('RedlandsStreets','TRANSACTIONAL', 'TOOLBOX.proposedStreets2k9','')

# Perform the same analysis on the development version to see the effect of the proposed changes.
arcpy.MakeFeatureLayer_management(arcpy.SelectLayerByLocation_management("RedlandsStreams","WITHIN_A_DISTANCE","RedlandsStreets","100 Meters","NEW_SELECTION",'#'), 'NewStreamsNearStreets','','','')
print "Streams projected to be within 100 Meters of streets after proposed street additions: " + str(arcpy.GetCount_management("NewStreamsNearStreets"))

Données ArcSDE et outils de partage

La méthode recommandée pour partager les outils, sur le réseau ou dans les services de géotraitement, est d'utiliser une structure de dossiers de partage, comme illustré ci-dessous. Le fichier de connexion ArcSDE requis est copié ou créé dans le dossier ToolData avec toutes les autres données requises pour une exécution sans erreur de l'outil.

Structure des dossiers de partage de l'outil

Les outils de modèle et de script que vous créez doivent pouvoir accéder au fichier de connexion ArcSDE qui se trouve dans le dossier ToolData en utilisant un chemin d'accès relatif au fichier de connexion.

Une autre méthode d'accès consiste à stocker le fichier de connexion ArcSDE à un emplacement accessible sur le réseau. L'outil accède ensuite à ce fichier de connexion ArcSDE à partir d'un chemin UNC.

Vous avez peut-être remarqué que la procédure n'est pas vraiment différente de la manière dont vous partagez les autres données de géodatabase, telles que les données de géodatabase fichier. Pour les géodatabases fichier, vous devez également indiquer le dossier de la géodatabase fichier (ce qui revient à indiquer le fichier de connexion ArcSDE) avec les outils ou fournir l'accès à la géodatabase fichier sur le réseau pour que les outils accèdent aux données à partir de chemins UNC.

Pour en savoir plus sur les outils de partage


7/10/2012