Distance de chemin (Spatial Analyst)

Récapitulatif

Calcule, pour chaque cellule, la distance de plus faible coût cumulé jusqu'à la source la plus proche, tout en tenant compte de la distance de surface et des facteurs de coût horizontaux et verticaux.

Pour en savoir plus sur le fonctionnement des outils de distance de chemin

Utilisation

Syntaxe

PathDistance (in_source_data, {in_cost_raster}, {in_surface_raster}, {in_horizontal_raster}, {horizontal_factor}, {in_vertical_raster}, {vertical_factor}, {maximum_distance}, {out_backlink_raster})
ParamètreExplicationType de données
in_source_data

Emplacement des sources en entrée.

Un jeu de données raster ou un jeu de classes d'entités identifie les cellules ou les emplacements par rapport auxquels la distance de plus faible coût cumulé est calculée pour chaque emplacement de cellule en sortie.

Pour les rasters, le type d'entrée peut être entier ou à virgule flottante.

Raster Layer | Feature Layer
in_cost_raster
(Facultatif)

Raster définissant l'impédance ou le coût de déplacement planimétrique à travers chaque cellule.

La valeur à chaque emplacement de cellule représente le coût par unité de distance pour le déplacement à travers chaque cellule. Chaque valeur d'emplacement de cellule est multipliée par la résolution de cellule (avec également une compensation simultanée pour mouvement diagonal) afin d'obtenir le coût total du passage à travers la cellule.

Les valeurs du raster de coût peuvent être des entiers ou valeurs à virgule flottante, mais elles ne peuvent pas être négatives ni nulles (un coût ne peut pas être négatif ou nul).

Raster Layer
in_surface_raster
(Facultatif)

Un raster définissant les valeurs d'altitudes à chaque emplacement de cellule.

Ces valeurs permettent de calculer la distance à la surface réelle qui est couverte lors du passage d'une cellule à une autre.

Raster Layer
in_horizontal_raster
(Facultatif)

Un raster définissant la direction horizontale pour chaque cellule.

Les valeurs du raster doivent être des entiers compris entre 0 et 360, 0 degré correspond au Nord (vers le haut de l'écran) et les valeurs augmentent dans le sens horaire. La valeur -1 doit être attribuée aux surfaces planes. Les valeurs à chaque emplacement seront utilisées conjointement avec {horizontal_factor} afin de déterminer le coût horizontal encouru lors d'un déplacement à partir d'une cellule vers les cellules voisines.

Raster Layer
horizontal_factor
(Facultatif)

L'objet Factor horizontal définit la relation entre le facteur de coût horizontal et l'angle de déplacement relatif horizontal.

Vous pouvez choisir parmi plusieurs facteurs, avec modificateurs, qui renvoient à un diagramme de facteurs horizontaux défini. En outre, vous pouvez utiliser une table pour créer un diagramme personnalisé. Les diagrammes permettent d'identifier le facteur horizontal utilisé pour le calcul du coût total d'un déplacement vers une cellule voisine.

Dans les explications ci-dessous, deux acronymes sont utilisés. Le facteur "HF" correspond au facteur horizontal, qui représente la difficulté horizontale rencontrée lors d'un déplacement à partir d'une cellule vers la suivante. L'angle "HRMA" correspond à l'angle de déplacement relatif horizontal, lequel représente l'angle entre la direction horizontale d'une cellule et la direction de déplacement.

L'objet se présente sous les différentes formes suivantes :

Leurs définitions et paramètres sont :

  • HfBinary({zero_factor},{cut_angle})

    Indique que si l'angle HRMA est inférieur à l'angle d'inflexion, le facteur HF a la valeur associée au facteur zéro ; dans le cas contraire, le facteur horizontal est infini.

  • HfForward({zero_factor},{side_value})

    Précise que seul un mouvement vers l'avant est autorisé. L'angle HRMA doit être supérieur ou égal à 0 et inférieur à 90 (0 <= HRMA < 90). Si l'angle HRMA est compris entre 0 et 45 degrés, le facteur HF de la cellule a la valeur associée au facteur zéro. Si l'angle HRMA est supérieur ou égal à 45 degrés, la valeur du modificateur de la valeur de bord est utilisée. Le facteur HF pour un angle HRMA supérieur ou égal à 90 degrés est infini.

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

    Spécifie que le facteur HF est une fonction linéaire de l'angle HRMA.

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

    Spécifie que le facteur HF est une fonction linéaire inverse de l'angle HRMA.

  • HfTable(in_table)

    Indique qu'une table sera utilisée pour définir le diagramme des facteurs horizontaux permettant de déterminer les facteurs HF.

Modificateurs des mots-clés de facteur horizontal :

  • {zero_factor} - Définit le facteur horizontal utilisé lorsque la valeur HRMA est égale à 0. Ce facteur positionne l'interception avec l'axe des y de toutes les fonctions de facteur horizontal.
  • {cut_angle} - Définit l'angle HRMA au-delà duquel le facteur HF a une valeur infinie.
  • {slope} - Définit la pente en ligne droite utilisée avec les mots-clés de facteur horizontal LINEAR et INVERSE_LINEAR. La pente est spécifiée sous forme d'un rapport de la hauteur sur la distance parcourue (par exemple, une pente de 45 pourcents correspond à 1/45, la valeur introduite étant 0,02222).
  • {side_value} - Définit le facteur HF lorsque l'angle HRMA est supérieur ou égal à 45 degrés et inférieur à 90 degrés lorsque le mot-clé FORWARD de facteur horizontal est spécifié.
  • in_table - Correspond au nom de la table définissant le facteur HF.

Horizontal factor
in_vertical_raster
(Facultatif)

Un raster définissant les valeurs z pour chaque emplacement de cellule

Ces valeurs permettent de calculer la pente utilisée pour identifier le facteur vertical relatif au déplacement d'une cellule à une autre.

Raster Layer
vertical_factor
(Facultatif)

L'objet Facteur vertical définit la relation entre le facteur de coût vertical et l'angle de déplacement relatif vertical (VRMA, vertical relative moving angle).

Vous pouvez choisir parmi plusieurs facteurs, avec modificateurs, qui renvoient à un diagramme de facteurs verticaux défini. En outre, vous pouvez utiliser une table pour créer un diagramme personnalisé. Les diagrammes permettent d'identifier le facteur vertical utilisé pour le calcul du coût total d'un déplacement vers une cellule voisine.

Dans les explications ci-dessous, deux acronymes sont utilisés. Le facteur "VF" correspond au facteur vertical, lequel représente la difficulté verticale rencontrée lors d'un déplacement à partir d'une cellule vers la suivante. L'angle "VRMA" correspond à l'angle de déplacement relatif vertical, lequel représente l'angle de la pente entre la cellule FROM ou de traitement et la cellule TO.

L'objet se présente sous les différentes formes suivantes :

Leurs définitions et paramètres sont :

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

    Spécifie que si l'angle VRMA est supérieur à l'angle d'inflexion inférieur et inférieur à l'angle d'inflexion supérieur, le facteur VF doit correspondre à la valeur associée au facteur zéro ; sinon, il est infini.

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

    Indique que le facteur VF est une fonction linéaire de l'angle VRMA.

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

    Indique le facteur VF est une fonction linéaire inverse de l'angle VRMA.

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

    Spécifie que le facteur VF est une fonction linéaire de l'angle VRMA, à la fois du côté négatif et du côté positif de l'angle VRMA, respectivement, et que les deux fonctions linéaires sont symétriques par rapport à l'axe (y) du facteur VF.

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

    Spécifie que le facteur VF est une fonction linéaire inverse de l'angle VRMA, à la fois du côté négatif et du côté positif de l'angle VRMA, respectivement, et que les deux fonctions linéaires sont symétriques par rapport à l'axe (y) du facteur VF.

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

    Identifie le facteur VF comme une fonction cosinusoïdale de l'angle VRMA.

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

    Identifie le facteur VF comme une fonction sécante de l'angle VRMA.

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

    Indique que le facteur VF est une fonction cosinusoïdale de l'angle VRMA lorsque ce dernier est négatif et qu'il est une fonction sécante de l'angle VRMA lorsque ce dernier n'est pas négatif.

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

    Indique que le facteur VF est une fonction sécante de l'angle VRMA lorsque ce dernier est négatif et qu'il est une fonction cosinusoïdale de l'angle VRMA lorsque ce dernier n'est pas négatif.

  • VfTable(in_table)

    Indique qu'un fichier de table sera utilisé pour définir le diagramme des facteurs verticaux qui permettra de déterminer les facteurs VF.

Modificateurs des paramètres verticaux :

  • {zero_factor} - Définit le facteur vertical utilisé lorsque l'angle VRMA est nul. Ce facteur positionne l'interception avec l'axe des y de la fonction spécifiée. Par définition, le facteur zéro ne s'applique à aucune fonction verticale trigonométrique (Cos, Sec, Cos_Sec et Sec_Cos). Ces fonctions définissent l'interception de l'axe des y.
  • {low_cut_angle} - Définit l'angle VRMA en dessous duquel le facteur VF est défini sur l'infini.
  • {high_cut_angle} - Définit l'angle VRMA au-dessus duquel le facteur VF est défini sur l'infini.
  • {slope} - Etablit la pente d'une ligne droite utilisée avec les paramètres VfLinear et VfInverseLinear. La pente est spécifiée sous forme d'un rapport de la hauteur sur la distance parcourue (par exemple, une pente de 45 pourcents correspond à 1/45, la valeur introduite étant 0,02222).
  • in_table - Identifie le nom de la table définissant le facteur VF.
Vertical factor
maximum_distance
(Facultatif)

Définit le seuil que les valeurs de coût cumulé ne peuvent pas dépasser.

Si une valeur de distance de coût cumulé dépasse cette valeur, la valeur en sortie de l'emplacement de cellule est NoData. La distance maximale définit l'étendue pour laquelle les distances de coût cumulé sont calculées.

La distance par défaut va jusqu'à la bordure du raster en sortie.

Double
out_backlink_raster
(Facultatif)

Raster d'antécédence de coût en sortie.

Le raster d'antécédence contient des valeurs de 0 à 8, qui définissent la direction ou identifient la cellule voisine suivante (cellule suivante) le long du chemin de plus faible coût cumulé à partir d'une cellule pour atteindre sa source de plus faible coût, tout en tenant compte de la distance de surface, ainsi que des facteurs de surface horizontaux et verticaux.

Si le chemin doit passer à l'intérieur du voisin de droite, la cellule se voit attribuer la valeur 1, 2 pour la cellule dans la diagonale inférieure droite et ainsi de suite dans le sens des aiguilles d'une montre. La valeur 0 est réservée aux cellules sources.

Positions d'antécédence
Raster Dataset

Valeur renvoyée

NomExplicationType de données
out_distance_raster

Raster de distance de chemin en sortie.

Le raster de distance de chemin en sortie identifie, pour chaque cellule, la distance de plus faible coût cumulé, sur une surface de coût vers les emplacements source identifiés, tout en tenant compte de la distance de surface, ainsi que des facteurs de surface horizontaux et verticaux.

Une source peut être une cellule, un jeu de cellules voire un ou plusieurs emplacements d'entités.

Le raster en sortie est de type virgule flottante.

Raster

Exemple de code

Exemple 1 d'utilisation de l'outil PathDistance (fenêtre Python)

Le script de fenêtre Python ci-dessous illustre comment utiliser l'outil PathDistance.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outPathDist = PathDistance("observers.shp", "costraster", "elevation", "backlink2",
                            HfForward(0.5, 1.0), "focalcost.tif", VfBinary(1.0, -30, 30),  
                            50000, "c:/sapyexamples/output/backlinkpath")
outPathDist.save("c:/sapyexamples/output/pathdistout")
Exemple 2 d'utilisation de l'outil PathDistance (script autonome)

Calcule, pour chaque cellule, la distance de plus faible coût cumulé jusqu'à la source la plus proche, tout en tenant compte de la distance de surface et des facteurs de coût horizontaux et verticaux.

# Name: PathDistance_Ex_02.py
# Description: Calculates, for each cell, the least accumulative 
#              cost distance to the nearest source, 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"
inCostRast = "costraster"
inElev = "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 = 50000
optBacklinkOut = "c:/sapyexamples/output/pathbacklink"

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

# Execute PathDistance
outPathDist = PathDistance(inSource, inCostRast, inElev, inHoriz, 
                           myHorizFactor, inVertical, myVerticalFactor, 
                           maxDist, optBacklinkOut)

# Save the output 
outPathDist.save("c:/sapyexamples/output/pathdistout02")

Environnements

Rubriques connexes

Informations de licence

ArcView : Obligatoire Spatial Analyst
ArcEditor : Obligatoire Spatial Analyst
ArcInfo : Obligatoire Spatial Analyst

7/10/2012