ArcGIS教程:面积制表

  摘要

  计算两个数据集之间交叉制表的区域并输出表。

  插图

  

  使用方法

  · 区域定义为输入中具有同样值的全部区。各区无需相连。

栅格和要素数据集都可用于区域输入。

  · 假设区域输入和类输入均为具有同样分辨率的栅格,则可直接使用它们。

  假设分辨率不同,则可先应用内部重採样以使其相一致,然后再运行区域操作。

  · 假设区域输入为栅格数据集。则该输入必须具有属性表。

一般会自己主动为整型栅格数据创建属性表。可是某些情况下可能不会这样做。

您能够使用构建栅格属性表来创建一个属性表。

  · 假设区域输入是要素数据集,则可在内部对其应用“矢量至栅格”转换。

  要确保转换结果与类栅格输入全然对齐,建议您检查环境设置和栅格设置中的范围和捕捉栅格是否设置正确。

  · 在指定输入区域或类数据时,默认字段将为第一个可用的有效字段。

假设无其它有效字段存在。则 ObjectID 字段(如OID 或 FID)将为默认字段。

  · 假设为区域字段选择保留字段(比如,OBECTID、FID 或 OID),则这可能导致结果中存在一些不明白现象。结果包含特定输出格式类型以及指定区域字段所必需的特定保留字段名称。

假设对于特定输出格式。指定字段具有与保留字段同样的名称,则在输出中以结果中全部字段名均唯一的方式更改区域字段的名称。

  · 假设类输入为要素数据集,则相同可在内部对其应用“矢量至栅格”转换。

先前提示中列出的要素区域输入的条件相同适用于要素类输入。

  · 通常建议仅将栅格用作区域和类输入。假设您的输入是要素,则应首先考虑使用转为栅格转换工具将其转换为栅格。这可使您更好地控制“矢量至栅格”转换。以有助于确保您始终获得预期的结果。

  · 假设将点或线数据集用作类数据。则将报告由那些要素相交的区域。

  · 面积制表工具以表的形式进行输出。

  在此表中:

  区域数据集的每一个唯一值均有一条记录。

  类数据集的每一个唯一值均有一个字段。

  每一个记录将存储每一个区域内每一个类的面积。

  语法

  TabulateArea (in_zone_data, zone_field, in_class_data, class_field, out_table, {processing_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)

转载自:https://blog.csdn.net/weixin_33872660/article/details/85886002

You may also like...