Überlegungen bei der Verwendung des In-Memory-Workspace

ArcGIS-Anwendungen, ArcGIS Pro und ArcMap, sowie ArcGIS Server verfügen über einen systemspeicherbasierten Workspace, den In-Memory-Workspace, in den Ausgabe-Feature-Classes, Tabellen und Raster-Datasets geschrieben werden können. Der In-Memory-Workspace ist eine Alternative zum Schreiben von Ausgaben in Dateien oder File- und Enterprise-Geodatabases. Das Schreiben in den In-Memory-Workspace ist häufig erheblich schneller, jedoch nicht immer. Daten, die in den In-Memory-Workspace geschrieben werden, sind temporär und gehen beim Schließen der Anwendung verloren, sodass der In-Memory-Workspace ideal für temporäre Daten geeignet ist, die in einem Modell oder Python-Skript erstellt wurden.

Um Daten in den In-Memory-Workspace zu schreiben, geben Sie einen Ausgabe-Dataset-Pfad an, der mit "in_memory" beginnt, z. B. in_memory/outputParcels.

Vorsicht:
Der In-Memory-Workspace unterstützt keine Geodatabase-Elemente wie Subtypes, Domänen, Repräsentationen, Topologien, geometrische Netzwerke, Netzwerk-Datasets oder Feature-Datasets.

Verwenden des In-Memory-Workspace mit ArcGIS Pro

ArcGIS Pro ist eine 64-Bit-Multi-Thread-Anwendung. Jedes 64-Bit-Softwareprogramm kann mehr RAM als eine 32-Bit-Softwareanwendung nutzen, wodurch jede Anwendung auf 3 GB RAM beschränkt ist. Durch die gleichzeitige Ausführung einzelner Geoverarbeitungswerkzeuge im Bereich "Geoverarbeitung" oder im Python-Fenster wird der In-Memory-Workspace nicht optimal genutzt; dies kann sogar zu Performance-Einbußen führen. Da ArcGIS Pro eine Multithread-Anwendung ist, kann es mehrere CPUs nutzen, um mehrere Tasks gleichzeitig auszuführen. Ein Geoverarbeitungsvorgang, der in den In-Memory-Workspace schreibt, hält das Ergebnis dieses Vorgangs in einem bestimmten Teil des Speichers, der anderen Threads nicht zur Verfügung steht. Die Ausgabe muss auf der Festplatte (in einem Ordner oder einer Geodatabase) gespeichert werden, damit alle je nach Ausgabe in Aktion treten können. Wenn Sie die Ausgabe aus einem einzelnen Geoverarbeitungsvorgang in den In-Memory-Workspace schreiben, wird die Ausgabe dort erstellt und in eine Geodatabase kopiert, bevor sie in der Anwendung angezeigt wird. Wie bereits erwähnt, sollte der In-Memory-Workspace nur zum Erstellen von Zwischendaten in Modellen und Skripten verwendet werden. Ein Modell- oder Skriptwerkzeug wird in einem einzelnen Thread ausgeführt und hat Zugriff auf denselben In-Memory-Workspace; eine Reihe verketteter Werkzeuge haben im Allgemeinen eine schnellere Performance als eine Reihe von Werkzeugen, die aus einem Datenträger lesen bzw. in diesen schreiben.

Verwalten des In-Memory-Workspace

Bei Verwendung des In-Memory-Workspace können Sie Zwischendaten so schnell wie möglich löschen, um Systemspeicher freizugeben. Das Werkzeug Löschen kann zum Löschen von Daten im In-Memory-Workspace verwendet werden. Sie können einzelne Datasets oder den ganzen Workspace löschen, um den gesamten Workspace-Inhalt zu löschen. Der leere In-Memory-Workspace ist zur künftigen Verwendung weiterhin verfügbar.

Verwenden von In-Memory mit Modellen

Beim Erstellen von Modellen werden Werkzeuge über Ein- und Ausgabeparameter verbunden. Daten, die in der Ausgabe eines Werkzeugs enthalten sind und als Eingabe zur weiteren Verarbeitung verwendet werden, werden im Allgemeinen als Zwischendaten bezeichnet. Das Schreiben von Zwischenausgaben in den In-Memory-Workspace kann die Gesamtausführungszeit des Modells reduzieren, wenn es in ArcGIS Pro verwendet wird. Ein zusätzlicher Vorteil der Konstruktion eines Modells, das den In-Memory-Workspace verwendet, liegt darin, dass es den In-Memory-Workspace bei Ausführung auf dem Server weiterhin verwendet, wenn es als Webwerkzeug in ArcGIS Enterprise freigegeben wird.

Als Parameter definierte Ausgaben werden der Karte standardmäßig hinzugefügt, wenn ein Modell als Werkzeug ausgeführt wird. Diese Ausgaben können in den In-Memory-Workspace geschrieben werden, sie werden beim Ausführen des Werkzeugs jedoch in einer lokalen Geodatabase in eine Feature-Class konvertiert. Anstatt die Ausgabe im In-Memory-Workspace zu erstellen und letztlich in eine Feature-Class konvertieren zu lassen, können Sie Modellparameter in Ihre %scratchGDB% oder einen anderen vollständigen Pfad auf der Festplatte schreiben, sodass die Konvertierung nur einmal stattfindet.

Hinweis:
Beim Schreiben in In-Memory kann die Parameteroption Zur Anzeige hinzufügen nicht verwendet werden. Die Geoverarbeitungsausgabe muss auf die Festplatte oder in eine Geodatabase geschrieben werden, um in der Karte angezeigt zu werden.

Verwenden von In_Memory mit Python und arcpy

Die Verwendung des In-Memory-Workspace mit Python-Skriptwerkzeugen bietet dieselben Vorteile wie die Verwendung von Modellwerkzeugen. Das Schreiben von Zwischendaten in den In-Memory-Workspace erfolgt im Vergleich zum Schreiben der Ausgabe auf die Festplatte in der Regel schneller. Im folgenden Beispiel werden Zwischen-Datasets im In-Memory-Workspace für die Werkzeuge Puffer und Radieren erstellt. Die FinalOutput des Werkzeugs Zusammenführen (Dissolve) erstellt eine Feature-Class in der Habitat-Geodatabase, wie in der Workspace-Einstellung definiert.

Erstellen der Ausgabe im In-Memory-Workspace

import arcpy
# Set the geoprocessing workspace
arcpy.env.workspace = r"C:\Data\Habitat.gdb"
# Buffer a Roads layer, writing output to in_memory 
arcpy.Buffer_analysis("Roads", "in_memory/Buffers", 1000)
# Erase the buffers from a Vegetation layer
arcpy.Erase_analysis("Vegetation", "in_memory/Buffers", "in_memory/Erased")
# Dissolve the in_memory output of Erase to make a final output
arcpy.Dissolve_management("in_memory/Erased", "FinalOutput")