资源描述
地理国情监测云平台
ArcGIS教程:分区几何统计
一、分区结合统计
摘要
为数据集中的各个区域计算指定的几何测量值(面积、周长、厚度或者椭圆的特征值)。
插图
用法
· 区域定义为输入中具有相同值的所有区。各区无需相连。栅格和要素数据集都可用于区域输入。
· 在指定输入区域数据时,默认区域字段将为第一个可用的有效字段。如果无其他有效字段存在,则 ObjectID 字段(如OID 或 FID)将为默认字段。
· 如果为区域字段选择保留字段(例如,OBECTID、FID 或 OID),则这可能导致结果中存在一些不明确现象。结果包括特定输出格式类型以及指定区域字段所必需的特定保留字段名称。如果对于特定输出格式,指定字段具有与保留字段相同的名称,则在输出中以结果中所有字段名均唯一的方式更改区域字段的名称。
· 各几何类型的输出栅格的数据类型将为浮点型。
· 如果某个特定区域仅由一个像元组成,或者该区域为单个像元方块,那么会将椭圆(在此情况下为圆)的方向设置为 90度。
语法
ZonalGeometry (in_zone_data, zone_field, {geometry_type}, {cell_size})
参数
说明
数据类型
in_zone_data
定义区域的数据集。
可通过整型栅格或要素图层来定义区域。
Raster Layer | Feature Layer
zone_field
保存定义每个区域的值的字段。
该字段必须是区域数据集的整型字段。
Field
geometry_type
(可选)
要计算的几何类型。
· AREA — 各个区域的面积。
· PERIMETER — 各个区域的周长。
· THICKNESS — 区域中最深(或最厚)的点距其周围像元的距离。
· CENTROID — 定位各个区域的质心。
String
cell_size
(可选)
用于分区操作的处理像元大小。
如果专门进行设置,则是环境中的值。如果未设置环境,则默认的像元大小将由区域数据类型确定,如下所示:
· 如果区域数据集为栅格,则像元大小将与区域栅格相同。
· 如果区域数据集为要素,则像元大小为输出空间参考中区域要素数据集范围的宽度或高度较小值除以 250。
Analysis Cell Size
返回值
名称
说明
数据类型
out_raster
输出分区几何栅格。
Raster
代码实例
ZonalGeometry 示例 1(Python 窗口)
本示例为输入面要素定义的各个区域确定面积。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZonalGeometry = ZonalGeometry("zones.shp", "Classes", "AREA", 0.2)
outZonalGeometry.save("C:/sapyexamples/output/zonegeomout3")
ZonalGeometry 示例 2(独立脚本)
本示例为输入面要素定义的各个区域确定面积。
# Name: ZonalGeometry_Ex_02.py
# Description:Calculates for each zone in a dataset the specified geometry
# measure (area, perimeter, thickness, or the characteristics
# of ellipse).
# 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
inZoneData = "zones.shp"
zoneField = "Classes"
cellSize = 0.2
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ZonalStatistics
outZonalGeometry = ZonalGeometry(inZoneData, zoneField, "AREA", cellSize)
# Save the output
outZonalGeometry.save("C:/sapyexamples/output/zonegeomout2")
二、分区几何统计的工作原理
分区几何统计工具可返回栅格中各个区域的几何或形状的相关信息。区域 (zone) 不必是单个连续实体,它可以由多个不相连的区域(area 或 region)组成。
通过分区几何统计工具可以计算四种类型的几何,具体根据以下几何类型参数确定:
· 面积:各个区域的面积。
· 周长:各个区域的周长。
· 厚度:区域中最深的点距其周围像元的距离。
· 质心:定位各个区域的质心。
以表格显示分区几何统计工具可计算所有几何测量值,但是会以表格形式返回结果,而不是输出栅格形式。
面积、周长和厚度几何类型的输出结果都以地图单位表示。对于几何类型“质心”,长轴和短轴的输出值也使用地图单位。
如果区域数据集为要素数据集,则将在内部将其转换为具有输出像元大小分辨率的栅格。
在分析环境中更改像元大小会由于重采样和累积的取整误差而对输出值造成影响。
面积
对于输入栅格中的各个区域而言,分区面积决定了各个区域的总面积,并将其指定给输出栅格上的区域中的各个像元。通过将构成区域的像元的数量乘以当前像元大小来计算面积。
将计算出所有区域的面积并求和,以便将唯一值指定给输出中的区域。
面积以平方地图单位表示。
示例
下图显示了分区几何统计工具的输出,而输入栅格的几何类型设置为面积且像元大小为 1:
周长
分区周长确定了输入栅格中各个区域的周长,并且将其指定给输出栅格上的各个像元。通过对构成区域边界的像元长度求和来计算区域的周长。外部边界和内部边界(岛屿)均列入考虑范围。
如果区域 (zone) 具有多个区域 (region),那么将对各个区域 (region) 的周长求和,以便将唯一值指定给输出中区域。
周长值以线性地图单位表示。
示例
下图显示了分区几何统计工具的输出,而输入栅格的几何类型设置为周长:
厚度
分区厚度分析可计算输入栅格上各个区域中最深或最厚点距其周围像元的距离。实际上,厚度就是可在各个区域中(不包括区域外部的任何像元)绘制的最大圆的半径(以像元为单位)。
首先,识别区域的最外部像元。向内识别外部像元旁的像元,以此类推,直至识别到最深的内部像元。
计算内部区域像元中心与最近周围像元位置的最近边(不是中心)之间的距离。
可以从区域的外部边界(外边)或内部边界(区域中的岛屿)的计算厚度。
如果两个像元直接水平或垂直相邻,且均位于区域内部,则它们之间的距离为像元大小的一倍。如果区域内部两个相邻像元彼此间成对角线关系,那么它们之间的距离约等于像元大小的 1.41421 倍。在区域的边界处,当区域内的像元与区域外部的某个像元接触时,仍使用上述的两个公式,但是要将结果除以 2。内部像元至边界的距离是累积距离。
当区域 (zone) 内的区域 (region) 不相连时,分区厚度将返回区域 (zone) 中所有不相连区域 (region) 内最深像元的值。
如果某个区域的一个或多个边界接近栅格或分析窗口的限制,那么会在计算中将忽略这些边界。仅确定栅格或分析窗口范围内的像元的厚度。
栅格或分析窗口范围内的 NoData 值是要进行厚度计算的有效像元,但是不会计算 NoData 像元的厚度。输入为 NoData 的像元将生成 NoData 作为输出。
示例
下图显示了分区几何统计工具的输出,而输入栅格的几何类型设置为厚度:
关于上面的示例中区域 7 和 -6 对边界产生的影响:即使这两个区域具有相同的像元配置,但是区域 7 为一个半像元厚度,而区域 -6 的厚度仅为半个像元(每个像元都是区域的外部像元)。
应用程序
分区厚度分析回答了“您可以在区域中走多远”这个问题,例如森林,可分析出在您走出森林之前所处的最深点。
分区厚度可用于数据清理,从而移除可能成为数据中的噪点的细小区域或与分析无关的信息。工具开始运行之后,可重点使用“条件”和“提取”工具集中的工具移除小于某些值或厚度的区域。其他可用于数据清理过程的选项包括“面积”和“周长”输出,以及“栅格综合”工具边界清理、主滤波和收缩。
质心
通过创建固定在各个分区空间形状质心的椭圆,分区质心分析可获得各个区域的几何近似。会计算各个区域的特征值和特征向量。椭圆的方向为第一特征向量的方向。椭圆长轴和短轴的比值与其特征值的比值相同。每个椭圆的面积与其表示的区域面积相等。
会查找每个区域的质心。将区域质点所在的输出栅格的像元设置为区域的值。通常,输出栅格中的非 NoData 像元的数量将与输入栅格中的区域数量相等。但是,如果两个或更多的分区质心位于同一个输出像元中,那么会将像元值设置为这些区域中的最低区域值。
椭圆
输出栅格的属性表中包含一些附加项,用于描述各个区域的椭圆近似的形状。定义椭圆形状和大小的参数为长轴、短轴和方向。这些项始终列在属性表中的“值”和“计数”项之后。各椭圆的面积与为其分配的区域的面积相等。
l MAJORAXIS:长轴的长度。以地图单位表示。
l MINORAXIS:短轴的长度。以地图单位表示。
l ORIENTATION:值的单位为度,取值范围为 0 至 180。方向定义为 x 轴与椭圆长轴之间的角度。方向的角度值以逆时针方向增加,起始于东方向(右侧水平位置)的 0 值,在长轴垂直时通过 90 位置。如果某个特定区域仅由一个像元组成,或者该区域为单个像元方块,那么会将椭圆(在此情况下为圆)的方向设置为 90 度。
通过典型分析可确定描述所有区域的椭圆的参数。这种机制通常称作标准差椭圆,其中像元中心的坐标将作为用于计算扩散的点。
示例
下图显示了分区几何统计工具的输出,而输入栅格的几何类型设置为质心。
三、以表格显示分区几何统计
摘要
为数据集中的各个区域计算几何测量值(面积、周长、厚度和椭圆的特征值)并以表的形式来显示结果。
插图
VALUE AREA PERIMETER THICKNESS XCENTROID YCENTROID MAJORAXIS MINORAXIS ORIENTATION
0 5.0 14.0 0.5 2.300 2.100 2.338 0.681 60.714
1 5.0 14.0 0.5 1.900 2.100 2.668 0.596 126.061
2 3.0 8.0 0.5 3.167 2.167 1.286 0.743 135.000
4 2.0 6.0 0.5 0.500 1.000 1.128 0.564 90.000
用法
l 区域定义为输入中具有相同值的所有区。各区无需相连。栅格和要素数据集都可用于区域输入。
l 如果输入区域数据为要素数据集,则必须通过处理像元大小或在像元大小环境中设置像元大小。
l 各个区域的计算结果将记录在输出表中。
l 在指定输入区域数据时,默认区域字段将为第一个可用的有效字段。如果无其他有效字段存在,则 ObjectID 字段(如OID 或 FID)将为默认字段。
l 如果为区域字段选择保留字段(例如,OBECTID、FID 或 OID),则这可能导致结果中存在一些不明确现象。结果包括特定输出格式类型以及指定区域字段所必需的特定保留字段名称。如果对于特定输出格式,指定字段具有与保留字段相同的名称,则在输出中以结果中所有字段名均唯一的方式更改区域字段的名称。
l 在输出表中,值字段始终位于包含分区输出计算结果的字段之前。值字段包含了区域数据集定义的区域的值。
l 分区计算结果的值将为浮点型。
l 除 ORIENTATION 项以外,输出表中的所有结果均使用地图单位进行表示。ORIENTATION 项值的单位为度,取值范围为 0至 180。ORIENTATION 定义为 x 轴与椭圆长轴之间的角度。方向的角度值以逆时针方向增加,起始 0 度值位置为东方(右侧水平位置),在长轴垂直时达到 90 度。
l 如果某个特定区域仅由一个像元组成,或者该区域为单个像元方块,那么会将椭圆(在此情况下为圆)的方向设置为 90度。
语法
ZonalGeometryAsTable (in_zone_data, zone_field, out_table, {processing_cell_size})
参数
说明
数据类型
in_zone_data
定义区域的数据集。
可通过整型栅格或要素图层来定义区域。
Raster Layer | Feature Layer
zone_field
保存定义每个区域的值的字段。
该字段必须是区域数据集的整型字段。
Field
out_table
将包含每个区域中值的汇总的输出表。
Table
processing_cell_size
(可选)
用于分区操作的处理像元大小。
如果专门进行设置,则是环境中的值。如果未设置环境,则默认的像元大小将由区域数据类型确定,如下所示:
· 如果区域数据集为栅格,则像元大小将与区域栅格相同。
· 如果区域数据集为要素,则像元大小为输出空间参考中区域要素数据集范围的宽度或高度较小值除以 250。
Analysis Cell Size
代码实例
ZonalGeometryAsTable 示例 1(Python 窗口)
本示例为输入面 shapefile 定义的各个区域确定几何测量值。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZonalGeometryAsTable = ZonalGeometryAsTable("zones.shp", "Classes", "zonalgeomout", 0.2)
ZonalGeometryAsTable 示例 2(独立脚本)
本示例为输入面 shapefile 定义的各个区域确定几何测量值。
# Name: ZonalGeometryAsTable_Ex_02.py
# Description:Calculates for each zone in a dataset the specified geometry
# measure (area, perimeter, thickness, or the characteristics
# of ellipse) and reports the results as a table.
# 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
inZoneData = "zones.shp"
zoneField = "Classes"
outTable = "zonalgeomout02.dbf"
processingCellSize = 0.2
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ZonalGeometryAsTable
outZonalGeometryAsTable = ZonalGeometryAsTable(inZoneData, zoneField, "AREA", cellSize)
北京数字空间科技有限公司
展开阅读全文