Стоимостное расстояние (Cost Distance) (Spatial Analyst)
Резюме
Вычисляет наименьшую суммарную стоимость перемещения для каждой ячейки до ближайшего источника по поверхности стоимости.
Более подробно о работе инструментов стоимостного расстояния
Рисунок
Использование
-
Входные данные источников могут быть представлены классом объектов или растром.
-
Когда входные данные источников - это растр, набор ячеек источников состоит из всех ячеек в растре источников, которые имеют действительные значения. Ячейки, имеющие значение NoData, не включаются в набор источников. Нулевое значение рассматривается как истинный источник. Исходный растр можно легко создать с помощью инструментов извлечения.
-
Когда входные данные источников представлены классом пространственных объектов, местоположения источников внутренне конвертируются в растр до выполнения анализа. Разрешением растра можно управлять с помощью параметра Размер выходной ячейки (Output cell size) или среды Размер ячейки (Cell Size). По умолчанию разрешение будет определяться наименьшим из размеров ширины или высоты экстента входного набора объектов на выходной пространственной привязке, деленным на 250.
При использовании данных полигонального объекта в качестве входных исходных данных следует особенно тщательно выбирать способ обработки размера выходной ячейки, если его можно охарактеризовать как грубый относительно подробных сведений во входных данных. Процесс внутренней растеризации задействует тот же метод присвоения значений ячейкам (Cell assignment type) по умолчанию, что и инструмент Полигон в растр (Polygon to Raster), который является CELL_CENTER. Это означает, что данные, не расположенные по центру ячейки, не будут включены в промежуточные растеризованные исходные выходные данные, поэтому не будут представлены в расчётах расстояния. Например, если источником является ряд небольших полигонов, например периметры знаний, которые невелики относительно размеру выходной ячейки, возможно, что только некоторые из них попадут по центру выходных растровых ячеек, и, видимо, большинство остальных объекты будут потеряны в анализе.
Во избежание этой ситуации в качестве промежуточного шага можно напрямую растеризовать входные объекты с помощью инструмента Полигон в растр (Polygon to Raster), задать Поле приоритета (Priority field) и использовать полученные выходные данные в качестве входных данных инструмента Расстояние (Distance). Кроме того, можно выбрать достаточно небольшой размер ячейки, чтобы получить достаточный объем данных из входных объектов.
Если входные данные источника являются объектом, по умолчанию используется первое доступное поле. Если доступных полей нет, используется поле ObjectID (например, OID или FID, в зависимости от типа входных данных объекта).
-
Ячейки со значением NoData во Входном растре стоимости ведут себя как барьеры в инструментах стоимостной поверхности. Любой ячейке, которой присвоено значение NoData на входной поверхности стоимости, будет присвоено значение NoData на всех выходных растрах (стоимость расстояния, распределение и направление).
-
Если входные данные источников и растр стоимости имеют различные экстенты, по умолчанию выходной экстент будет определяться как пересечение двух растров. Чтобы получить поверхность стоимостного расстояния для всего экстента, выберите опцию Объединение входных данных (Union of Inputs) на выходных параметров среды Экстент (Extent).
Если Маска (Mask) была задана в параметрах среды, любые ячейки, попадающие под маску, будут обрабатываться как значения NoData.
Если в окне Анализ растров (Raster Analysis) была определена маска, и маскируемые участки содержат источник, вычисления, выполняемые для поверхности стоимости, будут осуществляться для оставшихся ячеек источников. Ячейки источников, попадающие под маску, не будут рассматриваться в вычислениях. Этим ячейкам будет присвоено значение NoData на всех выходных растрах (расстояния, распределения и направления).
-
Максимальное расстояние задаётся в тех же единицах стоимости, что используются и на входном растре стоимости.
-
Для выходного растра расстояния, расстояние с наименьшей стоимостью (или минимальное суммарное стоимостное расстояние) ячейки до набора исходных местоположений - это нижняя граница расстояний с наименьшей стоимостью от ячейки до всех исходных местоположений.
-
Растр стоимости не может содержать нулевые значения, так как алгоритм представляет собой мультипликативный процесс. Если ваш растр стоимости содержит нулевые значения, и они представляют области наименьшей стоимости, замените нулевые значения на небольшие положительные числа (например 0,01) перед запуском инструмента Стоимостное расстояние (Cost Distance), воспользовавшись инструментом Условие (Con). Если ячейки с нулевыми значениями представляют области, которые должны быть исключены из анализа, замените нулевые значения на значения NoData перед запуском инструмента Стоимостное расстояние (Cost Distance), воспользовавшись инструментом Установить ноль (Set Null).
Синтаксис
Параметр | Объяснение | Тип данных | |
in_source_data |
Входные местоположения источников. Растр или набор пространственных данных, определяющий ячейки или местоположения, до которых вычисляются стоимостные расстояния с наименьшей стоимостью перемещения от всех ячеек. Для растров, входной тип может быть целочисленным или с плавающей точкой. | Raster Layer | Feature Layer | |
in_cost_raster |
Растр, определяющий полное сопротивление или стоимость движения в плоскости через каждую ячейку. Значение в каждой ячейке представляет стоимость движения через ячейку по поверхности стоимости, выраженную на единицу расстояния. Для получения общей стоимости прохождения через ячейку, значение каждой ячейки умножается на разрешение ячейки, с учетом возможности движения по диагонали. Значения на входном растре стоимости могут быть представлены целыми числами или числами с плавающей точкой, но они не могут быть отрицательными (стоимость не может быть отрицательной). | Raster Layer | |
maximum_distance (дополнительно) | Определяет пороговое значение суммарной стоимости перемещения, которое не может быть превышено. Если значение суммарного стоимостного расстояния превышает это значение, выходной ячейке будет присвоено значение NoData. Максимальное расстояние определяет экстент, для которого вычисляются совокупные стоимостные расстояния. Значение по умолчанию равно расстоянию до границы выходного растра. | Double | |
out_backlink_raster (дополнительно) |
Выходной растр стоимостного направления. Растр направления содержит значения от 0 до 8, которые определяют направление или следующую соседнюю ячейку вдоль оптимального пути с наименьшей суммарной стоимостью перемещения из каждой ячейки до ближайшего (в терминах стоимости) источника. Если маршрут должен пройти через правую соседнюю ячейку, ячейке будет присвоено значение 1, значение 2 будет присвоено нижней правой диагональной ячейке, и так далее по часовой стрелке. Значение 0 резервируется для ячеек источников. | Raster Dataset |
Возвращено значение
Имя | Объяснение | Тип данных |
out_distance_raster |
Выходной растр стоимостного расстояния. Растр стоимостного расстояния определяет, для каждой ячейки, наименьшее суммарное стоимостное расстояние по поверхности стоимости до установленных положений источников. Источник может быть представлен ячейкой, набором ячеек или векторным объектом. Выходной растр представлен числами с плавающей точкой. | Raster |
Пример кода
На следующем скрипте Python Window показано, как использовать инструмент Стоимостное расстояние (Cost Distance).
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCostDist = CostDistance("source.shp", "elevation", 200000, "backlink")
outCostDist.save("C:/sapyexamples/output/costdist")
Вычислите растр расстояния с наименьшей стоимостью накопления из исходных местоположений точечного шейп-файла.
# Name: CostDistance_Ex_02.py
# Description: Calculates for each cell the least accumulative cost distance
# to the nearest source 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
inSourceData = "source.shp"
inCostRaster = "elevation"
maxDistance = 20000000
outBkLinkRaster = "C:/sapyexamples/output/outbklink"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute CostDistance
outCostDistance = CostDistance(inSourceData, inCostRaster, maxDistance, outBkLinkRaster)
# Save the output
outCostDistance.save("C:/sapyexamples/output/outcostdist")