以表格显示分区统计 (空间分析)
插图
用法
-
区域定义为输入中具有相同值的所有区。各区无需相连。栅格和要素数据集都可用于区域输入。
如果区域输入和值输入均为具有相同分辨率的栅格,则可直接使用它们。
如果分辨率不同,则可先应用内部重采样以使其相一致,然后再执行区域操作。
倘若输入中存在任何 NoData 像元,重采样就可能在输出中产生比您预期更大的 NoData 区域。要避免此种情况,可重采样粗糙输入栅格,提高输入栅格的分辨率,或者在“栅格分析”环境下将像元大小设置为输入的最小值。
如果区域输入为栅格数据集,则该输入必须具有属性表。通常会自动为整型栅格数据创建属性表,但是某些情况下可能不会这样做。您可以使用构建栅格属性表来创建一个属性表。
如果区域输入是要素数据集,则可在内部对其应用“矢量至栅格”转换。要确保转换结果与值栅格完全对齐,建议您检查环境设置和栅格设置中的范围和捕捉栅格是否设置正确。
由于内部栅格必须具有属性表,因此在转换中不创建属性表的情况下将会发生错误。如果发生此错误,则使用要素转栅格、面转栅格、点转栅格或折线转栅格直接转换要素数据集。按先前提示中所述内容为其生成属性表,然后使用生成的栅格作为“区域”输入。
如果区域输入为要素相对较小的要素数据集,则需要牢记,信息的分辨率需要适合于值栅格的分辨率。如果单个要素的区域相似于或小于值栅格中单个像元的区域,则在要素转栅格转换过程中,某些区域可能不会显示。
要对此进行显示,需尝试使用适当的要素转栅格转换工具将要素数据集转换为栅格,然后将分辨率指定为值栅格的分辨率。通过此转换产生的结果会指明区域操作的默认输出将是什么。
如果输出中的结果比您可能已预期的少,则需要确定表示要素输入细节的适当的栅格分辨率,然后使用此分辨率作为“栅格分析环境设置”的像元大小。
如果区域输入为点要素数据集,则其可能具有值输入栅格的任何特定像元内所含的多个点。对于这种像元,区域值将通过具有最高要素 ID 的点来确定。
如果区域要素输入具有叠置的面,则无法为每一个单独的面执行区域分析。因为要素输入已转换为栅格,所以每个位置只能拥有一个值。
另一种方法就是要为每个面区域反复进行分区统计并核对结果。
建议您仅使用栅格作为区域输入,因为这可使您更好地控制“矢量至栅格”转换。这将有助于确保您始终获得预期的结果。
在指定输入区域数据时,默认区域字段将为第一个可用的有效字段。如果不存在其他有效字段,则 ObjectID 字段(例如,OID 或 FID)将成为默认字段。
如果为区域字段选择保留字段(例如,OBECTID、FID 或 OID),则这可能导致结果中存在一些不明确现象。结果包括特定输出格式类型以及指定区域字段所必需的特定保留字段名称。如果对于特定输出格式,指定字段具有与保留字段相同的名称,则在输出中以结果中所有字段名均唯一的方式更改区域字段的名称。
输入值栅格可以为整型,也可以为浮点型。但是,当它是浮点型时,无法对众数、中值、少数和变异性执行分区计算。
对于众数和少数计算,当存在平局时,区域的输出将基于平局值的最低值。
-
将根据统计类型的设置在输出表中创建一个字段或一系列字段。值输入为整型时,可对所有统计数据(面积、最小值、最大值、范围、平均值、标准差、总和、变异度、众数、少数和中值)进行计算。如果值输入为浮点型,将不会计算众数、少数、中值和变异度统计数据。
-
输出表中各项下的各个值的数据类型取决于所执行的分区计算。有关任何统计的特定行为的详细信息,请参阅“分区统计”的工作原理。
-
输出表中的行数与区域数相同。
-
默认情况下,此工具会利用多核处理器。可利用的最大核数限制在 4 个以内。
如果希望工具使用的核数较少,则可使用 parallelProcessingFactor 环境设置。
语法
参数 | 说明 | 数据类型 |
in_zone_data |
定义区域的数据集。 可通过整型栅格或要素图层来定义区域。 | Raster Layer | Feature Layer |
zone_field | 保存定义每个区域的值的字段。 该字段可以是区域数据集的整型字段或字符串型字段。 | Field |
in_value_raster |
含有要计算统计数据的值的栅格。 | Raster Layer |
out_table |
将包含每个区域中值的汇总的输出表。 表的格式由输出位置和路径确定。如果未指定扩展名,则该表将为 INFO 表。如果位置在地理数据库中,将创建此特殊类型(例如文件或 ArcSDE 地理数据库)的输出表。如果名称包含 .dbf 扩展名,输出将为 dBASE 格式。 | Table |
ignore_nodata (可选) |
指示值输入中的 NoData 值是否会影响其所落入区域的结果。
| Boolean |
statistics_type (可选) |
要计算的统计类型。
| String |
代码实例
本示例对面要素定义的区域内的栅格值进行了汇总,并将结果记录在表中。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZSaT = ZonalStatisticsAsTable("zones.shp", "Classes", "valueforzone",
"zonalstattblout", "NODATA", "SUM")
本示例对面要素定义的区域内的栅格值进行了汇总,并将结果记录在 .dbf 文件中。
# Name: ZonalStatisticsAsTable_Ex_02.py
# Description: Summarizes values of a raster within the zones of
# another dataset and reports the results to 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"
inValueRaster = "valueforzone"
outTable = "zonalstattblout02.dbf"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ZonalStatisticsAsTable
outZSaT = ZonalStatisticsAsTable(inZoneData, zoneField, inValueRaster,
outTable, "NODATA", "MEAN")