Inscription en mémoire de la sortie de géotraitement

Écrire les sorties de géotraitement en mémoire constitue une alternative à l’écriture de la sortie au format géodatabase ou fichier. Les données sont consignées beaucoup plus rapidement que dans les formats sur disque. Les données écrites en mémoire sont temporaires et sont supprimées lors de la fermeture de l’application. L’espace de travail en mémoire est un emplacement de choix pour inscrire des données intermédiaires dans un modèle ModelBuilder ou un script Python.

Espaces de travail en mémoire

ArcGIS fournit deux espaces de travail en mémoire dans lesquels les sorties de géotraitement peuvent être inscrites.

espace de travail en mémoire

L’espace de travail memory est l’espace de travail en mémoire qui prend en charge les classes d’entités en sortie, les tables et les jeux de données raster.

Pour écrire des données dans l’espace de travail memory, indiquez un chemin d’accès au jeu de données en sortie qui commence par memory\, sans extension de fichier ; par exemple, memory\tempOutput.

Vous pouvez ajouter les jeux de données memory sur une carte dans ArcGIS Pro.

Espace de travail in_memory

Héritage :

L’espace de travail in_memory est l’espace de travail en mémoire construit pour ArcMap qui prend en charge les classes d’entités en sortie, les tables et les jeux de données raster.

Pour écrire des données dans l’espace de travail in_memory, indiquez un chemin d’accès au jeu de données en sortie qui commence par in_memory\, sans extension de fichier ; par exemple, in_memory\tempOutput.

Remarque :

Un outil de géotraitement ne peut pas ajouter une sortie in_memory à une carte. Après avoir créé une sortie in_memory, l’outil la copie dans la géodatabase du projet. Il ajoute ensuite cette sortie à la carte à partir de la géodatabase du projet. Pour afficher des données en mémoire sur une carte, utilisez l’espace de travail en mémoire à la place.

La copie dans la géodatabase du projet n’a pas lieu si les jeux de données in_memory sont intermédiaires et ne sont pas ajoutés à une carte.

À la différence de l’espace de travail memory, l’espace de travail in_memory ne prend pas en charge les sous-types ou les domaines.

Gérer l’espace de travail en mémoire

Les données de l’espace de travail memory ne peuvent être gérées qu’à l’aide d’outils de géotraitement, et elles ne s’affichent ni dans la fenêtre Catalog (Catalogue), ni dans la vue Catalog (Catalogue). Pour identifier les couches d’une carte qui disposent d’une source de données en mémoire, dans la fenêtre Contents (Contenu), cliquez sur le bouton List By Data Source (Répertorier par source de données) Répertorier par source de données ; les sources de données en mémoire sont alors répertoriées sous l’espace de travail InMemoryDB\GPProMemoryWorkspace.

Vous pouvez également obtenir une liste de jeux de données dans l’espace memory en utilisant les fonctions de liste ArcPy.

# Set the workspace and list the data saved to memory
arcpy.env.workspace = "memory"

print(f"Memory Feature Classes: {arcpy.ListFeatureClasses()}")
print(f"Memory Rasters: {arcpy.ListRasters()}")
print(f"Memory Tables: {arcpy.ListTables()}")

Lorsque vous utilisez un espace de travail en mémoire, supprimez dès que possible toutes les données intermédiaires, afin de libérer des ressources système en matière de mémoire. L’outil Supprimer permet de supprimer des données dans l’espace de travail en mémoire. Supprimez des jeux de données ou l’ensemble de l’espace de travail pour effacer le contenu de l’espace de travail.

Utiliser l’espace de travail en mémoire dans Python

L’utilisation des espaces de travail en mémoire dans Python n’est valide que pour les outils de géotraitement. La mémoire n’est pas un répertoire virtuel à usage général dans lequel des fichiers ou d’autres données peuvent être inscrits.

Utilisez l’espace de travail memory comme l’indique l’exemple de code ci-dessous :

import arcpy

# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"

# Buffer a Roads layer, writing output to memory 
arcpy.analysis.Buffer("Roads", r"memory\Buffers", 1000)

# Erase the buffers from a Vegetation layer
arcpy.analysis.Erase("Vegetation", r"memory\Buffers", r"memory\Erased")

# Dissolve the memory output of Erase to make a final output in the gdb workspace
arcpy.management.Dissolve(r"memory\Erased", "FinalOutput")

Limitations

Les espaces de travail en mémoire présentent les limitations suivantes :

  • Les espaces de travail en mémoire ne prennent pas en charge les éléments de géodatabase, tels que les jeux de classes d’entités, les classes de relations, les règles attributaires, les valeurs conditionnelles, les groupes de champs, les index spatiaux ou attributaires, les représentations, les topologies, les réseaux géométriques et les jeux de données réseau.
  • L’outil Copier ne prend pas en charge les jeux de données en entrée ou en sortie provenant d’un espace de travail en mémoire. Pour copier des jeux de données dans un espace de travail en mémoire, utilisez les outils Copier des entités ou Exporter des entités.
  • L’outil Tronquer une table ne prend pas en charge les données en entrée provenant d’espaces de travail en mémoire.
  • Les espaces de travail en mémoire étant stockés dans la mémoire physique (RAM) de votre système, votre système risque de manquer de mémoire si vous consignez des jeux de données volumineux dans l’espace de travail. Les performances de traitement risquent alors d’être ralenties.
  • Il est impossible de créer des dossiers dans les espaces de travail en mémoire.
  • Les espaces de travail en mémoire prennent en charge des modifications de champ attributaire et de structure limitées avec Modifier le champ et d’autres outils. Vous pouvez modifier les alias de champ, mais pas les noms de champ ou d’autres propriétés.