区域直方图 (Spatial Analyst)

需要 Spatial Analyst 许可。

摘要

创建显示各唯一区域值输入中的像元值频数分布的表和直方图。

使用情况

  • 区域直方图可用于对一个数据集中的值在另一个数据集类中的频数分布进行研究。例如,土地利用类中的坡度分布、高程类中的降雨分布或警务区附近的犯罪分布。

  • 区域直方图中的类数取决于如何指定输入值栅格(在 Python 中为 in_value_raster)。

    如果指定为栅格数据集,则以下条件适用:

    • 对于唯一值数小于 25 的整型栅格,类数将与值栅格中的唯一值数一致。
    • 对于唯一值数大于 25 的整型栅格,这些值将被划分成 256 个类(从 1 到 256)。如果唯一值数小于 256,则某些类的频率为 0。
    • 对于浮点型栅格,值将划分成 256 个类(从 1 到 256)。

    当指定为栅格图层时,以下条件适用:

    • 对于拉伸符号系统,将使用拉伸类型,并将值划分成 256 个类(从 1 到 256)。
    • 对于分类唯一值符号系统,类数将与符号系统中的类数或唯一值数一致。
    • 区域分析将在拉伸分类唯一值符号系统指定的值范围内执行。将在计算中忽略值栅格中未在符号系统中显示的所有值。
    • 对于离散向量场符号系统,区域分析将忽略符号系统。与将输入值栅格指定为栅格数据集时的方式相同,执行分析时将仅考虑数据类型和值栅格中的唯一值数。
    • 区域直方图将显示值栅格图层符号系统标注中的类值。
  • 区域定义为输入中具有相同值的所有区域。 各区域无需相连。 栅格和要素都可用于区域输入。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为栅格,则其必须为整型栅格。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为要素,则将使用输入值栅格(Python 中的 in_value_raster)的像元大小和像元对齐方式在内部将其转换为栅格。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)与输入值栅格(Python 中的 in_value_raster)的像元大小不同,则输出像元大小的值将为输入的最大值,且输入值栅格将在内部用作捕捉栅格。 如果像元大小相同,但是像元未对齐,则输入值栅格将在内部用作捕捉栅格。 在执行区域操作之前,上述任一情况都会触发内部重采样。

    如果区域输入和值输入均为具有相同像元大小的栅格,并且像元已对齐,则可将其直接应用于工具中,且工具执行期间不会对其进行内部重采样。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为点要素,则其可能具有值输入栅格的任何特定像元内所含的多个点。 对于这样的像元,区域值将通过具有最低 ObjectID 字段的点(例如 OIDFID)来确定。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)具有重叠面,则无法针对每个单独的面执行区域分析。 因为要素输入已转换为栅格,所以每个位置只能拥有一个值。

    另一种方法就是要为每个面区域反复进行区域操作并核对结果。

  • 区域字段参数(在 Python 中为 zone_field)值必须为整型或文本类型。

    在指定输入栅格或要素区域数据(Python 中的 in_zone_data)时,默认区域字段将为第一个可用的整型或文本字段。 如果不存在其他有效字段,则 ObjectID 字段(如 OIDFID)将成为默认字段。

  • 默认情况下不生成区域直方图。要创建图表,请选中作为输出表中行的区域参数(在 Python 中将 zones_as_rows 参数设置为 ZONES_AS_ROWS),然后指定一个 输出图表名称(在 Python 中为 out_graph 参数)。区域直方图只能在 ArcGIS Pro 应用程序内创建,并且不受独立脚本的支持。

  • 通过取消选中作为输出表中行的区域参数创建输出表时,标注字段将包含值栅格数据集或图层符号系统标注中的值,具体取决于如何指定输入值栅格。

    通过选中作为输出表中行的区域参数创建输出表时,标注字段将包含区域栅格中的值。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

参数

标注说明数据类型
输入栅格数据或要素区域数据

定义区域的数据集。

可通过整型栅格或要素图层来定义区域。

Raster Layer; Feature Layer
区域字段

包含定义每个区域的值的字段。

该字段可以是区域数据集的整型字段或字符串型字段。

Field
输入赋值栅格

包含用于创建直方图的值的栅格。

Raster Layer
输出表

输出表文件。

表的格式由输出位置和路径确定。 默认情况下,如果在地理数据库工作空间中,则输出将是一个地理数据库表;如果在文件工作空间中,则输出将为 dBASE 表。

根据表中的信息创建可选图形输出。

Table
输出图形名称
(可选)

用于显示的输出图形的名称。

将在独立表下的内容窗格中列出该图。

Graph
作为输出表中行的区域
(可选)

指定输入值栅格中的值在输出表中的表示方式。

  • 未选中 - 区域将表示为字段。这是默认设置。
  • 选中 - 区域将表示为行。
Boolean

ZonalHistogram(in_zone_data, zone_field, in_value_raster, out_table, {out_graph}, {zones_as_rows})
名称说明数据类型
in_zone_data

定义区域的数据集。

可通过整型栅格或要素图层来定义区域。

Raster Layer; Feature Layer
zone_field

包含定义每个区域的值的字段。

该字段可以是区域数据集的整型字段或字符串型字段。

Field
in_value_raster

包含用于创建直方图的值的栅格。

Raster Layer
out_table

输出表文件。

表的格式由输出位置和路径确定。 默认情况下,如果在地理数据库工作空间中,则输出将是一个地理数据库表;如果在文件工作空间中,则输出将为 dBASE 表。

根据表中的信息创建可选图形输出。

Table
out_graph
(可选)

用于显示的输出图形的名称。

Graph
zones_as_rows
(可选)

指定输入值栅格中的值在输出表中的表示方式。

  • ZONES_AS_FIELDS区域将表示为字段。这是默认设置。
  • ZONES_AS_ROWS区域将表示为行。
Boolean

代码示例

ZonalHistogram 示例 1(Python 窗口)

本示例创建了分区直方图 .dbf 表和图形文件。

from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZonalHist = ZonalHistogram("zoneras", "zonfield", "valueras", "znhist_tbl.dbf",
                              "znhist_graphl", "ZONES_AS_ROWS")
ZonalHistogram 示例 2(独立脚本)

本示例创建了分区直方图 .dbf 表。

# Name: ZonalHistogram_Ex_02.py
# Description: Creates a zonal histogram output table
#              showing the amount of value cells 
#              for each unique input zone.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inZoneData = "zonras"
zoneField = "zonfield"
inValueRaster = "valueras" 
outTable = "C:/sapyexamples/output/zonehist_tb2.dbf" 

# Execute ZonalHistogram
ZonalHistogram(inZoneData, zoneField, inValueRaster, outTable)

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题