需要 Spatial Analyst 许可。
摘要
计算两个数据集之间交叉制表的区域并输出表。
插图
用法
-
区域定义为输入中具有相同值的所有区。各区无需相连。栅格和要素数据集都可用于区域输入。
如果区域输入和类输入均为具有相同分辨率的栅格,则可直接使用它们。
如果分辨率不同,则可先应用内部重采样以使其相一致,然后再执行区域操作。
如果区域输入为栅格数据集,则该输入必须具有属性表。通常会自动为整型栅格数据创建属性表,但是某些情况下可能不会这样做。您可以使用构建栅格属性表工具来创建一个属性表。
如果区域输入是要素数据集,则可在内部对其应用“矢量至栅格”转换。
要确保转换结果与类栅格输入完全对齐,建议您检查环境设置和栅格设置中的范围和捕捉栅格是否设置正确。
在指定输入区域或类数据时,默认字段将为第一个可用的有效字段。如果不存在其他有效字段,则 ObjectID 字段(如 OID 或 FID)将成为默认字段。
如果为区域字段选择保留字段(例如,OBJECTID、FID 或 OID),则这可能导致结果中存在一些不明确现象。结果包括特定输出格式类型以及指定区域字段所必需的特定保留字段名称。如果对于特定输出格式,指定字段具有与保留字段相同的名称,则在输出中更改区域字段的名称,使结果中所有字段名均唯一。
如果类输入为要素数据集,则同样可在内部对其应用“矢量至栅格”转换。先前提示中列出的要素区域输入的条件同样适用于要素类输入。
通常建议仅将栅格用作区域和类输入。如果您的输入是要素,则应首先考虑使用转为栅格转换工具将其转换为栅格。这可使您更好地控制“矢量至栅格”转换,以有助于确保您始终获得预期的结果。
如果将点或线数据集用作类数据,则将报告由那些要素相交的区域。
面积制表工具以表的形式进行输出。
在此表中:
- 区域数据集的每个唯一值均有一条记录。
- 类数据集的每个唯一值均有一个字段。
- 每个记录将存储每个区域内每个类的面积。
有关使用此工具时可能遇到的某些问题的说明以及有关如何解决这些问题的建议,请参阅使用面积制表。
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 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)
环境
许可信息
- ArcGIS Desktop Basic: 需要 Spatial Analyst
- ArcGIS Desktop Standard: 需要 Spatial Analyst
- ArcGIS Desktop Advanced: 需要 Spatial Analyst