Mit der Spatial Analyst-Lizenz verfügbar.
Ein Raster-Objekt verweist auf ein Raster-Dataset und kann, wenn es in einer Kartenanzeige verwendet wird, mit einem Raster-Layer im Inhaltsverzeichnis verknüpft werden. Die Beziehungen zwischen dem Raster-Dataset, dem Raster-Objekt und dem Raster-Layer werden in den meisten Fällen beibehalten. Es ist aber wichtig, dass Sie diese Beziehungen verstehen, um produktiv mit Map Algebra in Spatial Analyst arbeiten zu können.
Es gibt zwei Möglichkeiten zur Erstellung von Raster-Objekten:
- Die Ausgabe eines Map Algebra-Ausdrucks ist ein Raster-Objekt. Eine der wichtigsten Verhaltensweisen eines Raster-Objekts besteht darin, dass es auf ein temporäres Raster verweist, wenn es als primäre Ausgabe aus einem Map Algebra-Ausdruck erstellt wird.
>>> outRas = Slope("elevation") >>> print outRas.isTemporary True
- Ein Raster-Dataset kann als Raster-Objekt verarbeitet werden. Wenn ein permanentes Raster-Dataset als Raster-Objekt verarbeitet wird, bleibt das Dataset dauerhaft bestehen.
>>> outRas = Raster("C:/Data/elevation") >>> print outRas.isTemporary False
Wenn Sie im Python-Fenster arbeiten, wird das Ergebnis eines Map Algebra-Ausdrucks zum Bereich Inhalt mit demselben Namen wie das Raster-Objekt hinzugefügt. Wenn ein Dataset als Raster verarbeitet wird, wird dem Inhaltsverzeichnis kein Layer hinzugefügt.
Speichern von temporären Rastern
Wenn mit dem Raster-Objekt temporäre Daten verknüpft sind, wird es gelöscht, wenn die ArcGIS-Sitzung beendet wird (wenn das Objekt den Bereich verlässt oder das Skript abgeschlossen wird). Dies ist der Fall, sofern die Daten nicht gespeichert werden. Wenn ein Raster gespeichert wird, spiegeln der Layer und das Objekt die aktualisierten Raster-Eigenschaften, einschließlich name, path, catalogPath, und des isTemporary-Status des Datasets, wider. Es gibt mehrere Möglichkeiten zum Speichern eines temporären Datasets.
- Um ein temporäres Raster-Dataset über das verknüpfte Raster-Objekt zu speichern, kann die save-Methode des Raster-Objekts verwendet werden.
- Um ein temporäres Raster-Dataset beizubehalten, das mit einem Karten-Layer verknüpft ist, speichern Sie das Kartenprojekt. Wenn das Projekt gespeichert wird, bleibt das Raster-Dataset mit seinem automatisch generierten Namen auf dem Datenträger an dem aktuellen Speicherort erhalten.
Wiederverwenden eines Raster-Objekts
Objektnamen müssen eindeutig sein. Wenn ein Objektname wiederverwendet wird, wird das ursprüngliche Objekt überschrieben. Im folgenden Beispiel wird die Ausgabe von Neigung ersetzt, wenn outRas als Ausgabe des Ausdrucks Ausrichtung wiederverwendet wird.
outRas = Slope("inRas1")
outRas = Aspect("inRas2")
Dem Inhalt werden Layer mit demselben Namen wie das Raster-Objekt hinzugefügt. Wenn ein Raster-Objektname wiederverwendet wird, werden dem Inhaltsverzeichnis mehrere Layer mit demselben Namen hinzugefügt. Im vorigen Beispiel wird outRas zweimal hinzugefügt. Das erste Mal ist dann, wenn der Ausdruck Neigung ausgeführt wird. Dieser erste outRas-Layer verweist auf das Ergebnis der Neigung und kann im Python-Fenster verwendet werden, bis der Ausdruck Ausrichtung ausgeführt wird. Wenn die Ausrichtung ausgeführt wird, wird ein zweiter Layer mit dem Namen outRas hinzugefügt, und das Objekt wird überschrieben und verweist nun auf das Dataset und den Layer, die sich aus der Ausrichtung ergeben.
Tipp:
Wenn das Raster-Objekt, das auf ein Dataset verweist, überschrieben wurde, kann das Raster-Dataset mit dem Layer oder dem Dataset-Namen als Raster-Objekt überarbeitet werden.
Löschen eines Raster-Objekts
Wenn ein Raster-Objekt gelöscht wird, hängt das, was mit dem verknüpften Dataset (und dem möglichen Layer) geschieht, vom Status der Daten ab. Wenn die Daten permanent sind, hat das Löschen des Raster-Objekts keinen Einfluss auf das verknüpfte Dataset oder den Layer. Wenn ein Dataset temporär ist, sind die Auswirkungen des Löschens des Raster-Objekts davon abhängig, ob ein Layer vorhanden ist, der auch auf das Raster-Dataset verweist. Wenn kein Layer mit dem temporären Dataset verknüpft ist und das Objekt gelöscht wird, wird das Dataset gelöscht. Wenn ein Layer mit dem temporären Dataset verknüpft ist und das Objekt gelöscht wird, bleiben die temporären Daten bestehen.
Vorsicht:
Temporäre Daten, auf die von einem Layer verwiesen wird, werden nicht gelöscht, wenn das Raster-Objekt gelöscht wird; es werden jedoch alle temporären Daten gelöscht, wenn die Anwendung geschlossen wird, außer sie werden unabhängig von vorhandenen Layern oder Objekten gespeichert.Im folgenden Beispiel wird gezeigt, wie ein Raster-Objekt mit dem Namen outRas gelöscht wird.
outRas = Slope("C:/Data/elevation")
del outRas
Zuweisen des Raster-Objekts zu einem neuen Raster-Objekt
Durch Zuweisen eines Raster-Objekts zu einem neuen Raster-Objekt werden das verknüpfte Dataset oder der Layer nicht kopiert. Durch Zuweisen eines Raster-Objekts zu einem neuen Raster-Objekt wird ein zweites Objekt erstellt, das auf das ursprüngliche Objekt verweist. Im folgenden Beispiel verweisen outRas1 und outRas2 auf dasselbe Raster-Dataset:
outRas1 = Slope("elevation")
# Assigns Raster object to a new Raster object and save the raster dataset
outRas2 = outRas1
outRas2.save("C:/output/outslope")
In diesem Beispiel verweisen outRas1 und outRas2 auf dasselbe Dataset. Wenn outRas2 gespeichert wird, spiegeln daher beide Objekte den permanenten Status, den neuen Speicherort und den neuen Namen des gespeicherten Datasets wider (outslope). Wenn outRas1 ein Layer im Inhaltsverzeichnis ist und Sie die Daten durch die Layer-Eigenschaft oder durch Speichern des Kartendokuments beibehalten, verweisen beide Objekte, outRas1 und outRas2, auf das gespeicherte Dataset.