Евклидово расстояние (Euclidean Distance) (Spatial Analyst)
Краткая информация
Вычисляет, для каждой ячейки, Евклидово расстояние до ближайшего источника.
Рисунок
Использование
-
Входные данные источников могут быть представлены классом объектов или растром.
-
Когда входные данные источников – растр, набор ячеек источников состоит из всех ячеек в растре источников, которые имеют действительные значения. Ячейки, имеющие значение NoData, не включаются в набор источников. Нулевое значение рассматривается как истинный источник. Исходный растр можно легко создать с помощью инструментов извлечения.
-
Когда входные данные источников представлены классом пространственных объектов, местоположения источников внутренне конвертируются в растр до выполнения анализа. Разрешением растра можно управлять с помощью параметра Размер выходной ячейки (Output cell size) или среды Размер ячейки (Cell Size). По умолчанию разрешение будет определяться наименьшим из размеров ширины или высоты экстента входного набора объектов на выходной пространственной привязке, деленным на 250.
При использовании данных полигонального объекта в качестве входных исходных данных следует особенно тщательно выбирать способ обработки размера выходной ячейки, если его можно охарактеризовать как грубый относительно подробных сведений во входных данных. Процесс внутренней растеризации задействует тот же метод присвоения значений ячейкам (Cell assignment type) по умолчанию, что и инструмент Полигон в растр (Polygon to Raster), который является CELL_CENTER. Это означает, что данные, не расположенные по центру ячейки, не будут включены в промежуточные растеризованные исходные выходные данные, поэтому не будут представлены в расчётах расстояния. Например, если источником является ряд небольших полигонов, например периметры знаний, которые невелики относительно размеру выходной ячейки, возможно, что только некоторые из них попадут по центру выходных растровых ячеек, и, видимо, большинство остальных объекты будут потеряны в анализе.
Во избежание этой ситуации в качестве промежуточного шага можно напрямую растеризовать входные объекты с помощью инструмента Полигон в растр (Polygon to Raster), задать Поле приоритета (Priority field) и использовать полученные выходные данные в качестве входных данных инструмента Расстояние (Distance). Кроме того, можно выбрать достаточно небольшой размер ячейки, чтобы получить достаточный объем данных из входных объектов.
-
Максимальное расстояние (Maximum distance) задаётся в тех же единицах карты, что и у входных данных источников.
-
Создание растра распределения не доступно, так как данные источников не могут быть представлены растром с плавающей точкой. Если необходимо создание растра распределения, воспользуйтесь функцией Распределение по евклид. расстоянию (Euclidean Allocation), которая позволяет создать три выходных растра (распределения, расстояния, и направления) единовременно.
-
Если Маска (Mask) была определена в параметрах среды анализа, и маскируемые ячейки накрывают (маскируют) источник, Евклидовы вычисления выполняются для оставшихся ячеек источников. Ячейки источников, попадающие под маску, не будут рассматриваться в вычислениях. На выходном растре местоположениям этих источников будет присвоено значение NoData.
-
Значения NoData (нет данных), созданные ячейками маски, в вычислениях для местоположений ячеек, не являющихся источниками, игнорируются. Евклидово расстояние для ячеек, расположенных позади ячеек со значениями NoData, вычисляется таким образом, как будто значений NoData нет. Любой ячейке, которой присвоено значение NoData из-за маски на входной поверхности, будет присвоено значение NoData на всех выходных растрах.
Синтаксис
Параметр | Объяснение | Тип данных |
in_source_data |
Входные местоположения источников. Это набор растровых или векторных данных, определяющий ячейки или местоположения, до которых для каждой ячейки вычисляется Евклидово расстояние. Для растров, входной тип может быть целочисленным или с плавающей точкой. | Raster Layer | Feature Layer |
maximum_distance (дополнительно) | Определяет пороговое значение, которое не может быть превышено суммарными значениями Евклидова расстояния. Если суммарное Евклидово расстояние превышает это значение, выходному значению для местоположения ячейки будет присвоено значение NoData. Значение по умолчанию равно расстоянию до границы выходного растра. | Double |
cell_size (дополнительно) | Размер ячейки, который будет использован при создании выходного растра. Это будет значение параметра среды, если этот параметр явно установлен. Если он не установлен в параметрах среды, размер ячейки по умолчанию будет зависеть от того, являются ли входные данные растровыми или векторными, как показано ниже:
| Analysis Cell Size |
out_direction_raster (дополнительно) | Выходной растр Евклидова направления. Растр направления содержит вычисленное направление в градусах, определяющее положение центра каждой ячейки по отношению к центру ближайшей ячейки источника. Диапазон значений - от 0 до 360 градусов, где значение 0 резервируется для ячеек источников. Направление прямо на восток (вправо) определяется, как равное 90 градусам; значения увеличиваются по часовой стрелке (180 - на юг; 270 - на запад; и 360 на север). Выходной растр будет целочисленным. | Raster Dataset |
Возвращено значение
Имя | Объяснение | Тип данных |
out_distance_raster | Выходной растр Евклидова расстояния. Растр расстояния определяет для каждой ячейки Евклидово расстояние до ближайшей ячейки источника, набора ячеек источников или местоположения источника. Выходной растр представлен числами с плавающей точкой. | Raster |
Пример кода
В следующем скрипте Python Window показано, как использовать инструмент Евклидово расстояние (Euclidean Distance).
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outEucDistance = EucDistance("rec_sites.shp", 5000, 5,
"c:/sapyexamples/output/EucDirOut")
outEucDistance.save("C:/sapyexamples/output/eucdist")
Вычисляет для каждой ячейки расстояние по прямой линии до ближайшего источника.
# Name: EucDistance_Ex_02.py
# Description: Calculates for each cell the Euclidean distance to the nearest source.
# 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 = "rec_sites.shp"
maxDistance = 4000
cellSize = 4
outDirectionRaster = "C:/sapyexamples/output/eucdirect"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute EucDistance
outEucDistance = EucDistance(inSourceData, maxDistance, cellSize, outDirectionRaster)
# Save the output
outEucDistance.save("C:/sapyexamples/output/eucdist")