Mit der Spatial Analyst-Lizenz verfügbar.
Klassen können zum Erstellen von Objekten verwendet werden, die häufig als Instanz bezeichnet werden. Im Anschluss an die Instanziierung eines Objekts können dessen Eigenschaften und Methoden verwendet werden. Spatial Analyst-Klassen, wie zum Beispiel Neighborhood- oder Remap-Klassen, werden häufig als Verknüpfung zu vollständig ausgefüllten Geoverarbeitungswerkzeug-Parametern verwendet, die andernfalls eine kompliziertere Zeichenfolgeentsprechung hätten.
Die Erstellung und Verwaltung von Parametern über Klassen anstatt über Zeichenfolgen ist wesentlich einfacher. Die Verwendung von Klassen für Parameter bietet unter anderem die folgenden Vorteile:
- Klassen bieten Hilfe und automatische Vervollständigung für die verschiedenen Argumente der Parameter.
- Sie können die einzelnen Argumente für die Parameter aus dem resultierenden Objekt abfragen.
- Sie können einzelne Argumente der Klasse zur weiteren Analyse ändern.
Weitere Informationen zum Verwenden von Spatial Analyst-Klassen in Map Algebra finden Sie unter:
- Erstellen von Klassen
- Abfragen von Klassen
- Ändern von Argumenten in Klassen
- Verwendung von Klassen in Python
Im Folgenden sind Beispiele für Anwendungen aufgeführt, die mithilfe von Klassen implementiert werden können:
- Legen Sie den Klassentyp oder einen einzelnen Argumentwert fest:
So kann beispielsweise durch Abfragen des Eingabe-Radiustyps und der Suchentfernung festgelegt werden, welche Potenz in einer IDW-Interpolation (inverse Distanzgewichtung) angewendet werden muss.
- Ändern Sie einen Eingabewert:
Sie können beispielsweise einen Eingabe-Reklassifizierungswert in einem Eignungsmodell basierend auf öffentlichem Feedback in einem Forum ändern, um die Auswirkung verschiedener Szenarien auf die Ausgabe zu ermitteln, ohne die Remap-Tabelle neu zu erstellen.
- So führen Sie Empfindlichkeitsanalysen durch:
Sie können beispielsweise die Werte Bis und Von in einer Remap-Tabelle für ein Eignungsmodell in 5-Prozent-Schritten iterativ ändern, um zu ermitteln, wie sich geringfügige Änderungen eines Eingabekriteriums auf die Ausgabe auswirken.
- So führen Sie Fehleranalysen durch:
Sie können beispielsweise ein Modell mehrfach ausführen, und dabei nach dem Zufallsprinzip Argumente für die Parameter ändern, um die mögliche Auswirkung des Fehlers und von Unsicherheiten in den Daten zu ermitteln.
Verwenden von Spatial Analyst-Klassen
Für einige Spatial Analyst-Geoverarbeitungswerkzeug-Parameter wird ein Klassenobjekt als Eingabe verwendet. Üblicherweise werden Parameter als einfache Zeichenfolgen, Dataset-Namen, Pfade, Schlüsselwörter, Feldnamen, Toleranzen und Domänennamen definiert. Einige Parameter sind komplexer und definieren eine Serie von Eigenschaften oder Werten. Anstatt zum Definieren dieser Parameter lange, komplizierte Textzeichenfolgen zu verwenden (wie z. B. Neighborhoods oder Remap-Tabellen), können Sie Klassen nutzen. Wenn Sie die Eingabeanforderungen für einen Klassenkonstruktor kennen, können Sie einfacher Klassenobjekte erstellen, abfragen, ändern und speichern.
Im Folgenden sind verschiedene Eingabetypen aufgeführt, die als Argumente für Spatial Analyst-Klassen verwendet werden:
- Skalare
- Strings
- Python-Liste oder Liste mit Listen
- Andere Klassen
Für die Lesbarkeit wird empfohlen, dass für die Klasse eine Variable angegeben und die Variable im Werkzeug verwendet wird. Beispiel:
Neighborhood = NbrRectangle(5, 5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MEAN")
Sollten Sie das bevorzugen, kann die Klasse jedoch auch im Werkzeugparameter definiert werden.
outRas = FocalStatistics("inRas", NbrRectangle(5, 5, "MAP"), "MEAN")
Mit einer festen Anzahl von Eingaben erstellte Klassen
Einige Klassen werden mit einer festen Anzahl einfacher Maßstäbe oder Zeichenfolgenargumente konstruiert. Gehen Sie zum Beispiel folgendermaßen vor, um eine kreisförmige Nachbarschaft mit einem Radius von fünf Karteneinheiten zu erstellen:
Neighborhood = NbrCircle(5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MAXIMUM")
Jede dieser Klassen verfügt über eine vorab festgelegte Position für die Eingabeargumente. Diese Klassen können basierend auf dem Werkzeugparameter, den sie referenzieren, zu Gruppen zusammengefasst werden:
- Fuzzy-Klassen
FuzzyGaussian, FuzzyLarge, FuzzyLinear, FuzzyMSLarge, FuzzyMSSmall, FuzzyNear, FuzzySmall
- Horizontale Faktor-Klassen
- Kriging-Modell-Klassen
- Neighborhood-Klassen
NbrAnnulus, NbrCircle, NbrIrregular, NbrRectangle, NbrWedge, NbrWeight
- Radius-Klassen
- Time-Klassen
TimeWithinDay, TimeSpecialDays, TimeMultipleDays, TimeWholeYear
- Transformationsfunktionsklassen
TfExponential, TfGaussian, TfLarge, TfLinear, TfLogarithm, TfLogisticDecay, TfLogisticGrowth, TfMSLarge, TfMSSmall, TfNear, TfPower, TfSmall, TfSymmetricLinear
- Vertikaler Faktor-Klassen
VfBinary, VfLinear, VfSymLinear, VfInverseLinear, VfSymInverseLinear, VfCos, VfSec, VfCosSec, VfSecCos, VfTable
Mit Python-Listen erstellte Klassen
Einige Klassen sind komplexer, wie zum Beispiel die Klassen TopoBoundary, TopoLake und TopoStream. Diese erfordern eine Reihe von Eingaben und werden für Parameter im Werkzeug Topo zu Raster verwendet. Die Eingaben werden in einer Python-Liste definiert, wobei die Anzahl der Eingaben in einer Liste von der Situation abhängig ist (anders ausgedrückt, die Anzahl richtet sich nach den für die Analyse erforderlichen Eingaben).
So ist für die TopoBoundary-Klassenkonstruktoren beispielsweise eine Liste mit einer oder mehreren inFeature-Eingaben erforderlich. Die als inFeatures identifizierte Liste wird eine Eigenschaft des resultierenden Objekts. Zur Abfrage oder Bearbeitung von Elementen in der Liste inFeatures behandeln Sie jedes als Eingabe in der Liste (siehe Abfragen von Klassen).
inBoundary = TopoBoundary(["inBound1.shp", "inBound2.shp"])
Mit Listen innerhalb von Listen erstellte Klassen
Mit anderen Werkzeugen wird mit der spezifischen Situation festgelegt, wie viele Eingaben in einen Parameter erfolgen. Dieser Eingabeparametertyp wird aus einer mit Listen in einer Liste erstellten Klasse generiert. Es sind drei Werkzeuggruppen vorhanden, deren Klassen aus Listen in Listen erstellt werden:
- Reklassifizierungstabellen (RemapRange, RemapValue)
- Gewichtete Reklassifizierungstabellen (Überlagerung und Summe) (WOTable, WSTable)
- Topo-Klassen (eine Teilmenge) (TopoContour, TopoPointElevation, TopoSink)
Für die Remap-Klassen ist beispielsweise eine Tabelle als Eingabe erforderlich. Die Tabelle wird mit einer Liste von Datensätzen gestaltet, die die zu klassifizierenden Werte startValue, endValue und newValue festlegen. Eine Tabelle wird eine Eigenschaft des resultierenden Objekts. Behandeln Sie zur Abfrage oder Bearbeitung der Tabelleneingaben diese als Elemente in Listen innerhalb von Listen (siehe Abfragen von Klassen).
# Usage: RemapRange([[startValue, endValue, newValue],...])
myRemapRange = RemapRange([[-3, -1.75, 1], [-1.75, -0.5, 2], [-0.5, 0.75, 3],
[0.75, 2, 4], [2, 3.25, 5], [3.25, 4.5, 6],
[4.5, 5.75, 7], [5.75, 7, 8]])
outReclassRR = Reclassify("inRas", "VALUE", myRemapRange)
Mit einer Reihe von Klassen innerhalb einer liste erstellte Klassen
Einige Werkzeuge verwenden Klassenparameter, für die eine Reihe von Klassen als Eingabe angegeben werden muss. Die Klassen sind in einer Liste zusammengestellt. Mit den Werkzeugen, die eine Reihe von Klassen in einer Liste erfordern (unter anderem Nach Punkten extrahieren und Nach Rechteck extrahieren), werden generell Daten mit einer angegebenen Geometrie extrahiert.