查找区域 (Spatial Analyst)

需要 Spatial Analyst 许可。

描述

通过满足指定评估标准且满足确定形状、大小、数量和区域间距离约束的输入效用值(适宜性)栅格来标识最佳区域或连续像元组。

此工具使用参数化区域增长 (PRG) 算法使种子像元中的候选区域增长,方法是将邻近像元添加到既能以最佳方式保留指定形状,又能最大程度地对区域进行利用的区域内。使用选择算法和评估标准(例如最高平均值)后,会从符合确定大小和空间约束的候选区域中选择一个或多个最佳区域。空间约束的一个示例是:保持区域之间特定的最小距离。

了解有关“查找区域”工具工作原理的详细信息

使用方法

  • 输入效用值栅格通常为适宜性模型的输出。适宜性模型根据当前在位置上找到的所需属性确定各个位置的适宜程度。适宜性建模是 Spatial Analyst 最常见的应用程序之一。有关适宜性建模的其他信息,请参阅了解叠加分析。

  • 效用值栅格中的输入值越高,效用越大。

  • 区域间最小距离区域间最大距离的设置优先于总面积。例如,假设需要五个区域,但根据指定的最大距离和最小距离只能找到四个区域,则只选择四个区域。所以无法满足总面积的要求。如果可能,将发出一则警告,但并非所有情况下都会发出警告。

  • 参数化区域增长 (PRG) 算法根据输入栅格内的效用值增长 - 像元值越高,增长越大。评估方法确定要选择的候选区域;其对区域增长不产生影响。

  • 查找位置工具的运算量很大。您可以采取几个步骤来控制对输入数据的设置方式以及某些参数设置对此产生影响的方式。

  • 为达到加速处理的效果,应将不应纳入选择处理考量范围的位置设置为 NoData 以作为预处理步骤,或使用掩膜将其消除。区域不会在这些排除的位置上增长,也不会在选择过程中得到分配。与输入栅格或现有区域的要素不同,排除的区域对参数化区域增长 (PRG) 算法或候选区域选择的区域间最小距离区域间最大距离不会产生影响。

  • 针对可用于增长的种子数增长分辨率参数选择的选项可极大影响处理时间。

    分别为这两个参数选择 SmallLow 选项,可获得最佳性能。为可用于增长的种子数选择 SmallMediumLarge,并为增长分辨率选择 LowMediumHigh,可在合理的时间内生成最可靠的结果。

  • 如果为 可用于增长的种子数增长分辨率指定的选项不是 Maximum,则数据将丢失,因为增长区域并未来自每个像元,且重新采样的分辨率以较粗糙。但是,根据输入栅格的大小,Maximum 选项可能会非常缓慢;因此选择其他选项可能会更为方便。

  • 根据输入栅格的大小,为可用于增长的种子数增长分辨率选择 Maximum 可能会花费很长时间。 查找区域算法分为两步: 首先使候选区域增长,随后再从候选区域中选择最佳区域。针对大型输入栅格的区域增长需要花费很长时间。但是,在选择区域的步骤中,会首先加载距离矩阵。如果由于内存限制而无法加载矩阵,则工具将结束处理。如果发生这种情况,请选择较小的可用于增长的种子数,或者指定较粗糙的增长分辨率。

  • 可用于增长的种子数增长分辨率的默认值取决于输入栅格中的像元数。输入栅格中的像元越多,该工具进行处理的时间越长。为避免处理时间过长,将根据情况对这些默认值进行设置。

    输入像元数

    可用于增长的种子数增长分辨率

    <= 100,000

    最大最大

    100,000 - 500,000

    最大

    > 500,000

  • 区域数大于 8 时,建议为区域选择方法选择 Sequential 选项。使用 Combinatorial 方法时,选择的区域数大于 8 可能会导致性能不佳。

  • 通常情况下,可用于增长的种子数值对处理速度产生的影响最大。可用于增长的种子数越大,该工具进行处理的时间越长。但是,在大多数情况下,无论指定的值如何,结果均类似。

  • 可用于增长的种子数会根据效用值在输入栅格内进行分配 - 区域的效用值越高,分配到的种子越多。评估方法对其分配并无影响。

  • 增长分辨率设置参数化区域增长的分辨率。输入栅格会通过双线性重采样方法以定义的分辨率重新采样。选择区域后,会在创建最终输出栅格前使用最邻近重采样方法以环境像元大小对结果重新采样。

  • 会在输入栅格的边缘处对区域实施形状调整。如果至少应有一个像元落在输入栅格边界之外以保持形状,则区域的效用值需减少 50%。由于效用值降低,区域被选择的可能性也随之降低,但是效用值的降低并不会将区域排除在选择过程之外。

  • 如果选中区域中不允许岛屿,则选定的面积可大于指定的总面积。要确定选定面积和指定总面积之间的差异是否是因为无岛屿参数,需取消选中该参数后重新运行工具。初次运行时,从输出栅格属性表的 COUNT 添加像元数;然后重新运行工具,将每个总数与像元面积相乘,并将所得结果与指定的面积进行比较。

  • 如果为增长分辨率指定的选项不是 Maximum,则可在后处理过程中使用分区统计识别每个区域的原始效用值。 输入查找区域的输出区域栅格作为区域栅格,输入效用值栅格作为值栅格。

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

语法

LocateRegions(in_raster, {total_area}, {area_units}, {number_of_regions}, {region_shape}, {region_orientation}, {shape_tradeoff}, {evaluation_method}, {minimum_area}, {maximum_area}, {minimum_distance}, {maximum_distance}, {distance_units}, {in_existing_regions}, {number_of_neighbors}, {no_islands}, {region_seeds}, {region_resolution}, {selection_method})
参数说明数据类型
in_raster

从中派生区域的输入效用值栅格。

输入栅格中的值越大,效用越大。

栅格可为整型或浮点型。

Raster Layer
total_area
(可选)

所有区域的总面积。

默认为处理范围内输入像元的百分之 10。

Double
area_units
(可选)

定义 total_areaminimum_areamaximum_area 参数使用的面积单位。

可用选项及相应的单位如下:

  • SQUARE_MAP_UNITS输出空间参考的线性单位的平方
  • SQUARE_MILES英里
  • SQUARE_KILOMETERS千米
  • HECTARES公顷
  • ACRES英亩
  • SQUARE_METERS
  • SQUARE_YARDS
  • SQUARE_FEET英尺

默认单位取决于输入栅格数据集。如果输入栅格的单位为英尺、码、英里或任何其他英制单位,则将使用 Square miles。如果输入栅格的单位为米、千米或任何其他公制单位,则将使用 Square kilometers

String
number_of_regions
(可选)

确定分配 total_area 所跨的区域数。

可指定的区域最大数为 30。默认值为 1。

Long
region_shape
(可选)

定义输出区域的形状特征。

区域从种子像元位置开始向外增长,优先考虑能够保持所需形状的像元。

可用形状选项如下:

  • CIRCLE保持圆形区域的像元将获得较大的权重。这是默认设置。
  • ELLIPSE保持椭圆形区域的像元将获得较大的权重。
  • TRIANGLE保持等边三角形区域的像元将获得较大的权重。
  • SQUARE保持方形区域的像元将获得较大的权重。
  • PENTAGON保持五角形区域的像元将获得较大的权重。
  • HEXAGON保持六角形区域的像元将获得较大的权重。
  • OCTAGON保持八角形区域的像元将获得较大的权重。
String
region_orientation
(可选)

定义已定义形状的方向。区域从种子位置开始向外增长,优先考虑能保持所需区域形状方向的像元。

方向值以罗盘度为单位,范围从 0 到 360,从北开始顺时针增加。默认值为 0。

默认值 0 按照以下方式确定形状的方向:圆形 - 无影响;椭圆形 - 短轴指向南北方向;三角形和五角形 - 一点竖直向上;方形、六角形和八角形 - 一侧直边指向东西方向。

Double
shape_tradeoff
(可选)

确定采用参数化区域增长算法使候选区域增长时的像元权重。权重是像元在保持所需区域形状与像元属性值效用(适宜性)两方面的折衷。

值越高,表示保持区域形状越重要于选择较高的效用值。可接受的百分比值为 0 到 100(包括 0 和 100)。默认值为 50。

此参数用于确定可行候选区域。选择的候选区域由 evaluation_method 参数控制。

Double
evaluation_method
(可选)

评估标准,用于确定采用参数化区域增长算法确定的候选区域中哪个优先级最高。可根据效用值的特定统计数据或区域内像元的空间排列来指定优先级。

可用选项如下:

  • HIGHEST_AVERAGE_VALUE根据最高平均值选择区域。这是默认设置。
  • HIGHEST_SUM根据最高总和选择区域。
  • HIGHEST_MEDIAN_VALUE根据最高中值选择区域。
  • HIGHEST_VALUE根据区域内包含的最高单个像元值选择区域。此选项可确保选择各个最佳像元。
  • LOWEST_VALUE根据区域内包含的最高最低单个像元值选择区域。此选项可确保选定区域包含的像元效用值确实低。
  • GREATEST_CORE_AREA根据最大核心面积选择区域。远于区域边缘像元的所有像元均视为核心的一部分。可通过分析像元大小控制边缘距离。设置的像元大小越小,核心面积越大。
  • HIGHEST_CORE_SUM根据核心面积效用值的最高累计总和选择区域。可通过分析像元大小控制边缘距离。
  • GREATEST_EDGE使用 P1 比率根据最大边缘数选择区域,其中 P1 指形状周长与相同面积圆周长的比率。圆的 P1 比率为 1。
String
minimum_area
(可选)

定义每个区域允许的最小面积。

将使用 area_units 指定的单位。

欲了解定义最大面积和最小面积时如何创建区域的详细信息,请参阅指定最大面积和最小面积时如何确定区域

Double
maximum_area
(可选)

定义每个区域允许的最大面积。

将使用 area_units 指定的单位。

欲了解定义最大面积和最小面积时如何创建区域的详细信息,请参阅指定最大面积和最小面积时如何确定区域

Double
minimum_distance
(可选)

定义区域间允许的最小距离。此距离内无法存在两个区域。

此参数影响参数化区域增长 (PRG) 算法。如果某像元可能添加到候选区域中,但其位于 in_existing_regions 中任何单个区域的此距离内,则不会将此区域考虑为候选区域。不会向排除的位置(NoData 像元)应用最小距离设置。

将使用 distance_units 指定的单位。

Double
maximum_distance
(可选)

定义区域间允许的最大距离。两个区域之间的距离不可远于此距离。

按顺序依次选择区域时,如果最佳区域与任何已选择区域的距离远于此距离,则此次不会选择该区域,但是可在稍后选择更多区域时选择该区域。

最大距离应用于 in_existing_regions;即必须至少有一个选定区域在现有区域的最大距离范围内。最大距离设置不应用于排除位置(NoData 像元),且不对 PRG 算法产生影响。

将使用 distance_units 指定的单位。

Double
distance_units
(可选)

定义用于 minimum_distancemaximum_distance 参数的距离单位。

可用选项及相应的单位如下:

  • MAP_UNITS输出空间参考的线性单位
  • MILES英里
  • KILOMETERS千米
  • METERS
  • YARDS
  • FEET英尺

默认单位取决于输入栅格数据集。如果输入栅格的单位为英尺、码、英里或任何其他英制单位,则将使用 Miles。如果输入栅格的单位为米、千米或任何其他公制单位,则将使用 Kilometers

String
in_existing_regions
(可选)

定义已存在区域之处的数据集。

输入可以为栅格或要素数据集。如果输入为栅格,则会将栅格内所有含有效值的位置视为已分配。所有其他位置均设为 NoData。

在参数化区域增长算法中,区域不会从任何包含现有区域的位置增长。如以上相应参数说明所述,现有区域将用于 minimum_distancemaximum_distance 的增长和评估。

Raster Layer; Feature Layer
number_of_neighbors
(可选)

定义在区域增长时要使用的相邻像元。

可用选项如下:

  • FOUR区域增长时仅考虑区域直接(正交)相邻的四个像元。
  • EIGHT区域增长时考虑八个最近像元(正交和对角线)。这是默认设置。
String
no_islands
(可选)

定义潜在地区内是否允许岛屿。

  • NO_ISLANDS参数化区域增长算法确保区域内无岛屿。创建区域后但选择区域前,会将洪水字段算法实施为后处理。如果区域内存在岛屿,则将填充岛屿,且会向区域添加像元。由于填充过程发生在选择过程之前,因此会将岛屿像元的效用添加到区域中,将在区域选择过程中和输出区域的统计数据内包括效用值。填充过程完成后,分配的总面积可能会超过 total_area 目标值。这是默认设置。
  • ISLANDS_ALLOWED允许岛屿。
Boolean
region_seeds
(可选)

定义可用于增长潜在区域的种子数。

有关种子如何影响区域增长算法的详细信息,请参阅种子的分布方式

可用选项如下:

  • AUTO种子数取决于输入栅格中的像元数。输入栅格的像元数少于等于 100,000 时,默认为 Maximum。输入栅格的像元数大于 100,000 时,默认为 Small。这是默认设置。
  • SMALL排除 NoData 像元后,种子数等于输入栅格中像元数的 10%,但不超过 1,600 个种子。
  • MEDIUM排除 NoData 像元后,种子数等于输入栅格中像元数的 20%,但不超过 2,500 个种子。
  • LARGE排除 NoData 像元后,种子数等于输入栅格中像元数的 30%,但不超过 3,600 个种子。
  • MAXIMUM输入栅格内的每个可用像元均会发生区域增长。可用像元指所有非 NoData 像元和所有未识别为现有区域的像元。
String
region_resolution
(可选)

设置区域增长的分辨率。

输入栅格将以此参数识别的像元的数量确定的分辨率重新采样(见下文)。例如,针对 Low,输入栅格对 147,356 个像元重新采样。参数化区域增长算法在重新采样的中间栅格基础上增长。从重新采样的中间栅格中选择区域后,选定区域将以像元大小重新采样。

如果所需平均区域大小的像元数过小或过大,则会对目标分辨率进行以下调整。此调整将确保每个所需区域中均有足够的像元,且不会产生不必要的处理。因此,以下各个指定分辨率的中间重新采样栅格的总像元数可低于或高于目标像元数。有关此项调整和所用阈值的详细信息,请参阅根据所需区域大小调整区域增长分辨率

如果输入的像元少于 147,356 个,或选择了 Maximum,则不会重新采样,而是对输入栅格内的所有像元进行区域增长。如果输入栅格的像元少于 147,356 个,则 LowMediumHigh 选项将没有效果。

可用选项如下:

  • AUTO分辨率取决于输入栅格中的像元数。输入栅格的像元数少于等于 500,000 时,默认为 Maximum。输入栅格的像元数大于 500,000 时,默认为 Low。这是默认设置。
  • LOW将对包含 147,356 个 (384 x 384) 像元(这些像元以相同的 x 比率和 y 比率分配为输入栅格)的中间栅格执行分析。
  • MEDIUM将对包含 262,144 个 (512 x 512) 像元(这些像元以相同的 x 比率和 y 比率分配为输入栅格)的中间栅格执行分析。
  • HIGH将对包含 589,824 个 (768 x 768) 像元(这些像元以相同的 x 比率和 y 比率分配为输入栅格)的中间栅格执行分析。
  • MAXIMUM将对输入栅格中的所有像元执行分析。
String
selection_method
(可选)

确定如何选择区域。

可用选项如下:

  • AUTO选择方法取决于区域数参数。如果区域数小于等于 8,则使用 Combinatorial 选择方法。如果区域数参数大于 8,则使用 Sequential 选择方法。这是默认设置。
  • COMBINATORIAL在考虑到空间约束的情况下,根据参数化区域增长 (PRG) 算法测试候选区域内所需区域数的所有组合,基于指定评估方法选择最佳区域。
  • SEQUENTIAL基于评估方法依序选择满足空间约束的最佳区域,直至达到所需区域数。
String

返回值

名称说明数据类型
out_raster

输出区域栅格。

每个区域均以大于零的值单独进行编号。不属于任何区域的像元编号为零。输出始终为整型栅格。

针对选定区域存储统计数据的各个区域计算其他字段。这些字段包括:

  • AVERAGE区域的平均效用值。
  • TOTAL区域内效用值总和。
  • MEDIAN区域的中值效用值。
  • HIGHEST区域内包含的最高单个像元值。
  • LOWEST区域内包含的最低单个像元值。
  • COREAREA核心面积。远于区域边缘像元的所有像元均视为核心的一部分。
  • CORESUM核心面积的效用值累计总和。
  • EDGE使用 P1 比率的边缘量,其中 P1 指形状周长与相同面积圆周长的比率。圆的 P1 比率为 1。
Raster

代码示例

LocateRegions 示例 1(Python 窗口)

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

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outRegions = LocateRegions("suitsurface", 13.5, "SQUARE_MILES", 5, "CIRCLE",
                           0, 50, "HIGHEST_AVERAGE_VALUE", 2, 5, 1, 3, "MILES",
                           "existingreg.shp", "EIGHT", "NO_ISLANDS", "SMALL", 
                           "LOW", "COMBINATORIAL")
outRegions.save("C:/sapyexamples/output/outregions")
LocateRegions 示例 2(独立脚本)

确定在符合空间约束的条件下,适宜性表面中的 8 个最优区域。

# Name: LocateRegions_Ex_02.py
# Description: Selects the best specified number of regions
# 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
InRaster1 = "suitsurface"
InTotalArea2 = 13.5
InAreaUnits3 = "SQUARE_MILES"
InNumberofRegions4 = 5
InRegionShape5 = "CIRCLE"
InRegionOrientation6 = 0
InShapeTradeoff7 = 50
InEvaluationMethod8 = "HIGHEST_AVERAGE_VALUE"
InMinimumArea9 = 2
InMaximumArea10 = 5
InMinimumDistance11 = 1
InMaximumDistance12 = 3
InDistanceUnits13 = "MILES"
InExistingRegions14 = "existingreg.shp"
InRegionofNeighbors15 = "EIGHT"
InRegionNoIslands16 = "NO_ISLANDS"
InRegionSeeds17 = "SMALL"
InRegionResolution18 = "LOW"
InCombinatorialThreshold19 = "COMBINATORIAL"

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

# Execute Locate Regions
outRegions = LocateRegions(InRaster1, InTotalArea2, InAreaUnits3, InNumberofRegions4,
                           InRegionShape5, InRegionOrientation6, InShapeTradeoff7,
                           InEvaluationMethod8, InMinimumArea9, InMaximumArea10,
                           InMinimumDistance11, InMaximumDistance12, InDistanceUnits13,
                           InExistingRegions14, InRegionofNeighbors15, InRegionNoIslands16,
                           InRegionSeeds17, InRegionResolution18, InCombinatorialThreshold19)

# Save the output
outRegions.save("C:/sapyexamples/output/outregions")

许可信息

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

相关主题