Gestion des données intermédiaires (temporaires) dans les outils de script et les modèles partagés
Les données temporaires sont utilisées par les outils et supprimées après exécution. Dans ModelBuilder, les données temporaires sont appelées données intermédiaires. Les données marquées comme intermédiaires dans ModelBuilder sont automatiquement supprimées, après exécution de l'outil de modèle. Toutefois, dans les scripts, vous devez supprimer manuellement les données temporaires.
Si vous partagez votre outil via un paquetage ou un service de géotraitement, il n'est pas nécessaire d'apporter des modifications aux modèles ou aux scripts pour gérer les données temporaires ou intermédiaires. Les techniques qui sont décrites ci-dessous s'appliquent uniquement si vous partagez votre boîte à outils personnalisée, c'est à dire que vous ne partagez pas un paquetage ou un service, mais mettez votre boîte à outils (fichier .tbx) à la disposition d'un autre utilisateur. Dans ce cas, vous devez vous assurer de la portabilité de vos outils, en écrivant les données intermédiaires ou temporaires dans un emplacement qui existe sur tous les ordinateurs qui exécutent votre outil.
A chaque fois que vous partagez une boîte à outils contenant vos outils de modèle et de script, vous devez disposer d'un emplacement (dossier ou géodatabase) dans lequel vos outils peuvent écrire les données temporaires ou intermédiaires. Il existe deux environnements en lecture seule, Géodatabase temporaire et Dossier temporaire, destinés à recevoir les données temporaires ou intermédiaires. Ces deux environnements sont une nouveauté d'ArcGIS 10.1.
Données intermédiaires dans les modèles
Toutes les données intermédiaires doivent être marquées comme telles et écrites dans le dossier ou la géodatabase temporaire. L'illustration ci-dessous présente la variable de données Intersection de centroïdes signalée comme intermédiaire, dont l'emplacement en sortie est la géodatabase temporaire (%scratchGDB%). Le signe de pourcentage (%) indique la substitution d'une variable ; la valeur de scratchGDB est développée à l'exécution de l'outil modèle, et une classe d'entités nommée poly_Intersect est écrite dans la géodatabase temporaire. De la même façon, vous pouvez faire appel à %scratchFolder% pour écrire des données basées sur un fichier, telles que les fichiers de formes, les fichiers .lyr ou .txt.
Lors de l'écriture de classes d'entités intermédiaires, vous pouvez être tenté d'écrire des fichiers de formes dans le dossier temporaire. Evitez cette pratique et écrivez les données d'entité dans la géodatabase temporaire, car les fichiers de formes présentent des restrictions relativement strictes pouvant affecter la portabilité de vos outils. Pour plus d'informations sur les fichiers de formes et les restrictions afférentes, reportez-vous à la rubrique Remarques concernant le géotraitement pour la sortie de fichiers de formes.
Vous pouvez également écrire les données intermédiaires dans l'espace de travail temporaire.
Gestion des données temporaires dans les outils de script
Les données intermédiaires des outils de script doivent être écrites dans le dossier ou la géodatabase temporaire. Le code ci-dessous permet de copier une classe d'entités dans une géodatabase temporaire et de la supprimer après exécution.
import arcpy
import os
inFC = arcpy.GetParameterAsText(0)
tempFC = arcpy.env.scratchGDB + os.path.sep + "tempFC"
arcpy.CopyFeatures_management(inFC, tempFC)
# Do some work here...
# Clean up when done...
#
arcpy.Delete_management(tempFC)
Dans un script, vous pouvez également écrire des données dans l'espace de travail temporaire. Par exemple :
import arcpy
table = arcpy.CreateTable_management("in_memory", "table1")
arcpy.AddField_management(table, "Field1", "TEXT", field_length=20)
cursor = arcpy.da.InsertCursor(table, ["Field1"])
cursor.insertRow(["Hello World"])
L'espace de travail in_memory n'est valide que pour les outils de géotraitement. Il ne s'agit pas d'un répertoire virtuel à usage général dans lequel vous pouvez écrire n'importe quelles données.
Espace de travail temporaire
L'environnement de l'Espace de travail temporaire est utilisé par ModelBuilder comme emplacement des données intermédiaires et en sortie. Cet environnement peut être défini par vous (ou l'utilisateur de l'outil) dans n'importe quel emplacement : un dossier, une géodatabase, voire un jeu de données d'entité dans une géodatabase. L'utilisation de l'environnement d'espace de travail temporaire avec des outils destinés à être partagés n'est pas recommandée, car l'utilisateur de l'outil peut définir l'environnement d'espace de travail temporaire dans un dossier, une géodatabase ou un jeu de données d'entité. Par exemple, vous pouvez vous attendre à ce que l'espace de travail temporaire soit défini dans un dossier pour que vous puissiez produire un fichier de couches en sortie, mais l'utilisateur de l'outil le définit comme étant une géodatabase. L'outil échoue lors de son exécution, car il ne peut pas écrire votre fichier de couches dans une géodatabase. C'est pourquoi, afin de fournir une géodatabase connue et un dossier connu dans lesquels écrire vos données, les environnements de géodatabase et de dossier temporaires ont été introduits dans la version 10.1.