Pfadentfernungs-Zuordnung (Spatial Analyst)

Zusammenfassung

Berechnet für jede Zelle die nächste Quelle auf Grundlage der geringsten akkumulativen Kosten über einer Kostenoberfläche berechnet, wobei die Oberflächenentfernung und horizontale und vertikale Kostenfaktoren berücksichtigt werden.

Weitere Informationen zur Funktionsweise der Pfadentfernungswerkzeuge

Verwendung

Syntax

PathAllocation (in_source_data, {source_field}, {in_cost_raster}, {in_surface_raster}, {in_horizontal_raster}, {horizontal_factor}, {in_vertical_raster}, {vertical_factor}, {maximum_distance}, {in_value_raster}, {out_distance_raster}, {out_backlink_raster})
ParameterErläuterungDatentyp
in_source_data

Die Eingabequellenpositionen.

Dies ist ein Raster oder ein Feature-Dataset, das die Zellen oder Positionen identifiziert, für die die Entfernung mit den geringsten akkumulativen Kosten jeder Ausgabezellenposition berechnet wird.

Bei Rastern kann der Eingabetyp ein Ganzzahl- oder Gleitkomma-Raster sein.

Ist das Eingabequellen-Raster ein Gleitkomma-Raster, muss ein Eingabewert-Raster ({in_value_raster}) vom Typ "Ganzzahl" angegeben werden. Das Wert-Raster hat Vorrang gegenüber einer beliebigen Einstellung im Quellfeld ({source_field}).

Raster Layer | Feature Layer
source_field
(optional)

Das Feld für die Zuweisung von Werten zu den Quellenpositionen. Es muss den Typ "Ganzzahl" aufweisen.

Wenn {in_value_raster} festgelegt wurde, haben die Werte in dieser Eingabe Vorrang gegenüber allen Einstellungen in {source_field}.

Field
in_cost_raster
(optional)

Ein Raster, das die Impedanz oder die Kosten für eine planimetrische Bewegung durch jede Zelle definiert.

Der Wert an jeder Zellenposition stellt die Kosten pro Einheitenentfernung für die Bewegung durch die Zelle dar. Jeder Zellenpositionswert wird mit der Zellenauflösung multipliziert, und gleichzeitig werden diagonale Bewegungen ausgeglichen, um die Gesamtkosten für die Bewegung durch die Zelle zu erhalten.

Die Werte im Kosten-Raster können Ganzzahl- oder Gleitkommawerte sein, sie dürfen jedoch nicht negativ oder 0 sein (negative oder keine Kosten sind nicht zulässig).

Raster Layer
in_surface_raster
(optional)

Ein Raster, das die Höhenwerte an jeder Zellenposition definiert.

Beim Übergang zwischen Zellen werden die Werte verwendet, um die tatsächliche Oberflächenentfernung zu berechnen.

Raster Layer
in_horizontal_raster
(optional)

Ein Raster, das die horizontale Richtung an jeder Zelle definiert.

Die Werte in dem Raster müssen Ganzzahlwerte zwischen 0 und 360 Grad sein. Dabei steht 0 Grad für Norden (am Bildschirm oben), und der Winkel nimmt im Uhrzeigersinn zu. Ebenen Flächen sollte der Wert -1 zugewiesen werden. Beim Übergang von einer Zelle zu einer benachbarten Zelle werden die Werte an jeder Position zusammen mit dem {horizontal_factor} verwendet, um die anfallenden horizontalen Kosten zu bestimmen.

Raster Layer
horizontal_factor
(optional)

Das Objekt Horizontaler Faktor definiert die Beziehung zwischen dem horizontalen Kostenfaktor und dem horizontalen relativen Bewegungswinkel (HRMA).

Es stehen mehrere Faktoren mit Modifikatoren zur Auswahl, die ein definiertes Diagramm für den horizontalen Faktor identifizieren. Darüber hinaus kann mithilfe einer Tabelle ein benutzerdefiniertes Diagramm erstellt werden. Die Diagramme identifizieren den horizontalen Faktor, der zum Berechnen der Gesamtkosten für die Bewegung in eine benachbarte Zelle verwendet wird.

In den folgenden Erläuterungen werden zwei Akronyme verwendet: 'HF' steht für horizontaler Faktor, d. h. für die horizontalen Hindernisse bei der Bewegung von einer Zelle zur nächsten, und 'HRMA' steht für horizontaler relativer Bewegungswinkel, d. h. für den Winkel zwischen der horizontalen Richtung von einer Zelle und der Bewegungsrichtung.

Das Objekt kommt in den folgenden Formen vor:

Die Definitionen und Parameter lauten wie folgt:

  • HfBinary({zero_factor},{cut_angle})

    Wenn der HRMA kleiner ist als der Schnittwinkel, wird für den HF der dem Null-Faktor zugewiesene Wert festgelegt. Andernfalls ist dieser unendlich.

  • HfForward({zero_factor},{side_value})

    Legt fest, dass nur Vorwärtsbewegungen zulässig sind. Der Wert muss größer als oder gleich 0 Grad und kleiner als oder gleich 90 Grad sein (0 <= HRMA < 90). Wenn der HRMA größer als 45 Grad ist, wird als HF für die Zelle der dem Null-Faktor zugewiesene Wert festgelegt. Wenn der HRMA größer als oder gleich 45 Grad ist, wird der Wert des Seitenwert-Modifikators verwendet. Der HF für einen HRMA, der größer als oder gleich 90 Grad ist, wird auf unendlich festgelegt.

  • HfLinear({zero_factor},{cut_angle},{slope})

    Gibt an, dass der HF eine lineare Funktion des HRMA ist.

  • HfInverseLinear({zero_factor},{cut_angle},{slope})

    Gibt an, dass der HF eine invers lineare Funktion des HRMA ist.

  • HfTable(in_table)

    Gibt an, dass zum Definieren des Diagramms für den horizontalen Faktor und damit zum Bestimmen der HFs eine Tabellendatei verwendet wird.

Die Modifikatoren für die Schlüsselwörter des horizontalen Faktors lauten wie folgt:

  • {zero_factor} – Gibt den horizontalen Faktor an, der bei einem HRMA von 0 Grad verwendet wird. Dieser Faktor positioniert den Y-Schnittpunkt für alle Funktionen für den horizontalen Faktor.
  • {cut_angle} ‑ Definiert den HRMA, ab dem der HF auf unendlich festgelegt wird.
  • {slope} – Legt die Neigung der Geraden fest, die mit den Schlüsselwörtern "LINEAR" und "INVERSE_LINEAR" für den horizontalen Faktor verwendet wird. Die Neigung wird als Verhältnis des Anstiegs auf die Länge angegeben (z. B. eine 45-Grad-Neigung ist 1/45 und wird als 0,02222 eingegeben).
  • {side_value} – Legt den HF fest, wenn der HRMA größer als oder gleich 45 Grad und kleiner als 90 Grad ist und wenn das Schlüsselwort "FORWARD" für den horizontalen Faktor angegeben wird.
  • in_table – Gibt den Namen der Tabelle an, die den HF definiert.

Horizontal factor
in_vertical_raster
(optional)

Ein Raster, das die Z-Werte für jede Zellenposition definiert.

Die Werte werden zum Berechnen der Neigung verwendet, die zum Identifizieren des vertikalen Faktors beim Übergang von einer Zelle zur anderen dient.

Raster Layer
vertical_factor
(optional)

Das Objekt Vertikaler Faktor definiert die Beziehung zwischen dem vertikalen Kostenfaktor und dem vertikalen relativen Bewegungswinkel (VRMA, Vertical Relative Moving Angle).

Es stehen mehrere Faktoren mit Modifikatoren zur Auswahl, die ein definiertes Diagramm für den vertikalen Faktor identifizieren. Darüber hinaus kann mithilfe einer Tabelle ein benutzerdefiniertes Diagramm erstellt werden. Die Diagramme identifizieren den vertikalen Faktor, der zum Berechnen der Gesamtkosten für die Bewegung in eine benachbarte Zelle verwendet wird.

In den folgenden Erläuterungen werden zwei Akronyme verwendet: 'VF' steht für vertikaler Faktor, d. h. für die vertikalen Hindernisse bei der Bewegung von einer Zelle zur nächsten, und 'VRMA' steht für vertikaler relativer Bewegungswinkel, d. h. für den Neigungswinkel zwischen der Ausgangs- oder Verarbeitungszelle (FROM) und der Zielzelle (TO).

Das Objekt kommt in den folgenden Formen vor:

Die Definitionen und Parameter lauten wie folgt:

  • VfBinary({zero_factor},{low_cut_angle},{high_cut_angle})

    Wenn der VRMA größer als der untere Schnittwinkel und kleiner als der obere Schnittwinkel ist, wird für den VF der dem Null-Faktor zugewiesene Wert festgelegt. Andernfalls ist dieser unendlich.

  • VfLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Gibt an, dass der VF eine lineare Funktion des VRMA ist.

  • VfInverseLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Gibt an, dass der VF eine invers lineare Funktion des VRMA ist.

  • VfSymLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Gibt an, dass der VF eine lineare Funktion des VRMA auf der negativen oder positiven Seite des VRMA ist und dass die beiden linearen Funktionen hinsichtlich der VF-Achse bzw. Y-Achse symmetrisch sind.

  • VfSymInverseLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Gibt an, dass der VF eine invers lineare Funktion des VRMA auf der negativen oder positiven Seite des VRMA ist und dass die beiden linearen Funktionen hinsichtlich der VF-Achse bzw. Y-Achse symmetrisch sind.

  • VfCos({low_cut_angle},{high_cut_angle},{cos_power})

    Identifiziert den VF als kosinusbasierte Funktion des VRMA.

  • VfSec({low_cut_angle},{high_cut_angle},{sec_power})

    Identifiziert den VF als sekantenbasierte Funktion des VRMA.

  • VfCosSec({low_cut_angle},{high_cut_angle},{cos_power},{sec_power})

    Gibt an, dass der VF bei einem negativen VRMA die kosinusbasierte Funktion des VRMA und bei einem positiven VRMA die sekantenbasierte Funktion des VRMA ist.

  • VfSecCos({low_cut_angle},{high_cut_angle},{sec_power},{cos_power})

    Gibt an, dass der VF bei einem negativen VRMA die sekantenbasierte Funktion des VRMA und bei einem positiven VRMA die kosinusbasierte Funktion des VRMA ist.

  • VfTable(in_table)

    Gibt an, dass zum Definieren des Diagramms für den vertikalen Faktor und damit zum Bestimmen der VFs eine Tabellendatei verwendet wird.

Die Modifikatoren für die Parameter des vertikalen Faktors lauten wie folgt:

  • {zero_factor} – Legt den vertikalen Faktor fest, der verwendet wird, wenn der VRMA 0 ist. Dieser Faktor positioniert den Y-Schnittpunkt der angegebenen Funktion. Laut Definition ist der Null-Faktor nicht auf trigonometrische vertikale Funktionen (Cos, Sec, Cos_Sec oder Sec_Cos) anwendbar. Der Y-Schnittpunkt wird von diesen Funktionen definiert.
  • {low_cut_angle} ‑ Definiert den VRMA, unter dem der VF auf unendlich festgelegt wird.
  • {high_cut_angle} ‑ Definiert den VRMA, über dem der VF auf unendlich festgelegt wird.
  • {slope} ‑ Gibt die Neigung der Geraden an, die mit den Parametern VfLinear und VfInverseLinear verwendet wird. Die Neigung wird als Verhältnis des Anstiegs auf die Länge angegeben (z. B. eine 45-Grad-Neigung ist 1/45 und wird als 0,02222 eingegeben).
  • in_table – Gibt den Namen der Tabelle an, die den VF definiert.
Vertical factor
maximum_distance
(optional)

Definiert den Schwellenwert, den die akkumulativen Kostenwerte nicht überschreiten dürfen.

Wenn ein akkumulativer Kostenentfernungswert diesen Wert überschreitet, lautet der Ausgabewert für die Zellenposition "NoData". Die maximale Entfernung definiert die Ausdehnung, für die akkumulative Kostenentfernungen berechnet werden.

Die Standardentfernung ist bis zur Kante des Ausgabe-Rasters.

Double
in_value_raster
(optional)

Das Eingabe-Ganzzahl-Raster, das die Zonenwerte identifiziert, die für jede Eingabequellenposition verwendet werden sollen.

Für jede Quellenposition (Zelle oder Feature) wird der durch das Eingabewert-Raster ({in_value_raster}) definierte Wert allen Zellen zugewiesen, die der Quellenposition für die Berechnung zugeordnet sind. Das Wert-Raster hat Vorrang gegenüber einer beliebigen Einstellung im Quellfeld ({source_field}).

Raster Layer
out_distance_raster
(optional)

Das Ausgabe-Raster für die Verbindungsentfernung.

Dieses Ausgabe-Raster für die Verbindungsentfernung gibt für jede Zelle die geringste akkumulative Kostenentfernung über einer Kostenoberfläche zu den festgelegten Quellenpositionen an, wobei die Oberflächenentfernung sowie horizontale und vertikale Oberflächenfaktoren berücksichtigt werden.

Eine Quelle kann eine Zelle, ein Satz von Zellen oder eine bzw. mehrere Feature-Positionen sein.

Das Ausgabe-Raster ist ein Gleitkomma-Raster.

Raster Dataset
out_backlink_raster
(optional)

Das Ausgabe-Raster für Kostenrückverknüpfungen.

Das Rückverknüpfungs-Raster enthält Werte von 0 bis 8. Mit diesen Werten wird die Richtung definiert oder die nächste angrenzende Zelle (die nachfolgende Zelle) entlang dem kleinsten akkumulativen Kostenpfad von einer Zelle zu ihrer kostengünstigsten Quelle identifiziert, wobei die Oberflächenentfernung sowie horizontale und vertikale Oberflächenfaktoren berücksichtigt werden.

Wenn der Pfad in die rechte benachbarte Zelle übergeht, wird der Zelle der Wert 1 zugeordnet, gefolgt von 2 für die diagonal rechts unten angeordnete Zelle. Die folgenden Zellen werden im Uhrzeigersinn nummeriert. Der Wert 0 ist für die Quellenzellen reserviert.

Rückverknüpfungs-Positionen
Raster Dataset

Rückgabewert

NameErläuterungDatentyp
out_allocation_raster

Das Ausgabe Raster für "Pfadentfernungs-Zuordnung".

Dieses Raster gibt für jede Quellenposition (Zelle oder Feature) die Zone an, die mit den geringsten akkumulativen Kosten über einer Kostenoberfläche erreicht werden kann, wobei die Oberflächenentfernung und horizontale und vertikale Kostenfaktoren berücksichtigt werden.

Das Ausgabe-Raster ist ganzzahlig.

Raster

Codebeispiel

PathAllocation – Beispiel 1 (Python-Fenster)

Das folgende Skript im Python-Fenster veranschaulicht die Verwendung des Werkzeugs PathDistanceAllocation.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
pathAlloc = PathAllocation("observers.shp", "costraster", "elevation", "backlink2",
                            HfForward(0.5, 1.0), "focalcost.tif", VfBinary(1.0, -30, 30),  
                            25000, "eucdirout", "FID", "c:/sapyexamples/output/optpathdist", 
                            "c:/sapyexamples/output/optpathbl")
pathAlloc.save("c:/sapyexamples/output/allocpath")
PathAllocation – Skriptbeispiel

Berechnet für jede Zelle die nächste Quelle auf Grundlage der geringsten akkumulativen Kosten über einer Kostenoberfläche berechnet, wobei die Oberflächenentfernung und horizontale und vertikale Kostenfaktoren berücksichtigt werden.

# Name: PathAllocation_Ex_02.py
# Description: Calculates, for each cell, its nearest source based 
#              on the least accumulative cost over a cost surface, 
#              while accounting for surface distance and horizontal 
#              and vertical cost factors. 
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inSource = "observers.shp"
costRast = "costraster"
surfaceRast = "elevation"

# The horizontal factor
inHoriz = "backlink2"
# Create the HfForward Object
zeroFactor = 0.5
sideValue = 1.0
myHorizFactor = HfForward(zeroFactor, sideValue)

#The vertical factor
inVertical = "focalcost.tif"
# Create the VfBinary Object
zeroFactor = 1.0
lowCutAngle = -30
highCutAngle = 30
myVerticalFactor = VfBinary(zeroFactor, lowCutAngle, highCutAngle)

maxDist = 25000
valRaster = "eucdirout"
sourceField = "FID"
optPathDistOut = "c:/sapyexamples/output/optdistpath"
optPathBLOut = "c:/sapyexamples/output/pathblinkout"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute PathAllocation
pathAlloc = PathAllocation(inSource, costRast, surfaceRast, 
                           inHoriz, myHorizFactor, inVertical, myVerticalFactor, 
                           maxDist, valRaster, sourceField, 
                           optPathDistOut, optPathBLOut)

# Save the output 
pathAlloc.save("c:/sapyexamples/output/allocpath02")

Umgebungen

Verwandte Themen

Lizenzinformationen

ArcView: Erfordert Spatial Analyst
ArcEditor: Erfordert Spatial Analyst
ArcInfo: Erfordert Spatial Analyst

7/10/2012