趣味大地测量学/主题 01 · 地球椭球理论/第 3 集 · 从圆球到椭球/硬核

从一条基线推出一张三角网

已知一条边和两端的角,正弦定理就能解出另外两条边;把解出的边一格格传下去,十几行代码就能从一条短基线推出远处的距离,也能看出读角误差传到远端有多大。

正文提到,只要定下一条边和两端的角,另外两条边就能直接算出来。这一页把推算走一遍:先解一个三角形,再一格格接下去,最后看看测角如果稍有偏差,远端会差出多少。

解一个三角形

先明确记号:基线两端记作 与 ,已知边长为 ;远处的目标记作 。在 、 测得的角分别记作 和 , 处的角记作 。三角形的角不用常见的 、、,是因为本课里 专指纬度。 所对的边 记作 , 所对的边 记作 。

图 1金色是量出、测出的,灰色是算出来的。三角形按下面课程示例的数值画:c = 5 km,α = 60°,β = 70°。

第三个角用内角和求出,另外两条边由正弦定理解出:[1]

正弦定理:三角形每条边与所对角的正弦之比都相等,代入已知边 就能解出另外两边。

来看一组课程示例:设 km,,,算得 , km, km。三角形里角越大,对边就越长;远处的角 最小,基线便是三边中最短的一条——三角测量就是这样把距离一步步延伸出去的。

一格接一格

刚算出的边,直接作为下一个三角形的已知边。要确定每个点的位置,还必须明确方向:已知边的方向转过测得的角,就是新边的走向。下面这段 Python 代码根据一条基线和一组观测记录,推算出各点的平面坐标。记录里的每一行对应一个三角形,包含已知边两端的点号,以及在这两端测得的角。

# 三角网推算:一条基线 + 一串测得的角 → 各点坐标(平面近似)
from math import sin, cos, atan2, hypot, radians, pi

def third_point(P, Q, alpha, beta):
    """P、Q 已知;在 P 测得角 α、在 Q 测得角 β(度)。求第三点,它落在从 P 看向 Q 的左手边"""
    a, b = radians(alpha), radians(beta)
    PQ = hypot(Q[0] - P[0], Q[1] - P[1])
    PN = PQ * sin(b) / sin(pi - a - b)          # 正弦定理:PN 对着 Q 处的角 β
    t = atan2(Q[1] - P[1], Q[0] - P[0]) + a     # PN 的方向:从 PQ 转过 α
    return (P[0] + PN * cos(t), P[1] + PN * sin(t))

pts = [(0.0, 0.0), (5.0, 0.0)]                  # 基线两端(0 号、1 号点),单位 km
survey = [(0, 1, 75, 70), (2, 1, 70, 72), (2, 3, 68, 70), (4, 3, 66, 70),
          (4, 5, 60, 62), (6, 5, 58, 60), (6, 7, 57, 60), (8, 7, 60, 58)]
for i, j, alpha, beta in survey:                # 每一行:已知边两端的点号,两端测得的角
    pts.append(third_point(pts[i], pts[j], alpha, beta))

x, y = pts[-1]
print(f"{len(pts) - 1} 号点:({x:.2f}, {y:.2f}) km,离 0 号点 {hypot(x, y):.2f} km")
9 号点:(60.59, 60.74) km,离 0 号点 85.79 km
图 2上面那段代码推出的三角网,按比例画出:只有 0、1 之间那条基线是量出来的,其余各边都由角算出。

新点始终落在「从第一个点看向第二个点」的左侧,因此记录里的点号顺序要交替排列,三角网才会朝着一个方向铺展开。从 5 km 的基线出发,推算八个三角形后,末点已在 85.79 km 之外,达到基线的十七倍多,中途再没量过一次距离。记录中的角度只是课程示例,并不对应具体的历史测量;代码也把地面近似为平面,只作演示。实际的三角网往往绵延数百公里,还要顾及地面弯曲,这里不再展开。

读角误差怎样传到远端

这套推算只用到两样测量结果:基线和角。基线量错,影响很规整:式中每条边都与 成正比,基线长了千分之一,整张网的每条边就跟着长千分之一,形状不变。读角出错则不同:三角形的形状变了,偏差还会顺着算出的边一格格传下去。

读角误差传到远端有多大,可以用数值实验来说明:给每个角加入按正态分布抽取的随机读数误差,标准差设为 1′ 和 10″ 两档。这两档数值参考了深入三角测量怎样成了量地球的尺里斯涅尔与皮卡尔的读角精度,属于课程假设,并非对他们仪器的刻画。每档重复推算五千次,看看末点的距离散得多开(代码接在上一段后运行):

import random, statistics

def far_distance(err):
    """每个角加一个随机读数误差(正态分布,标准差 err 度),返回末点离 0 号点多远(km)"""
    pts = [(0.0, 0.0), (5.0, 0.0)]
    for i, j, alpha, beta in survey:
        da, db = random.gauss(0, err), random.gauss(0, err)
        pts.append(third_point(pts[i], pts[j], alpha + da, beta + db))
    return hypot(*pts[-1])

random.seed(1)
for name, err in [("1′", 1 / 60), ("10″", 10 / 3600)]:
    runs = [far_distance(err) for _ in range(5000)]
    sd = statistics.pstdev(runs) * 1000                # 标准差,换算成米
    print(f"读角误差约 {name}:远端距离的标准差约 {sd:.0f} m")
读角误差约 1′:远端距离的标准差约 93 m
读角误差约 10″:远端距离的标准差约 16 m

读角误差约 1′ 时,远端距离的标准差约 90 米,约为全长的千分之一;若精细到 10″,标准差便降到约 15 米,约为全长的五千分之一。读角误差缩到六分之一,远端的散布也跟着缩到六分之一。换个随机种子,结果只差一两米,量级不变。

实际作业还要做校核,这里举两种办法。一是把每个三角形的三个角全部测出,用内角和做一次校核,也能据此评估测量精度。[2]二是在网的远端另测一条校核基线,与推算出的长度做比对。十八世纪赤道测量队的三角网,从基多附近一条约 6273 托阿斯的基线铺开(托阿斯是法国旧长度单位,约合 1.949 米;这条基线约 12 千米);到了南端,又实测了一条 5259 托阿斯(约 10 千米)的校核基线,推算值与实测值只差约一托阿斯,也就是 2 米左右,约为这条基线长的五千分之一。[3]

参考文献与资料

  1. [1] Jay Abramson / OpenStax. Algebra and Trigonometry 2e — Non-right Triangles: Law of Sines (2021). 教材§10.1:正弦定理;已知两角及其夹边(ASA)解三角形。 ↩
  2. [2] 美国国防测绘局(Defense Mapping Agency). Geodesy for the Layman(DMA TR 80-003)— Chapters I–III (1984). 官方资料第一章:皮卡尔的弧度测量(木杆量基线、望远镜测角、对数计算)、卡西尼南北两段的比较、秘鲁与拉普兰的测量;第三章:Triangulation(基线与两端的角;每个三角形的角通常都要测)、Astronomic Position Determination(铅垂线与恒星)。美国政府出版的大地测量入门手册,由 NOAA 国家大地测量局网站转载。 ↩
  3. [3] Isaac Todhunter. A History of the Mathematical Theories of Attraction and the Figure of the Earth, Vol. I (1873). 学术史专著第三章 Art. 100(卡西尼《地球的大小与形状》1720 年出版)、Art. 102—104(皮卡尔 1669 年起测,基线 5663 托阿斯、一度 57060 托阿斯;卡西尼的三角形全从皮卡尔基线推算;南段每度 57097、北段 56960 托阿斯);第七章 Art. 184、190、195、197(拉普兰 1736—1737 年测量、57437.9 托阿斯、当时版画中的莫佩尔蒂及十九世纪初的复测);第八章 Art. 209、211(波莱尼的书信)、Art. 236—238(法国一度的各次修订、卡西尼·德蒂里 1740 年的重测、基线误差不改变比例);第十二章 Art. 353、355、358(秘鲁的基线与校核基线;布格 56753、拉孔达明 56749 托阿斯)。托阿斯(toise)是法国旧长度单位;拉普兰的数值后来复测时被发现偏大。 ↩

这一集的其他支线

深入
  • 三角测量怎样成了量地球的尺
  • 牛顿的两条水渠
  • 三个一度的账本
硬核
  • 把卡宴的重力算一遍
趣味大地测量学GEODESY本页可独立阅读,与视频内容一致武汉大学时频地测中心标志

鄂ICP备2025098393号-2