Gestion des données intermédiaires dans les modèles partagés

Des données intermédiaires sont créées et supprimées lors de l'exécution d'un outil de modèle. Dans la majorité des cas, vous n'avez pas à vous occuper des données intermédiaires, même avec des modèles partagés. Dans certains cas, toutefois, les outils de modèle ne parviennent pas à créer des données intermédiaires, ce qui provoque l'échec du modèle. En outre, les messages d'erreur que vous (ou votre utilisateur) recevez peuvent ne pas pointer directement sur le problème. Par exemple, le message peut contenir "Erreur inattendue" alors qu'en fait l'outil ne peut pas écrire sa sortie parce que le dossier ou la géodatabase n'existe pas.

Vous pouvez également rencontrer un problème au niveau des performances si vous ne tenez pas compte de l'emplacement de vos données intermédiaires. Il est conseillé d'éviter d'envoyer vos données intermédiaires sur une machine distante ou sur une géodatabase ArcSDE. La surcharge liée à la communication sur le réseau avec le système de fichiers distant ou la base de données distante est souvent trop coûteuse et peut entraîner un ralentissement considérable des performances de votre modèle.

La méthode la plus simple pour s'assurer que vos modèles peuvent créer et supprimer des données intermédiaires est la suivante :

La procédure est la suivante :

  1. Dans la fenêtre Catalogue, cliquez avec le bouton droit sur l'outil de modèle puis sur Modifier. Cette opération ouvre ModelBuilder.
  2. Dans ModelBuilder, cliquez avec le bouton droit sur toutes les variables de données intermédiaires, puis sélectionnez Géré. Une coche Coche apparaît en regard de Géré.
  3. Enregistrez et fermez le modèle.
  4. Dans le menu Géotraitement, choisissez Environnements et cliquez sur Espace de travail.
  5. Pour le paramètre Espace de travail temporaire, spécifiez une nouvelle géodatabase fichier ou laissez-le pointer sur la géodatabase par défaut.
  6. Cliquez sur OK.
  7. Exécutez votre modèle en double-cliquant sur l'outil de modèle dans la fenêtre Catalogue, en entrant des paramètres, puis en cliquant sur OK. Si des erreurs se manifestent encore, vérifiez une nouvelle fois que vous avez converti toutes les variables de données intermédiaires en variables gérées et que l'espace de travail temporaire est défini correctement. Si des problèmes subsistent, l'une des situations suivantes est vérifiée :
    • Le problème ne concerne pas les données intermédiaires.
    • Le modèle est en train de réinitialiser l'environnement d'espace de travail temporaire. Vérifiez les paramètres d'environnement de modèle :
      1. Dans la fenêtre Catalogue, cliquez avec le bouton droit sur votre outil de modèle et cliquez sur Propriétés.
      2. Dans la boîte de dialogue des propriétés, cliquez sur l'onglet Environnements.
      3. Si la case à cocher en regard de Espace de travail est activée, cliquez sur le signe plus.
      4. Mettez en surbrillance Espace de travail temporaire en cliquant dessus, puis cliquez sur le bouton Valeurs.
      5. Si le paramètre Environnement d'espace de travail temporaire contient un chemin d'accès à un espace de travail, vérifiez que ce dernier existe. (Vous pouvez vérifier cela en cliquant sur Parcourir Ouvrir et en accédant à l'emplacement.) Si l'espace de travail n'existe pas, entrez le chemin d'accès à un espace de travail existant.

Gestion des données intermédiaires par les modèles

Vous devez vous assurer que chaque modèle que vous partagez dispose d'un emplacement pour créer et supprimer ses données intermédiaires. La méthode la plus simple consiste à convertir toutes vos données intermédiaires en données gérées, comme décrit dans les étapes précédentes.

La suite de cette rubrique fournit une présentation détaillée de la façon dont le géotraitement gère les données intermédiaires et vous donne la perspective nécessaire pour résoudre les problèmes. Les sections suivantes expliquent

comment les chemins d'accès en sortie sont générés automatiquement,

Lorsque vous ouvrez un outil et que vous fournissez des jeux de données en entrée, l'emplacement des données en sortie est créé automatiquement. Ce nom généré automatiquement est construit à l'aide de l'emplacement de l'espace de travail temporaire s'il est défini ou, s'il n'est pas défini, à l'aide de l'emplacement de l'espace de travail courant. La variable des données en sortie contient le nom généré automatiquement, que cette variable soit éventuellement convertie en données intermédiaires, en données gérées ou en paramètre d'outil.

Lorsque vous distribuez vos modèles, les destinataires auront certainement des paramètres différents pour l'espace de travail temporaire ou courant et ils voudront que leurs paramètres d'environnement s'appliquent. Autrement dit, lorsqu'ils ouvriront et exécuteront la boîte de dialogue de l'outil pour votre modèle, ils voudront que toutes les données intermédiaires soient écrites dans leur espace de travail temporaire, comme cela est défini dans leurs environnements. Cela se produira à condition que vous ne modifiiez pas le nom généré automatiquement dans vos variables de données, comme décrit ci-dessus.

Etat modifié des variables de données

Chaque fois que vous modifiez la valeur d'une variable dans ModelBuilder, la variable est considérée modifiée. Lorsqu'une variable est modifiée, ArcGIS part du principe que vous voulez utiliser la valeur modifiée et que vous ne la modifierez plus jamais. Si la variable modifiée contient un chemin d'accès aux dossiers ou aux espaces de travail qui n'existent pas sur l'ordinateur d'un autre utilisateur, le modèle échouera.

Si la variable est un jeu de données en sortie et que sa valeur est vide ou inchangée, les outils de géotraitement généreront automatiquement un chemin d'accès. Vous voulez profiter de cela et laisser inchangés les paramètres de jeu de données en sortie, afin que les outils de géotraitement génèrent automatiquement un chemin d'accès à votre place.

Dans ModelBuilder, vous n'avez aucune possibilité de déterminer si une variable de données est considérée modifiée, mais vous pouvez réinitialiser l'état modifié d'une variable en supprimant (effaçant) la valeur existante, puis en validant le modèle entier. Le processus de validation constatera alors que la valeur en sortie est vierge, générera automatiquement un nouveau nom pour les données intermédiaires, puis marquera la variable de données comme inchangée. Toutefois, une méthode plus efficace consiste à définir la variable comme Gérée, comme cela est décrit ci-dessous.

Utilisation de données gérées

Vous pouvez décider que ModelBuilder gérera l'emplacement des données intermédiaires (à l'aide de la logique décrite). Vous pouvez définir une variable de données comme gérée en cliquant avec le bouton droit sur la variable et en cliquant sur l'option Géré. Une fois que vous avez défini une variable comme gérée, vous ne pouvez pas modifier le chemin en sortie dans ModelBuilder (le contrôle de paramètre sera toujours indisponible). Cela signifie que l'état des données gérées ne peut pas être modifié et que les données auront un nouveau chemin d'accès généré automatiquement chaque fois que le modèle s'exécutera.

Pour en savoir plus sur les données gérées

Utilisation de %scratchworkspace%

Les outils de script personnalisés peuvent ou ne peuvent pas fournir un chemin d'accès en sortie généré automatiquement. S'ils n'en fournissent pas une, vous pouvez utiliser la substitution de variable dans ModelBuilder pour vos chemins d'accès en sortie, comme illustré ci-dessous.

Utilisation de la substitution de variable

Le problème principal lié à l'utilisation de la substitution de variable réside dans le fait que vous savez rarement si %scratchworkspace% sera un dossier système ou une géodatabase lorsque l'outil sera exécuté. Si, lorsque vous construisez votre modèle dans ModelBuilder, votre espace de travail temporaire est un espace de travail de fichier de formes (un dossier), ModelBuilder ajoute automatiquement .shp au nom du jeu de données d'entité (autrement dit, si vous entrez %scratchworkspace%/temp, ModelBuilder le remplace automatiquement par %scratchworkspace%/temp.shp). Plus tard, si vous convertissez votre espace de travail temporaire en une géodatabase fichier et exécutez l'outil de modèle à l'aide de sa boîte de dialogue, le modèle échoue car il essaie d'écrire temp.shp dans la géodatabase fichier, et les géodatabases ne peuvent pas contenir caractères spéciaux, tels que le point figurant dans .shp.

Il existe seulement deux cas où vous pouvez prévoir sans risque le type d'espace de travail temporaire :

Ces deux cas sont examinés plus en détails ci-dessous.

Espaces de travail temporaires d'ArcGIS Server

Lorsqu'un outil serveur est exécuté sur le serveur, ArcGIS Server crée un dossier de tâche unique pour l'outil à utiliser. Ce dossier de tâche contient un dossier nommé scratch, lequel contient une géodatabase fichier nommée scratch.gdb, comme illustré ci-dessous.

Emplacement des données intermédiaires et des données en sortie

ArcGIS Server définit l'environnement d'espace de travail temporaire au niveau de l'application sur l'emplacement de ce dossier scratch unique. Il ignore les paramètres de niveau outil, modèle ou processus modèle pour l'espace de travail temporaire. Lors de l'exécution de l'outil de serveur, l'emplacement de toute variable de données en sortie intermédiaire ou gérée sera réinitialisé pour utiliser l'espace de travail temporaire du dossier de tâche, à moins que la variable de données ne soit pas gérée et ait été modifiée.

Comme ArcGIS Server crée toujours ce dossier scratch avec une géodatabase temporaire et définit l'environnement d'espace de travail temporaire sur le dossier scratch, vous pouvez utiliser sans risque la substitution de variable pour tous les chemins d'accès en sortie. Par exemple :

%scratchworkspace%/output_buffer.shp
%scratchworkspace%/scratch.gdb/outBuffer

Utilisation de la structure de dossiers de partage

Une structure de partage des outils correspond à une structure de dossiers recommandée, nommée dossier ToolShare, illustrée ci-dessous.

Structure de dossiers Toolshare

Cette structure de dossiers ToolShare permet de partager efficacement des outils, que vous partagiez sur un réseau local ou publiiez sur ArcGIS Server.

Notez que comme le dossier de tâche unique créé par ArcGIS Server, le dossier ToolShare contient un dossier scratch et une géodatabase scratch.gdb. Vous pouvez configurer votre modèle afin que les données intermédiaires soient toujours écrites dans ce dossier scratch, comme suit :

  • Définissez l'espace de travail temporaire d'environnement de modèle sur le dossier scratch dans le dossier de partage.
  • Configurez la boîte à outils pour qu'elle utilise des chemins relatifs.
  • Dans votre modèle, utilisez la substitution de variable pour toutes les données intermédiaires.

    %scratchworkspace%/output_buffer.shp
     %scratchworkspace%/scratch.gdb/outBuffer

L'utilisation de %scratchworkspace% dans un paramètre de modèle utilisera l'espace de travail temporaire au niveau de l'application, pas l'espace de travail temporaire au niveau du modèle, si bien que vous ne voudrez utiliser cette méthode que pour des variables de données autres que des paramètres, telles que les données intermédiaires.

Si vous utilisez cette méthode lors du partage de votre boîte à outils sur un réseau local, toute exécution de vos outils entraînera l'écriture de données intermédiaires dans ce dossier scratch. Vous trouverez ci-après un exemple de configuration :

Exemple de configuration
  • Un utilisateur sur \\pondermatic ajoute une connexion de dossier à votre dossier de partage \\cogitator\GPTools.
  • Il ouvre et exécute ensuite un outil inclus dans la boîte à outils RetailFunctions.
  • Comme vous avez stocké la boîte à outils RetailFunctions avec les chemins relatifs, l'emplacement de l'espace de travail temporaire, %scratchworkspace%, s'étend jusqu'à \\cogitator\GPTools\scratch et toutes les données intermédiaires sont écrites dans \\cogitator\GPTools\Scratch.

Vous êtes seul à décider si vous voulez utiliser cette méthode pour le partage sur un réseau local. Le premier point à prendre en compte correspond au fait que vous vouliez ou non accorder des autorisations à d'autres utilisateurs pour écrire des données dans votre dossier partagé. Deuxièmement, l'écriture de données sur un réseau local est généralement plus lente que leur enregistrement sur un disque local. Il est préférable d'utiliser l'environnement d'espace de travail temporaire défini par l'utilisateur de l'outil. Toutefois, comme indiqué ci-dessus, vous ne savez pas si l'utilisateur a défini son espace de travail temporaire sur un dossier ou une géodatabase. Cette méthode vous permet de savoir le type d'espace de travail temporaire.

Ecriture des données temporaires dans l'espace de travail in_memory

Le géotraitement fournit un espace de travail temporaire dans lequel vous pouvez écrire des entités et des tables.

Pour en savoir plus sur l'espace de travail temporaire

  • RemarqueRemarque :

    seules des tables et des classes d'entités (points, lignes et polygones) peuvent être écrites dans l'espace de travail in_memory. L'espace de travail in_memory ne prend pas en charge les éléments de géodatabase étendus, tels que les sous-types, les domaines, les représentations, les topologies, les réseaux géométriques et les jeux de données réseau. Seules des entités et des tables simples peuvent être écrites.

    ne définissez pas votre environnement d'espace de travail temporaire sur l'espace de travail in_memory. Utilisez in_memory uniquement pour les sorties que vous savez être des entités ou des tables simples.

Soyez très prudent en utilisant des espaces de travail temporaires. Vous souhaitez uniquement écrire dans l'espace de travail in_memory des jeux de données dont vous savez qu'ils seront de petite taille.

Données temporaires dans les scripts

Dans vos scripts, vous avez souvent besoin de construire un emplacement pour écrire des données temporaires.

Pour en savoir plus sur la création de données temporaires dans les scripts

Rubriques connexes


7/10/2012