Die Interaktion des Raster-Objekts in ArcGIS
Ein Raster-Objekt verweist auf ein Raster-Dataset und kann, wenn es in ArcMap 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 in Spatial Analyst 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
In einigen Fällen ist ein Raster-Objekt mit einem Raster-Layer verknüpft. Wenn Sie im Python-Fenster arbeiten, wird, wenn die Geoverarbeitungsoption Ergebnisse der Geoverarbeitungsoperationen der Anzeige hinzufügen aktiviert ist, das Ergebnis eines Map Algebra-Ausdrucks dem Inhaltsverzeichnis 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.
- Klicken Sie mit der rechten Maustaste auf den Layer, wählen Sie Daten > Permanente Darstellung aus, und geben Sie ein Ausgabeverzeichnis und einen Namen an, um ein temporäres Dataset zu speichern, das mit einem Karten-Layer verknüpft ist.
- Um ein temporäres Raster-Dataset beizubehalten, das mit einem Karten-Layer verknüpft ist, speichern Sie das Kartendokument. Wenn das Kartendokument 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 Beispiel unten wird die Ausgabe von Neigung ersetzt, wenn outRas als Ausgabe des Ausdrucks Ausrichtung wiederverwendet wird.
outRas = Slope("inRas1")
outRas = Aspect("inRas2")
Dem Inhaltsverzeichnis werden Layer mit demselben Namen wie das Raster-Objekt hinzugefügt. Wenn ein Raster-Objektname wiederverwendet wird, werden mehrere Layer mit demselben Namen dem Inhaltsverzeichnis hinzugefügt. Im Beispiel oben wird outRas dem Inhaltsverzeichnis 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 dem Inhaltsverzeichnis 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.
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 es keinen Layer gibt, der mit dem temporären Dataset verknüpft ist, und das Objekt wird gelöscht, so wird das Dataset gelöscht. Wenn ein Layer vorhanden ist, der mit dem temporären Dataset verknüpft ist, und das Objekt wird gelöscht, so bleiben die temporären Daten bestehen.
Nachfolgend ist ein Beispiel zum Löschen eines Raster-Objekts mit dem Namen outRas dargestellt.
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 Beispiel unten verweisen sowohl outRas1 als auch 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")
Im Beispiel oben verweisen sowohl outRas1 als auch 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.