ArcGIS数据统计及字段计算
1、数据统计分析
如下图所示,在空间分析工具箱和分析工具箱中,均有相关的统计分析工具,使我们能够对已有数据进行统计分析。
其中,面积制表、汇总统计数据、分区统计等等都是常用的工具。现有一植被覆盖图,包含“归属者”(Owner)、“植被类型”(VEG_DESC)、“面积”(area)等字段。需要统计的是,按照归属者统计出每类用地的面积,也就是说,需要统计不同的人所拥有的每种植被覆盖类型的面积是多少。
根据上述要求,利用ArcGIS工具箱中的汇总统计数据、频数及面积制表工具均可实现上述统计要求。汇总统计数据工具可实现如下统计运算:总和、平均值、最大值、最小值、范围、标准差、计数、第一个和最后一个。输出结果表将由包含统计运算结果的字段组成,将使用以下命名约定为每种统计类型创建字段:SUM_FIELD、MAX_FIELD、MIN_FIELD、RANGE_FIELD、STD_FIELD、FIRST_FIELD、LAST_FIELD 和 COUNT_FIELD,同时,还可以指定案例分组字段,将单独为每个唯一属性值计算统计数据,则每个案例分组字段值均有一条对应的记录。如下图所示,对area字段进行总和统计,案例分组字段设置为Owner、VEG_DESC,进而可以得到不同归属者对应的植被类型的面积总数。
频数工具读取表和一组字段,并创建一个包含唯一字段值和每个唯一字段值的出现次数的新表。输出表将包含频率字段和指定的频率字段及汇总字段。汇总字段参数是可选项,选中后则频率计算的唯一属性值将由每个汇总字段的数字属性值进行汇总。Owner、VEG_DESC设置为频数字段,area字段设置为汇总字段,则可获得想要的结果,如下图所示:
面积制表工具用来计算两个数据集之间交叉制表的区域并输出表。针对上述需求,选择同一数据集即可。选择对应的区域字段:Owner、类字段:VEG_DESC即可。如下图所示:
通过面积制表的对话框不难发现,其可针对两个数据集进行处理。此处再增加一个专门针对面积制表工具的应用示例。数据为不同植被覆盖度的栅格图和不同区域归属者的矢量图,现需要统计不同归属者所拥有的不同植被覆盖面积是多少。栅格数据如下:
矢量数据如下图所示:desc_字段记录归属者信息。
利用面积制表工具,输入对应的区域矢量数据和对应的区域字段desc_,输入对应的栅格数据和对应的类字段,如下图所示:
确定后,即可得到不同的归属者所拥有的不同植被覆盖的总数二维表。
2、字段计算
在实际数据处理过程中 ,可能会遇到现有数据源并非是我们所想得到的数据,而需要对已有源数据进行一定的计算处理,得到我们想要的结果。在ArcGIS中Field Calculator,也就是字段计算器是个强大的对属性字段进行各式各样计算的功能,利用字段计算器总能达到事半功倍的效果。
利用字段计算器,用以计算字段值。这些字段值,可以是属性表里相关字段的综合,比如百分比,分解字段等;可以是和图形有关的值,比如点的xy坐标,面的中心点坐标,线的长度等等;也可以是为了满足某种特定需求而创造出来的值。
在ArcMap中,无论是在属性框中右击字段打开的字段计算器还是在工具箱中的字段计算器工具,都支持Python 和 VBScript表达式。
在图层上右键,打开属性表,在要计算的字段上右键,打开字段计算器窗口,属性表中的字段计算器如下图所示:
属性字段计算器包括简单模式和高级模式两种,如下图所示,左图为简单模式,右图为复杂模式:
数据管理工具箱中字段工具集下的字段计算工具如下图所示,与属性表中的字段计算器类似,可实现对指定字段的表达式计算。
通过字段计算器可实现众多而复杂的字段计算,先从最基本最简单的字段批量复制开始。字段批量赋值给字段OWNER批量赋值“ArcGIS”
注意:如果是字符串的话双引号一定要用英文输入法下的双引号,不能用中文输入法的双引号,会报错;如果有选中要素,默认是仅计算选中部分。
2)字段之间赋值
把字段Rowid的值赋批量赋给字段FID
注意:字段间赋值时要考虑到字段类型以及字段里填写的内容,例如文本型的字段再赋给数字型的字段时会出错。需要通过函数进行转换。
在某些情况下,为了设置字段值,可能要对单条记录甚至是所有记录执行数学计算。您可以对所有记录或选中记录执行简单计算和高级计算。此外,还可以在属性表中的字段上计算面积、长度、周长和其他几何属性,可以通过 Python 或 VBScript 执行。
Python 是 ArcGIS 建议使用的脚本语言。如果要访问地理处理功能(包括要素几何),请使用 Python。采用 Python 作为 ArcGIS 10.0 的脚本语言为执行计算提供了许多便利。
通过 Python 表达式和“代码块”参数可执行以下操作:
在表达式中应用任意 Python 函数。
访问地理处理函数和对象。
访问要素几何的属性。
访问新的随机值运算符。
根据 if-then-else 逻辑对值进行重分类。
3)使用其他地理处理工具。
在实际的处理中经常遇到根据条件为属性赋值的情况,下面就介绍如何利用Python批量替换属性列表在的值的简单例子,如下图所示,利用Python为数值型进行范围分析与统计,根据范围值,为属性计算新的分类代码值。
详细代码如下:
def Reclass(WellYield):
if (WellYield <= 50):
return 1
if (WellYield <=150 and WellYield > 50):
return 2
else:
return 3
篇幅有限,此处仅给出一个简单的Python例子,详细的内容,读者可参考ArcGIS相关帮助文档、ESRI中国社区以及ESRI在线帮助等相关资料和资源。另外,在字段计算器中,可以将表达式保存为cal格式文件,可以用记事本打开编辑。对于一个经常用的表达式,可以写好之后保存起来,下次使用的时候,只需要加载过来即可。
转载自:https://blog.csdn.net/u010885059/article/details/53954081