最佳区域连接 (Spatial Analyst)

需要 Spatial Analyst 许可。

描述

在两个或多个输入区域之间计算最佳连通性网络。

使用方法

  • 输入区域可以是栅格数据或要素数据。

  • 在栅格中,区域是含有相同值且彼此相连(邻近)的一组像元。输入区域由栅格识别时,如果有任何区域(具有相同值的像元)由多个区域组成,首先请运行区域合并工具作为一项预处理步骤,以便向每个区域分配唯一值。然后将生成的栅格用作最佳区域连接工具的输入区域。

  • 如果输入区域由面、线或点数据进行标识,则系统会利用要素 ID 将其转换为栅格,以确保生成的区域具有唯一值。多部分面无法用于输入。输入多点数据后,最佳区域连接会随机选择位置上的其中一个点作为区域值。

    您可以通过像元大小环境来控制栅格化输入要素区域的分辨率。默认情况下,分辨率将会设置为输入成本栅格(如已提供)的分辨率。

  • 当输入区域数据为面要素数据时,如果输出像元大小相对于输入中的详细信息较为粗略,则必须注意输出像元大小的处理方式。内部栅格化过程将使用与面转栅格工具相同的默认像元分配类型方法,即 像元中心。这意味着,不在像元中心的数据将不会包含在中间栅格化区域中,也不会在距离计算中表示出来。例如,如果您的区域是一系列相对于输出像元大小偏小的面(如建筑物覆盖区),则可能只有一部分面会落入输出栅格像元的中心,从而导致分析中缺少其他大部分面。

    为避免出现这种情况,在中间步骤,请使用面转栅格工具直接将输入要素栅格化并设置优先级字段,并将生成的输出用作最佳区域连接工具的输入。或者,选择一个足够小的像元大小以从输入要素中捕获适当量的详细信息。

  • 当区域输入为要素时,ObjectID 字段将用作区域标识符。

  • 如果输入区域是栅格且行 ID 的范围很大(即使只有几个区域),则最佳区域连接性能可能会受到负面影响。

  • 输入障碍栅格或要素数据参数识别的位置或输入成本栅格参数中具有 NoData 的像元位置将充当障碍。

  • 默认的处理范围与输入成本栅格(如已提供)的范围相同;否则,系统会将其设置为输入区域的范围。

  • 输入成本栅格不可以包含零值,因为该算法是一个乘法过程。如果成本栅格中的确包含表示成本最低区域的零值,那么请在运行此工具前将这些值更改为某个较小的正值(如 0.01)。

    您可以使用条件函数工具将零像元更改为其他值。如果值为零的区域表示应从分析中排除的区域,请首先通过运行设为空函数工具将这些值转换为 NoData。

  • 对于相邻连接的输出要素类参数,如果未指定成本表面,则通过欧氏距离来识别相邻要素。因此,一个区域的最近相邻要素是距离最近的相邻要素。但是,当提供成本表面时,可以通过成本距离来识别相邻要素 因此,一个区域最近的相邻要素是出行成本最低的相邻要素。执行成本分配操作的目的是识别出那些彼此相邻的区域。

  • 最佳输出网络可从可选的相邻连接输出中生成的路径中创建。系统会将可选相邻连接输出中生成的路径转换为图论。其中区域为折点,路径为边,累积距离或成本为边的权重。可通过路径的图形表达计算出最小跨度树,以确定两区域间出行所需的最佳路径网络。

  • 每个最佳路径首先到达面或多像元区域的外边界。此工具会从该区域的周边继续处理带有其他线段的路径,允许区域之间设置入口点和出口点,以及在区域内移动。沿上述线段移动不会产生附加距离或成本。

  • 根据输入区域及其分配相邻要素的配置,路径可以通过中间区域以到达相邻区域。该路径穿过中间区域时将产生成本。

  • 可选相邻连接输出可以用作最小跨度树网络的替代网络。该输出可将每个区域与其相邻成本区域相连接,并生成具有多条路径的更加复杂的网络。要素类可以按原样使用,也可以作为创建您自己的网络的基础。为此,请使用按属性选择按钮、地图选项卡上的选择组或按属性选择图层工具在网络中选择所需的指定路径。可以根据区域知识和生成的属性表中与路径相关的统计数据来选择路径。

  • 针对最小跨度树或可选相邻连接生成的网络可以转换为 Network Analyst 网络,以执行附加网络分析。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

语法

OptimalRegionConnections(in_regions, out_feature_class, {in_barrier_data}, {in_cost_raster}, {out_neighbor_paths}, {distance_method}, {connections_within_regions})
参数说明数据类型
in_regions

要通过最佳网络连接的输入区域。

区域可以通过栅格或要素数据集来定义。

如果区域输入为栅格,则区域将通过值相同的连续(邻近)像元组进行定义。每个区域必须具有唯一的编号。不属于任何区域的像元一定是 NoData。栅格类型必须为整型,值可正可负。

如果区域输入为要素数据集,则其可以是面、折线或点。面要素区域不能包含多部分面。

Raster Layer; Feature Layer
out_feature_class

连接每个输入区域所需的最佳路径网络的输出折线要素类。

每条路径(或线)都是唯一标识的,同时属性表中的其他字段用于存储有关路径的特定信息。这些附加字段包括:

  • PATHID - 路径的唯一标识符
  • PATHCOST - 路径的总累计距离或成本
  • REGION1 - 该路径连接的第一个区域
  • REGION2 - 该路径连接的另一个区域

该信息有助于深入分析网络内的路径。

由于每条路径都是由唯一的线所表示,因此多条路径经过同一路线的位置会存在多条线。

Feature Class
in_barrier_data
(可选)

定义障碍的数据集。

可通过整型栅格、浮点型栅格或要素图层来定义障碍。

Raster Layer; Feature Layer
in_cost_raster
(可选)

定义以平面测量的经过每个像元所需的阻抗或成本。

每个像元位置上的值表示经过像元时移动每单位距离所需的成本。每个像元位置值乘以像元分辨率,同时也会补偿对角线移动来获取经过像元的总成本。

成本栅格的值可以是整型或浮点型,但不可以为负值或零(不存在负成本或零成本)。

Raster Layer
out_neighbor_paths
(可选)

该输出折线要素类用于标识从每个区域到其每个最近或成本邻域的所有路径。

每条路径(或线)都是唯一标识的,同时属性表中的其他字段用于存储有关路径的特定信息。这些附加字段包括:

  • PATHID - 路径的唯一标识符
  • PATHCOST - 路径的总累计距离或成本
  • REGION1 - 该路径连接的第一个区域
  • REGION2 - 该路径连接的另一个区域

该信息有助于深入分析网络内的路径,而且对于决定应该移除哪条路径非常有用(如有必要)。

由于每条路径都是由唯一的线所表示,因此多条路径经过同一路线的位置会存在多条线。

Feature Class
distance_method
(可选)

指定是否使用平面(平地)或测地线(椭球)方法计算距离。

  • PLANAR将使用 2D 笛卡尔坐标系对投影平面执行距离计算。这是默认设置。
  • GEODESIC距离计算将在椭圆体上执行。因此,结果不会改变,不考虑输入或输出投影。
String
connections_within_regions
(可选)

指定路径是否将在输入区域内继续并连接。

  • GENERATE_CONNECTIONS路径将在输入区域内继续以连接进入区域的所有路径。
  • NO_CONNECTIONS路径将在输入区域的边缘停止,并且不会在输入区域内继续或连接。
String

代码示例

OptimalRegionConnections 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 OptimalRegionConnections 工具。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outOptRegConnect = OptimalRegionConnections("source.shp", "elevation")
outOptRegConnect.save("C:/sapyexamples/output/optregconnect.tif")
OptimalRegionConnections 示例 2(独立脚本)

生成用于连接各个输入区域的路径的最低成本最佳网络。

# Name: OptimalRegionConnections_Ex_02.py
# Description: Calculates for each cell the optimum region connections.
#
# 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.tif"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute the tool
outOptRegConnect = OptimalRegionConnections(inSourceData, inCostRaster)

# Save the output 
outOptRegConnect.save.save("C:/sapyexamples/output/optregconnect.tif")

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题