计算几何与计算字段
字段计算用于在属性表中批量生成或更新字段值,常见用途包括:
- 计算几何属性:为点/线/面要素写入坐标、长度、面积、周长等。
- 计算业务指标:用表达式由已有字段派生新字段(例如密度、等级、标识码等)。
字段计算
- 打开目标图层的属性表。
- 在属性表的【工具】中选择:
- 【计算几何】(几何属性写入字段)
- 【计算字段】(表达式批量计算)
如需先了解属性表的基础操作(筛选、选择、字段管理等),可先阅读 矢量数据属性表编辑。

计算几何
计算几何用于把几何信息写入属性字段。典型输出包括:
- 点要素:X/Y(或经纬度)坐标。
- 线要素:长度(可按指定单位写入)。
- 面要素:面积、周长(可按指定单位写入)。
下表汇总了“计算几何”可选的【几何属性】以及会自动新增并写入的字段名称。
POINT
| 几何属性 | 自动新增字段 | 字段说明 |
|---|---|---|
| POINT_X_Y_Z_M | POINT_XPOINT_YPOINT_ZPOINT_M | 点的 x/y/z/m 坐标。 |
MULTIPOINT
| 几何属性 | 自动新增字段 | 字段说明 |
|---|---|---|
| CENTROID | CENTROID_XCENTROID_YCENTROID_ZCENTROID_M | 质心点的 x/y/z/m 坐标。 |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | 要素外包矩形的最小/最大 x/y 坐标值。 |
| PART_COUNT | PART_COUNT | 要素包含的部分数量。 |
POLYLINE
| 几何属性 | 自动新增字段 | 字段说明 |
|---|---|---|
| LENGTH_GEODESIC | LENGTH_GEO | 线的测地线长度。 |
| LINE_START_MID_END | START_XSTART_YSTART_ZSTART_MMID_XMID_YMID_ZMID_MEND_XEND_YEND_ZEND_M | 线(或面边界)第一个点、长度中点、最后一个点的 x/y/z/m 坐标。 |
| CENTROID | CENTROID_XCENTROID_YCENTROID_ZCENTROID_M | 质心点的 x/y/z/m 坐标。 |
| CENTROID_INSIDE | INSIDE_XINSIDE_YINSIDE_ZINSIDE_M | 输入要素内或输入要素上的中心点 x/y/z/m 坐标。 |
| PART_COUNT | PART_COUNT | 要素包含的部分数量。 |
| POINT_COUNT | PNT_COUNT | 要素包含的点数。 |
| LINE_BEARING | BEARING | 线的起始-结束方位角,取值范围 0~360;0 表示北、90 表示东、180 表示南、270 表示西。 |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | 要素外包矩形的最小/最大 x/y 坐标值。 |
MULTIPOLYLINE
| 几何属性 | 自动新增字段 | 字段说明 |
|---|---|---|
| LENGTH | LENGTH | 线的长度。 |
| LENGTH_GEODESIC | LENGTH_GEO | 线的测地线长度。 |
| LINE_START_MID_END | START_XSTART_YSTART_ZSTART_MMID_XMID_YMID_ZMID_MEND_XEND_YEND_ZEND_M | 线(或面边界)第一个点、长度中点、最后一个点的 x/y/z/m 坐标。 |
| CENTROID | CENTROID_XCENTROID_YCENTROID_ZCENTROID_M | 质心点的 x/y/z/m 坐标。 |
| CENTROID_INSIDE | INSIDE_XINSIDE_YINSIDE_ZINSIDE_M | 输入要素内或输入要素上的中心点 x/y/z/m 坐标。 |
| PART_COUNT | PART_COUNT | 要素包含的部分数量。 |
| POINT_COUNT | PNT_COUNT | 要素包含的点数。 |
| LINE_BEARING | BEARING | 线的起始-结束方位角,取值范围 0~360;0 表示北、90 表示东、180 表示南、270 表示西。 |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | 要素外包矩形的最小/最大 x/y 坐标值。 |
POLYGON / MULTIPOLYGON
| 几何属性 | 自动新增字段 | 字段说明 |
|---|---|---|
| AREA | POLY_AREA | 面的面积。 |
| AREA_GEODESIC | AREA_GEO | 面的测地线面积。 |
| PERIMETER_LENGTH | PERIMETER | 面周长或边界长度。 |
| PERIMETER_LENGTH_GEODESIC | PERIM_GEO | 面周长或边界的测地线长度。 |
| CENTROID | CENTROID_XCENTROID_YCENTROID_ZCENTROID_M | 质心点的 x/y/z/m 坐标。 |
| CENTROID_INSIDE | INSIDE_XINSIDE_YINSIDE_ZINSIDE_M | 输入要素内或输入要素上的中心点 x/y/z/m 坐标。 |
| LINE_START_MID_END | START_XSTART_YSTART_ZSTART_MMID_XMID_YMID_ZMID_MEND_XEND_YEND_ZEND_M | 面边界第一个点、边界长度中点、边界最后一个点的 x/y/z/m 坐标。 |
| PART_COUNT | PART_COUNT | 要素包含的部分数量。 |
| POINT_COUNT | PNT_COUNT | 要素包含的点数。 |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | 要素外包矩形的最小/最大 x/y 坐标值。 |
提示
“测地线”相关的几何量(如 LENGTH_GEO、AREA_GEO、PERIM_GEO)采用测地线口径计算;输出单位以界面中选择的单位设置为准。
坐标系与单位(关键)
- 几何计算结果的单位与坐标系强相关:
- 投影坐标系通常以米为单位(更适合长度/面积)。
- 地理坐标系(经纬度)以度为单位,直接做“平面长度/面积”往往不符合业务直觉。
- 建议做法:
- 需要“米/平方米”结果时,优先使用投影坐标系数据,或选择测地线口径的几何计算(以界面提供选项为准)。
操作建议
- 先新增字段再写入:对重要字段,建议先创建新字段(例如
len_m、area_m2),确认结果无误后再替换原字段。 - 先小范围验证:可先对少量要素计算验证数值数量级,再全量计算。
- 注意多部件要素:多部件线/面通常会按整体几何输出一个长度/面积值。
计算字段
计算字段用于用表达式对字段批量赋值,支持常见的数学运算、逻辑判断与函数调用。
表达式写法要点
- 字段引用:通常可直接使用字段名。
- 条件赋值:常见写法为
where(condition, x, y)。 - 逻辑运算:逐要素逻辑通常使用
&(与)、|(或)、~(非),并建议用括号明确优先级。 - 多行赋值:可先计算中间变量再写入目标字段(是否支持以界面为准)。
常见示例
- 计算密度(面要素):
Density = Population / AREA
- 条件分级:
Level = where(Value >= 80, 'A', where(Value >= 60, 'B', 'C'))
- 同时满足多个条件:
Flag = where((Type == 'main') & (Value > 0), 1, 0)
注意
不同版本的表达式函数与关键字可能略有差异。若你需要使用几何函数(如 AREA、LENGTH 或测地线口径的几何量),建议参照工具箱的表达式说明并以界面函数列表为准。
与“矢量计算器”工具的关系
如果你需要更复杂的表达式(几何函数、测地线函数、多行赋值等),可以参考工具箱中的 计算字段 (矢量计算器)。两者的表达式体系通常保持一致或高度相似。
常见问题
计算结果不符合预期
- 先检查坐标系:地理坐标系下的“平面计算”会导致单位为度。
- 再检查单位:长度(m/km)与面积(m2/km2)是否选择正确。
- 最后检查字段类型:输出字段若为整型可能会截断小数。
计算很慢
- 先通过筛选缩小要计算的记录范围。
- 优先在投影坐标系下计算长度/面积,避免不必要的复杂测地线计算。