需要 Spatial Analyst 许可。
摘要
通过满足指定评估标准且满足确定形状、大小、数量和区域间距离约束的输入效用值(适宜性)栅格来标识最佳区域或连续像元组。
此工具使用参数化区域增长 (PRG) 算法使种子像元中的候选区域增长,方法是将邻近像元添加到既能以最佳方式保留指定形状,又能最大程度地对区域进行利用的区域内。使用选择算法和评估标准(例如最高平均值)后,会从符合确定大小和空间约束的候选区域中选择一个或多个最佳区域。空间约束的一个示例是:保持区域之间特定的最小距离。
用法
输入效用值栅格通常为适宜性模型的输出。适宜性模型根据当前在位置上找到的所需属性确定各个位置的适宜程度。适宜性建模是 Spatial Analyst 最常见的应用程序之一。有关适宜性建模的其他信息,请参阅了解叠加分析。
效用值栅格中的输入值越高,效用越大。
区域间最小距离和区域间最大距离的设置优先于总面积。例如,假设需要五个区域,但根据指定的最大距离和最小距离只能找到四个区域,则只选择四个区域。所以无法满足总面积的要求。如果可能,将发出一则警告,但并非所有情况下都会发出警告。
参数化区域增长 (PRG) 算法根据输入栅格内的效用值增长 - 像元值越高,增长越大。评估方法确定要选择的候选区域;其对区域增长不产生影响。
查找位置工具的运算量很大。您可以采取几个步骤来控制对输入数据的设置方式以及某些参数设置对此产生影响的方式。
为达到加速处理的效果,应将不应纳入选择处理考量范围的位置设置为 NoData 以作为预处理步骤,或使用掩膜将其消除。区域不会在这些排除的位置上增长,也不会在选择过程中得到分配。与输入栅格或现有区域的要素不同,排除的区域对参数化区域增长 (PRG) 算法或候选区域选择的区域间最小距离和区域间最大距离不会产生影响。
针对可用于增长的种子数和增长分辨率参数选择的选项可极大影响处理时间。
分别为这两个参数选择 SMALL 和 LOW 选项,可获得最佳性能。为可用于增长的种子数选择 SMALL、MEDIUM 或 LARGE,并为增长分辨率选择 LOW、MEDIUM 或 HIGH,可在合理的时间内生成最可靠的结果。
如果为 可用于增长的种子数或增长分辨率指定的选项不是 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_area、minimum_area 和 maximum_area 参数使用的面积单位。 可用选项及相应的单位如下:
默认单位取决于输入栅格数据集。如果输入栅格的单位为英尺、码、英里或任何其他英制单位,则将使用 SQUARE_MILES。如果输入栅格的单位为米、千米或任何其他公制单位,则将使用 SQUARE_KILOMETERS。 | String |
number_of_regions (可选) | 确定分配 total_area 所跨的区域数。 可指定的区域最大数为 30。默认值为 1。 | Long |
region_shape (可选) | 定义输出区域的形状特征。 区域从种子像元位置开始向外增长,优先考虑能够保持所需形状的像元。 可用形状选项如下:
| String |
region_orientation (可选) | 定义已定义形状的方向。区域从种子位置开始向外增长,优先考虑能保持所需区域形状方向的像元。 方向值以罗盘度为单位,范围从 0 到 360,从北开始顺时针增加。默认值为 0。 默认值 0 按照以下方式确定形状的方向:圆形 - 无影响;椭圆形 - 短轴指向南北方向;三角形和五角形 - 一点竖直向上;方形、六角形和八角形 - 一侧直边指向东西方向。 | Double |
shape_tradeoff (可选) | 确定采用参数化区域增长算法使候选区域增长时的像元权重。权重是像元在保持所需区域形状与像元属性值效用(适宜性)两方面的折衷。 值越高,表示保持区域形状越重要于选择较高的效用值。可接受的百分比值为 0 到 100(包括 0 和 100)。默认值为 50。 此参数用于确定可行候选区域。选择的候选区域由 evaluation_method 参数控制。 | Double |
evaluation_method (可选) | 评估标准,用于确定采用参数化区域增长算法确定的候选区域中哪个优先级最高。可根据效用值的特定统计数据或区域内像元的空间排列来指定优先级。 可用选项如下:
| 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_distance 和 maximum_distance 参数的距离单位。 可用选项及相应的单位如下:
默认单位取决于输入栅格数据集。如果输入栅格的单位为英尺、码、英里或任何其他英制单位,则将使用 MILES。如果输入栅格的单位为米、千米或任何其他公制单位,则将使用 KILOMETERS。 | String |
in_existing_regions (可选) | 定义已存在区域之处的数据集。 输入可以为栅格或要素数据集。如果输入为栅格,则会将栅格内所有含有效值的位置视为已分配。所有其他位置均设为 NoData。 在参数化区域增长算法中,区域不会从任何包含现有区域的位置增长。如以上相应参数说明所述,现有区域将用于 minimum_distance 和 maximum_distance 的增长和评估。 | Raster Layer; Feature Layer |
number_of_neighbors (可选) | 定义在区域增长时要使用的相邻像元。 可用选项如下:
| String |
no_islands (可选) | 定义潜在地区内是否允许岛屿。
| Boolean |
region_seeds (可选) | 定义可用于增长潜在区域的种子数。 有关种子如何影响区域增长算法的详细信息,请参阅种子的分布方式。 可用选项如下:
| String |
region_resolution (可选) | 设置区域增长的分辨率。 输入栅格将以此参数识别的像元的数量确定的分辨率重新采样(见下文)。例如,针对 Low,输入栅格对 147,356 个像元重新采样。参数化区域增长算法在重新采样的中间栅格基础上增长。从重新采样的中间栅格中选择区域后,选定区域将以像元大小重新采样。 如果所需平均区域大小的像元数过小或过大,则会对目标分辨率进行以下调整。此调整将确保每个所需区域中均有足够的像元,且不会产生不必要的处理。因此,以下各个指定分辨率的中间重新采样栅格的总像元数可低于或高于目标像元数。有关此项调整和所用阈值的详细信息,请参阅根据所需区域大小调整区域增长分辨率。 如果输入的像元少于 147,356 个,或选择了 MAXIMUM,则不会重新采样,而是对输入栅格内的所有像元进行区域增长。如果输入栅格的像元少于 147,356 个,则 LOW、MEDIUM 或 HIGH 选项将没有效果。 可用选项如下:
| String |
selection_method (可选) | 确定如何选择区域。 可用选项如下:
| String |
返回值
名称 | 说明 | 数据类型 |
out_raster | 输出区域栅格。 每个区域均以大于零的值单独进行编号。不属于任何区域的像元编号为零。输出始终为整型栅格。 针对选定区域存储统计数据的各个区域计算其他字段。这些字段包括:
| 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")
环境
许可信息
- ArcGIS Desktop Basic: 需要 Spatial Analyst
- ArcGIS Desktop Standard: 需要 Spatial Analyst
- ArcGIS Desktop Advanced: 需要 Spatial Analyst