跳到主要内容

计算几何与计算字段

字段计算用于在属性表中批量生成或更新字段值,常见用途包括:

  • 计算几何属性:为点/线/面要素写入坐标、长度、面积、周长等。
  • 计算业务指标:用表达式由已有字段派生新字段(例如密度、等级、标识码等)。

字段计算

  1. 打开目标图层的属性表。
  2. 在属性表的【工具】中选择:
    • 【计算几何】(几何属性写入字段)
    • 【计算字段】(表达式批量计算)

如需先了解属性表的基础操作(筛选、选择、字段管理等),可先阅读 矢量数据属性表编辑

image-20260214111128165

计算几何

计算几何用于把几何信息写入属性字段。典型输出包括:

  • 点要素:X/Y(或经纬度)坐标。
  • 线要素:长度(可按指定单位写入)。
  • 面要素:面积、周长(可按指定单位写入)。

下表汇总了“计算几何”可选的【几何属性】以及会自动新增并写入的字段名称。

POINT

几何属性自动新增字段字段说明
POINT_X_Y_Z_MPOINT_X
POINT_Y
POINT_Z
POINT_M
点的 x/y/z/m 坐标。

MULTIPOINT

几何属性自动新增字段字段说明
CENTROIDCENTROID_X
CENTROID_Y
CENTROID_Z
CENTROID_M
质心点的 x/y/z/m 坐标。
EXTENTEXT_MIN_X
EXT_MIN_Y
EXT_MAX_X
EXT_MAX_Y
要素外包矩形的最小/最大 x/y 坐标值。
PART_COUNTPART_COUNT要素包含的部分数量。

POLYLINE

几何属性自动新增字段字段说明
LENGTH_GEODESICLENGTH_GEO线的测地线长度。
LINE_START_MID_ENDSTART_X
START_Y
START_Z
START_M
MID_X
MID_Y
MID_Z
MID_M
END_X
END_Y
END_Z
END_M
线(或面边界)第一个点、长度中点、最后一个点的 x/y/z/m 坐标。
CENTROIDCENTROID_X
CENTROID_Y
CENTROID_Z
CENTROID_M
质心点的 x/y/z/m 坐标。
CENTROID_INSIDEINSIDE_X
INSIDE_Y
INSIDE_Z
INSIDE_M
输入要素内或输入要素上的中心点 x/y/z/m 坐标。
PART_COUNTPART_COUNT要素包含的部分数量。
POINT_COUNTPNT_COUNT要素包含的点数。
LINE_BEARINGBEARING线的起始-结束方位角,取值范围 0~360;0 表示北、90 表示东、180 表示南、270 表示西。
EXTENTEXT_MIN_X
EXT_MIN_Y
EXT_MAX_X
EXT_MAX_Y
要素外包矩形的最小/最大 x/y 坐标值。

MULTIPOLYLINE

几何属性自动新增字段字段说明
LENGTHLENGTH线的长度。
LENGTH_GEODESICLENGTH_GEO线的测地线长度。
LINE_START_MID_ENDSTART_X
START_Y
START_Z
START_M
MID_X
MID_Y
MID_Z
MID_M
END_X
END_Y
END_Z
END_M
线(或面边界)第一个点、长度中点、最后一个点的 x/y/z/m 坐标。
CENTROIDCENTROID_X
CENTROID_Y
CENTROID_Z
CENTROID_M
质心点的 x/y/z/m 坐标。
CENTROID_INSIDEINSIDE_X
INSIDE_Y
INSIDE_Z
INSIDE_M
输入要素内或输入要素上的中心点 x/y/z/m 坐标。
PART_COUNTPART_COUNT要素包含的部分数量。
POINT_COUNTPNT_COUNT要素包含的点数。
LINE_BEARINGBEARING线的起始-结束方位角,取值范围 0~360;0 表示北、90 表示东、180 表示南、270 表示西。
EXTENTEXT_MIN_X
EXT_MIN_Y
EXT_MAX_X
EXT_MAX_Y
要素外包矩形的最小/最大 x/y 坐标值。

POLYGON / MULTIPOLYGON

几何属性自动新增字段字段说明
AREAPOLY_AREA面的面积。
AREA_GEODESICAREA_GEO面的测地线面积。
PERIMETER_LENGTHPERIMETER面周长或边界长度。
PERIMETER_LENGTH_GEODESICPERIM_GEO面周长或边界的测地线长度。
CENTROIDCENTROID_X
CENTROID_Y
CENTROID_Z
CENTROID_M
质心点的 x/y/z/m 坐标。
CENTROID_INSIDEINSIDE_X
INSIDE_Y
INSIDE_Z
INSIDE_M
输入要素内或输入要素上的中心点 x/y/z/m 坐标。
LINE_START_MID_ENDSTART_X
START_Y
START_Z
START_M
MID_X
MID_Y
MID_Z
MID_M
END_X
END_Y
END_Z
END_M
面边界第一个点、边界长度中点、边界最后一个点的 x/y/z/m 坐标。
PART_COUNTPART_COUNT要素包含的部分数量。
POINT_COUNTPNT_COUNT要素包含的点数。
EXTENTEXT_MIN_X
EXT_MIN_Y
EXT_MAX_X
EXT_MAX_Y
要素外包矩形的最小/最大 x/y 坐标值。
提示

“测地线”相关的几何量(如 LENGTH_GEOAREA_GEOPERIM_GEO)采用测地线口径计算;输出单位以界面中选择的单位设置为准。

坐标系与单位(关键)

  • 几何计算结果的单位与坐标系强相关:
    • 投影坐标系通常以米为单位(更适合长度/面积)。
    • 地理坐标系(经纬度)以度为单位,直接做“平面长度/面积”往往不符合业务直觉。
  • 建议做法:
    • 需要“米/平方米”结果时,优先使用投影坐标系数据,或选择测地线口径的几何计算(以界面提供选项为准)。

操作建议

  1. 先新增字段再写入:对重要字段,建议先创建新字段(例如 len_marea_m2),确认结果无误后再替换原字段。
  2. 先小范围验证:可先对少量要素计算验证数值数量级,再全量计算。
  3. 注意多部件要素:多部件线/面通常会按整体几何输出一个长度/面积值。

计算字段

计算字段用于用表达式对字段批量赋值,支持常见的数学运算、逻辑判断与函数调用。

表达式写法要点

  • 字段引用:通常可直接使用字段名。
  • 条件赋值:常见写法为 where(condition, x, y)
  • 逻辑运算:逐要素逻辑通常使用 &(与)、|(或)、~(非),并建议用括号明确优先级。
  • 多行赋值:可先计算中间变量再写入目标字段(是否支持以界面为准)。

常见示例

  1. 计算密度(面要素):
Density = Population / AREA
  1. 条件分级:
Level = where(Value >= 80, 'A', where(Value >= 60, 'B', 'C'))
  1. 同时满足多个条件:
Flag = where((Type == 'main') & (Value > 0), 1, 0)
注意

不同版本的表达式函数与关键字可能略有差异。若你需要使用几何函数(如 AREALENGTH 或测地线口径的几何量),建议参照工具箱的表达式说明并以界面函数列表为准。

与“矢量计算器”工具的关系

如果你需要更复杂的表达式(几何函数、测地线函数、多行赋值等),可以参考工具箱中的 计算字段 (矢量计算器)。两者的表达式体系通常保持一致或高度相似。

常见问题

计算结果不符合预期

  • 先检查坐标系:地理坐标系下的“平面计算”会导致单位为度。
  • 再检查单位:长度(m/km)与面积(m2/km2)是否选择正确。
  • 最后检查字段类型:输出字段若为整型可能会截断小数。

计算很慢

  • 先通过筛选缩小要计算的记录范围。
  • 优先在投影坐标系下计算长度/面积,避免不必要的复杂测地线计算。