有关字段计算的基础知识
使用键盘输入值并不是编辑表中值的唯一方式。在某些情况下,为了设置字段值,可能要对单条记录甚至是所有记录执行数学计算。ArcMap 中的字段计算器可以对所有或所选记录进行简单和高级计算。
此外,还可以基于字段计算属性表中的面积、长度、周长和其他几何属性。
对要素几何执行计算
如果使用要素图层的属性表,则使用计算几何对话框可以很容易地计算面积、周长、3D 周长、长度、3D 长度、质心坐标、点坐标、最小和最大 z 值或起点、中点和终点坐标。
执行计算时,可以使用数据源或数据框的坐标系。此外,如果当前选择了一条或多条记录,则仅计算所选记录。
下表显示了不同类型要素的可计算几何属性:
面积 |
周长 |
3D 周长 |
长度 |
3D 长度 |
质心的 x、y 或 z 坐标 |
点的 x、y 或 z 坐标 |
起点的 x、y 或 z 坐标 |
终点的 x、y 或 z 坐标 |
中点的 x、y 或 z 坐标 |
z 坐标的最小值和最大值 | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
多边形要素 |
|
|
|
|
| ||||||||||
线要素 |
|
|
|
|
|
| |||||||||
注记要素 |
| ||||||||||||||
点要素 |
|
仅当要素含有 z 值时,才能计算 z 坐标值和 3D 测量值。
ArcGIS 中的几何计算是平面的 - 也就是说,在投影空间中计算而不是在球空间或测地线空间中计算。仅当所使用的坐标系为投影坐标系时,才能计算要素的面积、长度或周长。如果数据源使用了一个地理坐标系,如 WGS 1984 并且未投影,则可以使用数据框的投影坐标系来执行计算。或者,也可以投影数据源。
“计算几何”可处理任意数字或文本字段。为了得到最精确的结果,可使用双精度字段类型(小数位数根据需要自行定义)。如果使用整型字段,则结果会四舍五入为一个整数。如果使用文本字段,则可以执行一些自定义操作(如包含单位缩写、选择格式等),以便为标注轻松地创建随时可用的字段。
“字段计算器”可能被禁用的原因
如果右键单击某字段时,字段计算器或计算几何命令不可用,请检查以下一些事项:
- 右键单击了由 ArcGIS 管理的字段,因此导致无法手动编辑该字段。这些字段包括 ObjectID(OID 或 FID)字段、地理数据库要素类的 Shape_Length 和 Shape_Area 字段、coverage 中点或多边形要素类的面积、周长和 <Coverage># 字段,以及 coverage 中 arc 要素类的 FNODE#、TNODE#、LPOLY#、RPOLY#、长度、和 <Coverage># 字段。
- 表中的数据源为只读,不能建立文件夹或地理数据库的写入权限,或者在 ArcMap 中不能正常修改数据源格式。还可以使用 EDG 或 SDC 数据或 ArcIMS 服务,它们通常可用于打开属性表但不能修改数据。
- 您未处于编辑会话中,只有处于编辑状态才能计算数据。例如,当处理版本化 ArcSDE 数据或参与地理数据库拓扑、几何网络或关系类的要素类时,必须处于编辑会话中。
- 该字段从属于您的表所连接的表。您只能计算源表中字段的值。
- 字段可能是无法计算的栅格、BLOB 或全局 ID 类型。要查看字段类型,可右键单击该字段然后单击“属性”。
使用“字段计算器”进行高级计算
字段计算器支持使用 VBScript 或 Python 代码块(对选定的字段进行计算前会处理数据)执行高级计算。例如,使用人口统计数据时,可能想要找到美国每个县的最大年龄组所占人口的百分比。可以使用逻辑结构(如“IF...THEN”语句和“Select Case”块)创建一个脚本来预处理数据。这可以轻松快捷地执行复杂计算。
简单的字段计算器表达式可直接输入至表达式文本框内。较复杂的表达式,如,多行脚本、循环和分支可在计算字段工具对话框上的代码块框中输入。