Das Schreiben der Geoverarbeitungsausgabe in den Speicher ist eine Alternative zum Schreiben der Ausgabe in eine Geodatabase oder ein dateibasiertes Format. Es ist häufig beträchtlich schneller als das Schreiben in Formate auf dem Datenträger. In den Speicher geschriebene Daten sind temporär und werden gelöscht, wenn die Anwendung geschlossen wird. Der memory-Workspace ist einer idealer Speicherort, um Zwischendaten in ein ModelBuilder-Modell oder Python-Skript zu schreiben.
Speicherbasierte Workspaces
ArcGIS bietet zwei speicherbasierte Workspaces, in die Geoverarbeitungsausgaben geschrieben werden können.
memory-Workspace
Der memory-Workspace ist ein speicherbasierter Workspace, der Ausgabe-Feature-Classes, Tabellen und Raster-Datasets unterstützt.
Um Daten in den memory-Workspace zu schreiben, geben Sie einen Ausgabe-Dataset-Pfad an, der mit memory\ beginnt und keine Dateierweiterung aufweist, z. B. memory\tempOutput.
Sie können memory-Datasets in ArcGIS Pro zu einer Karte hinzufügen.
In-Memory-Workspace
Vorversion:
Der in_memory-Workspace ist der ältere speicherbasierte Workspace für ArcMap, der Ausgabe-Feature-Classes, Tabellen und Raster-Datasets unterstützt.
Um Daten in den in_memory-Workspace zu schreiben, geben Sie einen Ausgabe-Dataset-Pfad an, der mit in_memory\ beginnt und keine Dateierweiterung aufweist, z. B. in_memory\tempOutput.
Hinweis:
Ein Geoverarbeitungswerkzeug kann keine in_memory-Ausgabe zu einer Karte hinzufügen. Nach der Erstellung einer in_memory-Ausgabe mit einem Werkzeug wird die Ausgabe in die Projekt-Geodatabase kopiert. Das Werkzeug fügt dann die Ausgaben aus der Projekt-Geodatabase der Karte hinzu. Um speicherbasierte Daten in einer Karte anzuzeigen, können Sie stattdessen den memory-Workspace verwenden.
Das Kopieren in die Projekt-Geodatabase erfolgt nicht, wenn in_memory-Datasets Zwischen-Datasets sind und keiner Karte hinzugefügt werden.
Im Gegensatz zum memory-Workspace unterstützt der in_memory-Workspace keine Subtypes oder Domänen.
Verwalten des memory-Workspace
Daten im memory-Workspace können nur mit Geoverarbeitungswerkzeugen verwaltet werden und werden weder im Bereich Katalog noch in der Ansicht Katalog angezeigt. Um zu sehen, bei welchen Layern eine Speicher-Datenquelle vorhanden ist, klicken Sie im Bereich Inhalt auf die Schaltfläche Nach Datenquelle auflisten . Die Speicher-Datenquellen werden dann unter dem Workspace InMemoryDB\GPProMemoryWorkspace aufgelistet.
Sie können auch ArcPy-Listenfunktionen verwenden, um eine Liste der Datasets im memory-Bereich abzurufen.
# 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()}")
Bei der Verwendung eines speicherbasierten Workspace müssen Sie Zwischenergebnisse so schnell wie möglich löschen, um Systemspeicherressourcen wieder freizugeben. Das Werkzeug Löschen kann zum Löschen von Daten in einem speicherbasierten Workspace verwendet werden. Löschen Sie einzelne Datasets oder den ganzen Workspace, um den gesamten Workspace-Inhalt zu löschen.
Verwenden des memory-Workspace in Python
Die Verwendung von speicherbasierten Workspaces in Python gilt nur für Geoverarbeitungswerkzeuge. Der Speicher ist kein virtuelles Allzweckverzeichnis, in das Dateien oder andere Daten geschrieben werden können.
Der memory-Workspace kann wie im folgenden Codebeispiel gezeigt verwendet werden:
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")
Einschränkungen
Für speicherbasierte Workspaces gelten die folgenden Einschränkungen:
- Speicherbasierte Workspaces unterstützen keine Geodatabase-Elemente wie Feature-Datasets, Beziehungsklassen, Attributregeln, Gruppenwerte, Feldgruppen, räumliche Indizes oder Attributindizes, Repräsentationen, Topologien, geometrische Netzwerke oder Netzwerk-Datasets.
- Das Werkzeug Kopieren bietet keine Unterstützung für Eingabe- oder Ausgabe-Datasets aus einem speicherbasierten Workspace. Verwenden Sie die Werkzeuge Features kopieren oder Features exportieren, um Datasets in einen memory-Workspace zu kopieren.
- Das Werkzeug Tabelle kürzen bietet keine Unterstützung für Eingabedaten aus speicherbasierten Workspaces.
- Da speicherbasierte Workspaces im physischen Speicher Ihres Systems (RAM) gespeichert werden, kann es sein, dass Ihr System nicht über genügend Speicher verfügt, wenn Sie große Datasets in den Workspace schreiben. Dies kann sich negativ auf die Verarbeitungsleistung auswirken.
- In speicherbasierten Workspaces können keine Ordner erstellt werden.
- In memory-Workspaces werden Attributfeld- und Schemaänderungen nur eingeschränkt mit dem Werkzeug Feld ändern und anderen Werkzeugen unterstützt. Sie können Feldaliasnamen ändern, nicht jedoch Feldnamen oder andere Eigenschaften.