需要 Spatial Analyst 许可。
描述
计算两个数据集之间交叉制表的区域并输出表。
插图
使用方法
区域定义为输入中具有相同值的所有区域。各区域无需相连。栅格和要素都可用于区域输入。
如果任一输入为栅格,则该栅格必须为整型栅格。
如果两个输入均为栅格,且像元未对齐,则在分析期间系统将对输入进行重采样。如果未明确指定捕捉栅格环境,则可以使用输入栅格或要素类数据(Python 中的 in_class_data)从内部对齐像元。如果两个栅格具有相同的像元大小,且像元对齐,则不会进行重采样。
如果任一输入数据集均为要素类,则需要在执行分析之前将其内部转换为栅格。
如果输入栅格或要素区域数据(Python 中的 in_zone_data)为要素,对于不与类栅格的任何像元中心重叠的任何区域要素,这些区域将不会转换为内部区域栅格。因此,这些区域将不会在输出中表示。您可以通过为保留要素区域所需细节层次的像元大小环境指定适当的值来管理这些区域并在分析环境中指定这些区域。
如果将点或线数据用作输入栅格或要素类数据(Python 中的 in_class_data),则将报告由那些要素相交的区域。
如果输入中包含重叠面,则无法针对重叠区域的每个单独的面执行区域分析。因为要素输入已转换为栅格,所以每个位置只能拥有一个值。
另一种方法就是要为每个面区域反复进行区域操作并核对结果。
在指定输入区域或类数据时,默认字段将为第一个可用的整型或文本字段。如果不存在其他有效字段,则 ObjectID 字段(如 OID 或 FID)将成为默认字段。
此工具的输出为表。
在此表中:
- 对于区域数据集的每个唯一值,都会存在一个相应的记录。
- 对于类数据集的每个唯一值,都会存在一个相应的字段。
- 各个记录将存储各个区域内每个类的面积。
处理像元大小可以通过数值进行定义,也可以从现有栅格数据集获取。如果没有将像元大小明确指定为参数值,则将从像元大小环境获取相应值(前提是已指定环境)。如果参数像元大小和环境像元大小均未指定,则默认的输出像元大小会根据输入数据集的类型并按照如下方式进行确定。
- 如果输入数据集是栅格,则使用数据集的像元大小。
- 如果输入数据集为要素,且设置了捕捉栅格环境,则使用捕捉栅格的像元大小。如果未设置捕捉栅格,则像元大小会通过使用范围的宽度或高度中的较小值除以 250 来计算,其中范围位于在环境中指定的输出坐标系内。
如果使用数值指定像元大小,则工具会直接将其用于输出栅格。
如果使用栅格数据集指定像元大小,则该参数将显示栅格数据集的路径而不是像元大小的值。如果数据集的空间参考与输出空间参考相同,则栅格数据集的像元大小将直接用于分析。如果数据集的空间参考与输出空间参考不同,则将基于所选的像元大小投影方法进行投影。
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
语法
TabulateArea(in_zone_data, zone_field, in_class_data, class_field, out_table, {processing_cell_size})
参数 | 说明 | 数据类型 |
in_zone_data | 定义区域的数据集。 可通过整型栅格或要素图层来定义区域。 | Raster Layer; Feature Layer |
zone_field | 保存定义每个区域的值的字段。 该字段可以是区域数据集的整型字段或字符串型字段。 | Field |
in_class_data | 定义类的数据集将在各个区域内对类的面积进行汇总。 类输入可以是整型栅格图层或要素图层。 | Raster Layer; Feature Layer |
class_field | 用于保存类值的字段。 该字段可以是输入类数据的整型或字符串型字段。 | Field |
out_table | 将包含各区域中各个类面积的汇总的输出表。 表的格式由输出位置和路径确定。默认情况下,输出为一张地理数据库表。如果路径不在地理数据库中,则格式将由表达式确定。如果扩展名为 .dbf,则将采用 dBASE 格式。如果未指定扩展名,则输出将为 INFO 表。 | Table |
processing_cell_size (可选) | 将创建的输出栅格的像元大小。 此参数可以通过数值进行定义,也可以从现有栅格数据集获取。如果未将像元大小明确指定为参数值,则将使用环境像元大小值(如果已指定);否则,将使用其他规则通过其他输出计算像元大小。有关详细信息,请参阅用法。 | Analysis Cell Size |
代码示例
TabulateArea 示例 1(Python 窗口)
本例返回包含各区域中各个类值面积的表。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
TabulateArea("zonedata.shp", "IDStr", "valueraster", "VALUE",
"C:/sapyexamples/output/areatable.dbf", 2)
TabulateArea 示例 2(独立脚本)
本例返回包含各区域中各个类值面积的表。
# Name: TabulateArea_Ex_02.py
# Description: Calculates cross tabulated areas between two datasets.
# 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"
env.extent = "classgrid"
env.snapRaster = "classgrid"
# Set local variables
inZoneData = "zonedata.shp"
zoneField = "IDStr"
inClassData = "valueraster"
classField = "VALUE"
outTable = "C:/sapyexamples/output/areatable02.dbf"
processingCellSize = 2
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute TabulateArea
TabulateArea(inZoneData, zoneField, inClassData, classField, outTable,
processingCellSize)
环境
许可信息
- Basic: 需要 Spatial Analyst
- Standard: 需要 Spatial Analyst
- Advanced: 需要 Spatial Analyst