Распределение по Евклидову расстоянию (Euclidean Allocation) (Spatial Analyst)
Резюме
Вычисляет для каждой ячейки ближайший источник, определяемый по Евклидову расстоянию.
Рисунок
Использование
-
Входные данные источников могут быть представлены классом объектов или растром.
-
Когда входные данные источников - это растр, набор ячеек источников состоит из всех ячеек в растре источников, которые имеют действительные значения. Ячейки, имеющие значение NoData, не включаются в набор источников. Нулевое значение рассматривается как истинный источник. Исходный растр можно легко создать с помощью инструментов извлечения.
-
Когда входные данные источников представлены классом пространственных объектов, местоположения источников внутренне конвертируются в растр до выполнения анализа. Разрешением растра можно управлять с помощью параметра Размер выходной ячейки (Output cell size) или среды Размер ячейки (Cell Size). По умолчанию разрешение будет определяться наименьшим из размеров ширины или высоты экстента входного набора объектов на выходной пространственной привязке, деленным на 250.
При использовании данных полигонального объекта в качестве входных исходных данных следует особенно тщательно выбирать способ обработки размера выходной ячейки, если его можно охарактеризовать как грубый относительно подробных сведений во входных данных. Процесс внутренней растеризации задействует тот же метод присвоения значений ячейкам (Cell assignment type) по умолчанию, что и инструмент Полигон в растр (Polygon to Raster), который является CELL_CENTER. Это означает, что данные, не расположенные по центру ячейки, не будут включены в промежуточные растеризованные исходные выходные данные, поэтому не будут представлены в расчётах расстояния. Например, если источником является ряд небольших полигонов, например периметры знаний, которые невелики относительно размеру выходной ячейки, возможно, что только некоторые из них попадут по центру выходных растровых ячеек, и, видимо, большинство остальных объекты будут потеряны в анализе.
Во избежание этой ситуации в качестве промежуточного шага можно напрямую растеризовать входные объекты с помощью инструмента Полигон в растр (Polygon to Raster), задать Поле приоритета (Priority field) и использовать полученные выходные данные в качестве входных данных инструмента Расстояние (Distance). Кроме того, можно выбрать достаточно небольшой размер ячейки, чтобы получить достаточный объем данных из входных объектов.
-
Максимальное расстояние задаётся в тех же единицах карты, что и у входных данных источников.
-
Входной растр значений полезен в том случае, если входные данные источников являются растром и были получены в результате применения функции или оператора, которые в результате дают единицу или ноль. Эти функции теряют исходные значения зон, связанные с местоположениями ячеек источников. Входной растр значений может либо восстанавливать эти значения, либо предусматривать анализ дополнительных комбинаций значений зон в пределах местоположений источников.
-
Если используется входной растр значений, он может менять конфигурацию и результаты выходных данных распределения по Евклидову расстоянию. Он не будет влиять на результирующие растры функций Евклидова расстояния и Евклидова направления.
-
Если Маска (Mask) была определена в параметрах среды анализа, и маскируемые ячейки накрывают (маскируют) источник, Евклидовы вычисления выполняются для оставшихся ячеек источников. Ячейки источников, попадающие под маску, не будут рассматриваться в вычислениях. На выходном растре местоположениям этих источников будет присвоено значение NoData.
-
Значения NoData (нет данных), созданные ячейками маски, в вычислениях для местоположений ячеек, не являющихся источниками, игнорируются. Евклидово расстояние для ячеек, расположенных позади ячеек со значениями NoData, вычисляется таким образом, как будто значений NoData нет. Любой ячейке, которой присвоено значение NoData из-за маски на входной поверхности, будет присвоено значение NoData на всех выходных растрах.
Синтаксис
Параметр | Объяснение | Тип данных |
in_source_data |
Входные местоположения источников. Это набор растровых или векторных данных, определяющий ячейки или местоположения, до которых для каждой ячейки вычисляется Евклидово расстояние. Для растров, входной тип может быть целочисленным или с плавающей точкой. Если входной исходный растр — значение с плавающей точкой, {in_value_raster} должен быть целочисленного типа. Растр значений будет иметь преимущество над любым параметром {source_field}. | Raster Layer | Feature Layer |
maximum_distance (дополнительно) | Определяет пороговое значение, которое не может быть превышено суммарными значениями Евклидова расстояния. Если суммарное Евклидово расстояние превышает это значение, выходному значению для местоположения ячейки будет присвоено значение NoData. Значение по умолчанию равно расстоянию до границы выходного растра. | Double |
in_value_raster (дополнительно) |
Входной целочисленный растр, определяющий значения зон, которые должны быть использованы для каждого местоположения источника. Для каждого исходного местоположения (ячейки или пространственного объекта), значение, определенное по {in_value_raster}, будет присвоено всем ячейкам, относящимся к источнику, при вычислении. Растр значений будет иметь преимущество над параметром поля источников {source_field}. | Raster Layer |
cell_size (дополнительно) | Размер ячейки, который будет использован при создании выходного растра. Это будет значение параметра среды, если этот параметр явно установлен. Если он не установлен в параметрах среды, размер ячейки по умолчанию будет зависеть от того, являются ли входные данные растровыми или векторными, как показано ниже:
| Analysis Cell Size |
source_field (дополнительно) | Поле, используемое для присвоения значений исходным местоположениям. Должен быть целочисленным. Если был установлено {in_value_raster}, значения для этих входных данных будут иметь приоритет над любым параметром для {source_field}. | Field |
out_distance_raster (дополнительно) | Выходной растр Евклидова расстояния. Растр расстояния определяет для каждой ячейки Евклидово расстояние до ближайшей ячейки источника, набора ячеек источников или местоположения источника. Выходной растр представлен числами с плавающей точкой. | Raster Dataset |
out_direction_raster (дополнительно) | Выходной растр Евклидова направления. Растр направления содержит вычисленное направление в градусах, определяющее положение центра каждой ячейки по отношению к центру ближайшей ячейки источника. Диапазон значений - от 0 до 360 градусов, где значение 0 резервируется для ячеек источников. Направление прямо на восток (вправо) определяется, как равное 90 градусам; значения увеличиваются по часовой стрелке (180 - на юг; 270 - на запад; и 360 на север). Выходной растр будет целочисленным. | Raster Dataset |
Возвращено значение
Имя | Объяснение | Тип данных |
out_allocation_raster |
Выходной растр распределения по Евклидову расстоянию. Значения ячеек (зоны) определяют ближайшее местоположение источника. Выходной растр будет целочисленным. | Raster |
Пример кода
В следующем скрипте Python Window показано, как использовать инструмент Распределение по Евклидову расстоянию (Euclidean Allocation).
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
eucAllocate = EucAllocation("observers", 50000, "elevation", 25, "FID",
"c:/sapyexamples/output/outeucdist",
"c:/sapyexamples/output/outeucdir")
eucAllocate.save("c:/sapyexamples/output/eucalloc")
Определяет, для каждой ячейки, зону ближайшего источника по Евклидову расстоянию.
# Name: EucAllocation_Ex_02.py
# Description: Calculates, for each cell, the zone of the closest
# source location in Euclidean distance.
# 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"
maxDist = 50000
valRaster = "elevation"
cellSize = 25
sourceField = "FID"
optOutDist = "c:/sapyexamples/output/outeucdist02"
optOutDir = "c:/sapyexamples/output/outeucdir02"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute EucAllocation
eucAllocate = EucAllocation(inSource, maxDist, valRaster, cellSize,
sourceField, optOutDist, optOutDir)
# Save the output
eucAllocate.save("c:/sapyexamples/output/eucalloc02")