Распределение по путевому расстоянию (Path Distance Allocation) (Spatial Analyst)

Уровень лицензии:BasicStandardAdvanced

Резюме

Вычисляет ближайший источник для каждой ячейки, основываясь на наименьшей суммарной стоимости перемещения по поверхности стоимости, вычисляемой с учетом истинного расстояния по поверхности, а также горизонтального и вертикального факторов.

Более подробно о работе инструментов путевого расстояния

Использование

Синтаксис

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})
ПараметрОбъяснениеТип данных
in_source_data

Входные местоположения источников.

Растр или набор пространственных данных, определяющий ячейки или местоположения, до которых вычисляются стоимостные расстояния с наименьшей стоимостью перемещения от всех ячеек.

Для растров, входной тип может быть целочисленным или с плавающей точкой.

Если входной исходный растр — значение с плавающей точкой, {in_value_raster} должен быть целочисленного типа. Растр значений будет иметь преимущество над любым параметром {source_field}.

Raster Layer | Feature Layer
source_field
(дополнительно)

Поле, используемое для присвоения значений исходным местоположениям. Должен быть целочисленным.

Если был установлено {in_value_raster}, значения для этих входных данных будут иметь приоритет над любым параметром для {source_field}.

Field
in_cost_raster
(дополнительно)

Растр, определяющий полное сопротивление или стоимость движения в плоскости через каждую ячейку.

Значение в каждой ячейке представляет стоимость движения через ячейку по поверхности стоимости, выраженную на единицу расстояния. Для получения общей стоимости прохождения через ячейку, значение каждой ячейки умножается на разрешение ячейки, с учетом возможности движения по диагонали.

Значения на входном растре стоимости могут быть представлены целыми числами или числами с плавающей точкой, но они не могут быть отрицательными (стоимость не может быть отрицательной).

Raster Layer
in_surface_raster
(дополнительно)

Растр, определяющий значения высот в каждой ячейке.

Значения используются для вычисления действительного расстояния по поверхности, которое будет пройдено при перемещении между ячейками.

Raster Layer
in_horizontal_raster
(дополнительно)

Растр, определяющий горизонтальное направление в каждой ячейке.

Значения на растре должны быть целыми числами в диапазоне от 0 до 360; значение 0 градусов соответствует направлению на север, или в верхнюю часть экрана. Значения увеличиваются по часовой стрелке. Плоским участкам должно быть присвоено значение, равное -1. Для определения дополнительной стоимости в горизонтальной плоскости, возникающей при движении из ячейки в соседние с ней ячейки, значения в каждом местоположении будут использоваться в сочетании с {horizontal_factor}.

Raster Layer
horizontal_factor
(дополнительно)

Объект Горизонтальный фактор (Horizontal Factor) определяет отношение между горизонтальным фактором стоимости и горизонтальным относительным углом движения.

Существует несколько факторов с различными модификаторами, которые задают определенный график горизонтального фактора. Дополнительно, для создания пользовательского графика можно воспользоваться таблицей. Графики применяются для определения горизонтального фактора, используемого в вычислениях общей стоимости перемещения в соседнюю ячейку.

В приведенных ниже пояснениях используются два сокращения: «HF» обозначает горизонтальный фактор, идентифицирующий определенные препятствия при продвижении от одной ячейки к другой; а «HRMA» обозначает относительный горизонтальный угол движения, который идентифицирует угол между направлением по горизонтали и направлением движения.

Объект представлен в следующих формах:

Определения и параметры:

  • HfBinary({zero_factor},{cut_angle})

    Определяет, что если HRMA меньше порогового угла, значение HF устанавливается равным значению, связанному с нулевым фактором; в противном случае, значение равно бесконечности.

  • HfForward({zero_factor},{side_value})

    Устанавливает, что движение возможно только вперёд. HRMA должен быть больше или равен 0 и меньше 90 градусов (0< = HRMA < 90). Если HRMA больше 0 и меньше 45 градусов, HF для ячейки задаётся равным значению, связанному с нулевым фактором. Если HRMA больше или равен 45 градусам, тогда используется модификатор бокового значения. HF для любого HRMA, больше или равного 90 градусам, задается равным бесконечности.

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

    Устанавливает, что HF является линейной функцией HRMA.

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

    Задаёт, что HF является обратной линейной функцией HRMA.

  • HfTable(in_table)

    Идентифицирует, что файл таблицы будет использоваться для определения диаграммы горизонтального фактора, используемых для определения HFs.

Модификаторы для ключевых слов горизонтального фактора:

  • {zero_factor} устанавливает горизонтальный фактор, используемый в тех случаях, когда HRMA равен 0. Этот фактор определяет точку пересечения с осью y для любой из функций горизонтального фактора.
  • {cut_angle} определяет угол HRMA, при превышении которого HF будет задан равным бесконечности.
  • {slope} устанавливает наклон прямой линии, используемый с ключевыми словами горизонтального фактора LINEAR (ЛИНЕЙНЫЙ) и INVERSE_LINEAR (ОБРАТНЫЙ_ЛИНЕЙНЫЙ). Уклон задается как отношение подъема к расстоянию (например, 45 процентов уклона - это 1/45 (значение при вводе равно 0.02222)).
  • {side_value} устанавливает HF в тех случаях, когда HRMA больше или равен 45 градусам и меньше 90 градусов, при использовании ключевого слова горизонтального фактора FORWARD (ВПЕРЕД).
  • in_table - Определяет имя таблицы, задающей HF.

Horizontal factor
in_vertical_raster
(дополнительно)

Растр, определяющий z-значения для каждого местоположения ячейки.

Значения используются для вычисления уклонов, применяемых при определении вертикального фактора, учитываемого при перемещении из одной ячейки в другую.

Raster Layer
vertical_factor
(дополнительно)

Вертикальный фактор (Vertical factor) определяет отношение между вертикальным фактором стоимости и вертикальным относительным углом движения (VRMA).

Существует несколько факторов с различными модификаторами, которые задают определенный график горизонтального фактора. Дополнительно, для создания пользовательского графика можно воспользоваться таблицей. Графики применяются для определения вертикального фактора, используемого в вычислениях общей стоимости перемещения в соседнюю ячейку.

В приведенных ниже пояснениях используются два сокращения: «VF»обозначает вертикальный фактор, идентифицирующий трудности преодоления разности высот, возникающие при продвижении от одной ячейки к другой; а «VRMA» обозначает относительный вертикальный угол движения, который идентифицирует угол уклона между анализируемой ячейкой От (FROM) и ячейкой До (TO).

Объект представлен в следующих формах:

Определения и параметры:

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

    Определяет, что если VRMA больше нижнего порогового угла и меньше верхнего порогового угла, значение VF устанавливается равным значению, связанному с нулевым фактором; в противном случае, значение равно бесконечности.

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

    Указывает на то, что ВФ является линейной функцией VRMA.

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

    Задаёт, что VF является обратной линейной функцией VRMA.

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

    Указывает на то, что VF является линейной функцией VRMA либо с положительной, либо с отрицательной стороны VRMA, соответственно; эти две линейные функции симметричны относительно оси VF (оси y).

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

    Определяет, что VF является обратной линейной функцией VRMA с положительной или отрицательной стороны VRMA, соответственно, и эти две линейные функции симметричны относительно оси VF (оси y).

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

    Определяет, что VF является функцией косинуса VRMA.

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

    Определяет, что VF является функцией секанса VRMA.

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

    Определяет, что VF является косинусом угла VRMA, когда VRMA отрицательный, и секансом угла VRMA, когда VRMA не отрицательный.

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

    Определяет, что VF является секансом угла VRMA, когда VRMA отрицательный, и косинусом угла VRMA, когда VRMA не отрицательный.

  • VfTable(in_table)

    Идентифицирует, что файл таблицы будет использоваться для определения диаграммы вертикального фактора, используемого для определения VFs.

Модификаторы для ключевых слов вертикального фактора:

  • {zero_factor} устанавливает вертикальный фактор, используемый в случаях, когда VRMA равен 0. Этот фактор определяет точку пересечения с осью y для указанной функции. По определению, нулевой фактор не применим ни к одной из тригонометрических вертикальных функций (Cos, Sec, Cos_Sec или Sec_Cos). Пересечение с осью Y устанавливается этими функциями.
  • {low_cut_angle} определяет значение угла VRMA, ниже которого VF будет задан равным бесконечности.
  • {high_cut_angle} определяет угол VRMA, при превышении которого VF будет задан равным бесконечности.
  • {slope} устанавливает наклон прямой линии, используемый с параметрами VfLinear и VfInverseLinear. Уклон задается как отношение подъема к расстоянию (например, 45 процентов уклона - это 1/45 (значение при вводе равно 0.02222)).
  • in_table - Определяет имя таблицы, задающей VF.
Vertical factor
maximum_distance
(дополнительно)

Определяет пороговое значение суммарной стоимости перемещения, которое не может быть превышено.

Если значение суммарного стоимостного расстояния превышает это значение, выходной ячейке будет присвоено значение NoData. Максимальное расстояние определяет экстент, для которого вычисляются совокупные стоимостные расстояния.

Значение по умолчанию равно расстоянию до границы выходного растра.

Double
in_value_raster
(дополнительно)

Входной целочисленный растр, определяющий значения зон, которые должны быть использованы для каждого местоположения источника.

Для каждого исходного местоположения (ячейки или пространственного объекта), значение, определенное по {in_value_raster}, будет присвоено всем ячейкам, относящимся к источнику, при вычислении. Растр значений будет иметь преимущество над параметром поля источников {source_field}.

Raster Layer
out_distance_raster
(дополнительно)

Выходной растр путевого расстояния.

Выходной растр путевого расстояния идентифицирует для каждой ячейки стоимостное расстояние с наименьшей совокупной стоимостью перемещения до определённого (в терминах стоимости) источника, с учётом расстояния по поверхности, а также горизонтального и вертикального факторов.

Источник может быть представлен ячейкой, набором ячеек или векторным объектом.

Выходной растр представлен числами с плавающей точкой.

Raster Dataset
out_backlink_raster
(дополнительно)

Выходной растр стоимостного направления.

Растр направления содержит значения от 0 до 8, которые определяют направление или следующую соседнюю ячейку (последующую ячейку) вдоль оптимального пути с наименьшей суммарной стоимостью перемещения из каждой ячейки до ближайшего (в терминах стоимости) источника, во время вычисления расстояния по поверхности, а также горизонтального и вертикального факторов поверхности.

Если маршрут должен пройти через правую соседнюю ячейку, ячейке будет присвоено значение 1, значение 2 будет присвоено нижней правой диагональной ячейке, и так далее по часовой стрелке. Значение 0 резервируется для ячеек источников.

Позиции направления
Raster Dataset

Возвращено значение

ИмяОбъяснениеТип данных
out_allocation_raster

Выходной растр распределения по путевому расстоянию.

Этот растр определяет зону каждого источника (ячейки или векторного объекта), который может быть достигнут с наименьшими стоимостными затратами, с учетом расстояния по поверхности, а также горизонтального и вертикального факторов.

Выходной растр будет целочисленным.

Raster

Пример кода

Распределение по путевому расстоянию. Пример 1 (окно Python)

На следующем скрипте Python Window показано, как использовать инструмент Распределение по путевому расстоянию (Path Distance Allocation).

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")
Распределение по путевому расстоянию. Пример скрипта

Вычисляет ближайший источник для каждой ячейки, основываясь на наименьшей суммарной стоимости перемещения по поверхности стоимости, вычисляемой с учетом истинного расстояния по поверхности, а также горизонтального и вертикального факторов.

# 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")

Параметры среды

Связанные темы

Информация о лицензировании

ArcGIS for Desktop Basic: Требует Spatial Analyst
ArcGIS for Desktop Standard: Требует Spatial Analyst
ArcGIS for Desktop Advanced: Требует Spatial Analyst
9/11/2013