Verwalten von Zwischendaten (Scratch-Daten) in freigegebenen Modell- und Skriptwerkzeugen

Scratch-Daten werden von Ihrem Werkzeug verwendet und nach der Ausführung des Werkzeugs gelöscht. In ModelBuilder werden Scratch-Daten als Zwischendaten bezeichnet. In ModelBuilder als Zwischendaten markierte Daten werden nach der Ausführung des Modellwerkzeugs automatisch gelöscht. In Skripten sind Sie jedoch selbst für das Löschen von Scratch-Daten verantwortlich.

HinweisHinweis:

Wenn Sie ein Werkzeug mit einem Geoverarbeitungspaket oder -Service freigeben, müssen Sie keine Änderungen an den Modellen oder Skripten vornehmen, um Scratch- oder Zwischendaten zu verwalten. Die unten beschriebenen Verfahren gelten nur für die Freigabe Ihrer benutzerdefinierten Toolbox – d. h., Sie geben kein Paket und keinen Service frei, sondern geben Ihre Toolbox (.tbx-Datei) weiter. In diesem Fall müssen Sie sicherstellen, dass Ihre Werkzeuge portabel sind, indem Sie Scratch- und Zwischendaten an einen Speicherort schreiben, der auf jedem Computer vorhanden ist, auf dem das Werkzeug ausgeführt wird.

Wenn Sie eine Toolbox mit Modell- und Skriptwerkzeugen für andere freigeben, benötigen Sie einen Speicherort – einen Ordner oder eine Geodatabase –, in den die Scratch- oder Zwischendaten von den Werkzeugen geschrieben werden können. Es gibt zwei schreibgeschützte Umgebungen, Scratch-GDB (Scratch-Geodatabase) und Scratch-Ordner, in die Sie Scratch- und Zwischendaten schreiben können. Diese beiden Umgebungen wurden in ArcGIS 10.1 eingeführt.

Zwischendaten in Modellen

Alle Zwischendaten sollten entsprechend gekennzeichnet und entweder in den Scratch-Ordner oder die Scratch-Geodatabase geschrieben werden. In der Abbildung unten wird die Datenvariable Centroids Intersect dargestellt, die als temporär gekennzeichnet ist. Das zugehörige Ausgabeverzeichnis ist die Scratch-Geodatabase (%scratchGDB%). Die Prozentzeichen (%) kennzeichnen die Variablenersetzung. Der Wert von scratchGDB wird eingeblendet, wenn das Modellwerkzeug ausgeführt wird. Eine Feature-Class mit der Bezeichnung poly_Intersect wird in die Scratch-Geodatabase geschrieben. In ähnlicher Weise können Sie %scratchFolder% zum Schreiben dateibasierter Daten verwenden, wie beispielsweise LYR- oder TXT-Dateien.

Verwenden von %scratchGDB% in Modellen

Beim Schreiben von Zwischen-Feature-Classes versuchen Sie möglicherweise, Shapefiles in den Scratch-Ordner zu schreiben. Sie sollten dies nicht tun und stattdessen Feature-Daten in die Scratch-Geodatabase schreiben, da Shapefiles einige schwerwiegende Einschränkungen aufweisen, die sich auf die Portabilität der Werkzeuge auswirken können. Weitere Informationen zu Shapefiles und deren Einschränkungen finden Sie unter Überlegungen zur Geoverarbeitung für die Shapefile-Ausgabe.

Sie können Zwischendaten auch in den In-Memory-Workspace schreiben.

Weitere Informationen zum In-Memory-Workspace

Verwalten von Scratch-Daten in Skriptwerkzeugen

Scratch-Daten in Skriptwerkzeugen sollten entweder in die Scratch-Geodatabase oder in den Scratch-Ordner geschrieben werden. Im folgenden Code wird eine Feature-Class in die Scratch-Geodatabase kopiert und nach der Ausführung gelöscht.

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)

In einem Skript können Sie Daten auch in den In-Memory-Workspace schreiben. Beispiel:

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"])

Der Workspace in_memory kann nur für Geoverarbeitungswerkzeuge verwendet werden. Er ist kein allgemeingültiges virtuelles Verzeichnis, in das beliebige Daten geschrieben werden können.

Scratch-Workspace

Die Umgebung Scratch-Workspace wird hauptsächlich von ModelBuilder als Speicherort für Zwischen- und Ausgabedaten verwendet. Sie (oder der Benutzer des Werkzeugs) können diese Umgebung für einen beliebigen Speicherort festlegen: einen Ordner, eine Geodatabase oder auch ein Feature-Dataset in einer Geodatabase. Von der Verwendung der Scratch-Workspace-Umgebung zusammen mit Werkzeugen, die freigegeben werden sollen, wird abgeraten, da der Benutzer des Werkzeugs die Scratch-Workspace-Umgebung für einen Ordner, eine Geodatabase oder ein Feature-Dataset festlegen kann. Sie erwarten beispielsweise, dass der Scratch-Workspace auf einen Ordner festgelegt wird, sodass Sie eine Layer-Datei ausgeben können. Der Benutzer des Werkzeugs legt aber den Scratch-Workspace auf eine Geodatabase fest. Wenn das Werkzeug ausgeführt wird, schlägt dieses fehl, da die Layer-Datei nicht in eine Geodatabase geschrieben werden kann. Dies war der wichtigste Grund für die Einführung der Scratch-Geodatabase und des Scratch-Ordners in Version 10.1. Auf diese Weise steht Ihnen eine bekannte Geodatabase und ein bekannter Ordner zum Schreiben der Daten zur Verfügung.

Verwandte Themen

5/9/2014