Allocation de coût (Spatial Analyst)
Récapitulatif
Calcule pour chaque cellule sa source la plus proche à partir du plus faible coût cumulé sur une surface de coût.
Pour en savoir plus sur le fonctionnement des outils de distance de coût
Illustration
Utilisation
-
Les données source en entrée peuvent être une classe d'entités ou un raster.
Lorsque les données source en entrée correspondent à un raster, l'ensemble des cellules source englobe toutes les cellules du raster source comprenant des valeurs valides. Les cellules associées à la valeur NoData ne figurent pas dans la source. La valeur 0 est considérée comme une source normale. Vous pouvez facilement créer un raster source à l'aide des outils d'extraction.
-
Lorsque les données source en entrée correspondent à une classe d'entités, les emplacements source sont convertis en interne en raster avant l'analyse. La résolution du raster peut être contrôlée à l'aide du paramètre Taille de cellule en sortie ou de l'environnement Taille de cellule. Par défaut, la résolution est déterminée par la valeur la plus petite entre la largeur et la hauteur de l'étendue de l'entité en entrée, dans la référence spatiale en entrée, divisée par 250.
Lorsque vous utilisez des données d'entité surfacique pour les données source en entrée, vous devez traiter la taille de cellule en sortie avec prudence si elle est grossière par rapport au détail dans l'entrée. Le processus de tramage interne utilise la même méthode par défaut Type d'attribution de cellule que l'outil Polygone vers raster, à savoir CELL_CENTER. Cela signifie que les données ne figurant pas au centre de la cellule ne seront pas incluses dans la sortie source tramée intermédiaire ; elles ne seront donc pas représentées dans les calculs de distance. Par exemple, si vos sources sont représentées par une série de petits polygones, tels que des emprises de bâtiments, dont la taille est petite par rapport à la taille de cellule en sortie, il se peut que quelques-uns d'entre eux seulement apparaissent aux centres des cellules raster en sortie et que, vraisemblablement, la plupart des autres polygones soient perdus et exclus de l'analyse.
Pour éviter cette situation, vous pouvez entre-temps effectuer le tramage des entités en entrée directement avec l'outil Polygone vers raster et définir un champ Priorité, puis utiliser le résultat obtenu en entrée dans l'outil Distance. Vous pouvez également sélectionner une taille de cellule suffisamment petite pour capturer le nombre de détails approprié à partir des entités en entrée.
Pour calculer l'allocation, les emplacements source peuvent avoir une valeur associée, qui peut être spécifiée par le paramètre Champ source. Si la source en entrée est un raster d'entiers, le champ par défaut est VALEUR. S'il s'agit d'une entité, ce sera le premier champ d'entier dans la table attributaire. Si les données source en entrée correspondent à un raster à virgule flottante, un paramètre de raster à valeurs entières doit être spécifié.
Lorsque l'entrée source est une entité, par défaut, le premier champ disponible valide est utilisé. Si aucun champ valide n'existe, le champ ObjectID (par exemple, OID ou FID, selon le type de l'entité entrée) est utilisé.
Les emplacements de cellule ayant la valeur NoData dans le raster de coût en entrée agissent comme des barrières dans les outils de surface de coût. Tout emplacement de cellule auquel la valeur NoData est attribuée sur la surface de coût en entrée recevra la valeur NoData sur tous les rasters en sortie (distance de coût, allocation et antécédence).
Si les données source en entrée et le raster de coût sont des étendues différentes, l'étendue en sortie par défaut correspond à l'intersection des deux. Pour obtenir une surface de distance de coût pour l'étendue entière, choisissez l'option Union des entrées sur les paramètres d'environnement Etendue en sortie.
Si un masque a été défini dans l'environnement, toutes les cellules masquées sont traitées en tant que valeurs NoData.
Lorsqu'un masque a été défini dans la fenêtre Analyseur raster et que les cellules à masquer masqueront une source, les calculs surviendront sur les cellules source restantes. Les cellules source qui sont masquées ne seront pas prises en compte dans les calculs. Ces emplacements de cellule se verront attribuer la valeur NoData sur tous les rasters en sortie (distance, allocation et antécédence).
Le raster de valeurs en entrée est utile lorsque vous souhaitez utiliser des valeurs ou des zones en remplacement, ou lorsque la source provient d'une opération qui s'est soldée par un résultat binaire (0 ou 1) et que vous n'avez plus les valeurs initiales correspondant aux emplacements. Le raster de valeurs peut restaurer ces valeurs ou permettre d'analyser les combinaisons supplémentaires de valeurs de zone dans les emplacements source.
Si le raster de valeurs est utilisé, il peut modifier la configuration et les résultats de la sortie d'allocation de coût. Il n'a pas d'incidence sur la distance de coût facultative ou les résultats liés aux antécédences.
La distance maximale est spécifiée dans les mêmes unités de coût que celles sur le raster de coût.
Pour le raster de distance en sortie, la distance de plus faible coût (ou distance de coût cumulée minimale) d'une cellule à un ensemble d'emplacements source correspond à la limite inférieure des distances de plus faible coût de la cellule à tous les emplacements source.
Syntaxe
Paramètre | Explication | Type 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. Si le raster source en entrée est à virgule flottante, le paramètre {in_value_raster} doit être défini et il doit être de type entier. Le raster de valeurs est prioritaire sur tout paramètre de {source_field}. | Raster Layer | Feature Layer | |
in_cost_raster |
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 | |
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 | |
in_value_raster (Facultatif) |
Raster d'entiers en entrée qui identifie les valeurs de zone à utiliser pour chaque emplacement source en entrée. Pour chaque emplacement source (cellule ou entité), la valeur définie par {in_value_raster} sera attribuée à toutes les cellules allouées à l'emplacement source pour le calcul. Le raster de valeurs est prioritaire sur tout paramètre de {source_field}. | Raster Layer | |
source_field (Facultatif) | Champ permettant d'attribuer des valeurs aux emplacements source. Il doit être de type entier. Si {in_value_raster} a été défini, les valeurs dans cette entrée auront priorité sur tout paramètre de {source_field}. | Field | |
out_distance_raster (Facultatif) |
Raster de distance de coût en sortie. Le raster de distance de coût identifie, pour chaque cellule, la distance du plus faible coût cumulé sur une surface de coût vers le(s) emplacement(s) source(s) identifié(s). 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 Dataset | |
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 (la 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. 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. | Raster Dataset |
Valeur renvoyée
Nom | Explication | Type de données |
out_allocation_raster |
Le raster d'allocation de coût en sortie. Raster identifiant la zone de chaque emplacement source (cellule ou entité) ayant pu être atteint avec le plus faible coût cumulé. Le raster en sortie est un entier | Raster |
Exemple de code
Le script dans la fenêtre Python ci-après explique comment utiliser l'outil CostAllocation.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
out = ()
costAllocOut = CostAllocation("observers.shp", "costraster", 25000,"elevation",
"FID", "c:/sapyexamples/output/distout",
"c:/sapyexamples/output/backlinkout")
costAllocOut.save("c:/sapyexamples/output/costalloc")
Ce script utilise un raster de coût, une couche d'entité de points source, et plusieurs paramètres optionnels pour calculer un raster des cellules qui contiennent la valeur de la source la plus proche.
# Name: CostAllocation_Ex_02.py
# Description: Calculates for each cell its nearest source
# based on the least accumulative cost over a
# cost surface.
# 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
inFeature = "observers.shp"
costRaster = "costraster"
maxDist = 25000
valRaster = "elevation"
featField = "FID"
outDistanceRaster = "c:/sapyexamples/output/distout"
outBacklink = "c:/sapyexamples/output/backlinkout"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute CostAllocation
costAllocOut = CostAllocation(inFeature, costRaster, maxDist,
valRaster, featField, outDistanceRaster,
outBacklink)
# Save the output
costAllocOut.save("c:/sapyexamples/output/costalloc01")