参考:先了解无线电通视距概念。
科普:地球曲率通视距
Deepseek:无线链路预算分析助手
【传奇人物】菲涅耳
说明:此文的编写过程、编程过程都大量借助了AI,主要是deepseek。也有当deepseek没有反应的时候用元宝(deepseek)以及豆包辅助。
0.凡尘前记:
大约10年前,刚从大厂出来的我,虽然通信专业学习+工作快15年,知道很多书本知识和理论推导,甚至是矩阵计算。但还不知道计算无线电通视距的公式,就是因为工作中用不到,也是因为课本中没讲到。
这个厂家是我第一次外场测试的厂家,从这家原员工朋友圈发现了这张照片,我就借用了过来。那个帅哥,也是铿锵一面,再也没有相见,可是我对他印象倒是挺深刻,现在记得他的身材模样,以及有点沙哑的声音。
外场测试后,我写下了来自许昌第一篇外场测试报告,也是公司开始正式推广产品的开始,后来被公司内部很多人传看,甚至是拿着给客户传阅的测试报告中,那时用的还是直接三角形模型,毕竟飞行距离只有30km,所以与实际测试的差别并不大,所以导致自己也没有意识到。那个公司现在已经关门,回来后查阅了一些资料,就发现了通视距计算公式。
前两天,开始写一个可视化小工具显示通视距的具体表现。我知道很多人对公式推导计算很是恐惧,一眼不对就完全崩溃,可是对图形化展示反而接受度很高。所以做了这些小工具。
在编写代码计算两点距离这个过程,看到三个数字:
4/33.574.12
仅仅是下意识的,我忽然觉得这三个数字似乎有什么关系?尝试了一下,马上发现是平方关系。
(4.12/3.57)^2=4/3
我就觉得,这应该不是偶然的。
回想起来地球等效距离=地球距离*4/3,以及之前零柒碎打了解过4.12相对3.57也是考虑了地球等效距离的说法,所以决定花点时间彻底搞清楚其数学、物理关系。
1.正文
1.1两个公式的应用
    本来业界常用无线电通视距计算公式1:
D1=4.12*(sqrt(h1)+sqrt(h2))
但是,经过大量测试验证,我们发现以上公式很多条件下,尤其是可能非理想无遮挡条件下,其实很难达到。所以,工程上经常采用稍有保守的一下公式如下:
无线电通视距计算公式2:
D2=3.57*(sqrt(h1)+sqrt(h2))
那么,到底这两个公式有什么联系和区别?
我们将3.57与4.12命名为等效因子。
1.2怎么得到:等效因子*(sqrt(h1)+sqrt(h2))?
从数学上,我们先来看公式1或2。两者的区别就是等效因子不同。
无线电波(和光波)大致沿直线传播,但地球表面是弯曲的。因此,一个天线能“看到”地球上的最远距离,是其视线与地球曲面相切的点,这个距离就是视距
切点的两侧距离加起来,就是两个节点的最远通视距。
以下为飞行物、地面船舶、地球相对关系,由图可见,我们可以通过三角形和圆的关系,把D计算出来。
假定,光是沿直线传播【实际上,因为近地球空间有空气、杂质、水分等存在,光纤不是沿直线传播,会有弯曲,后面再介绍。】
    那么,地面接收节点,空中节点、地球,就会形成一个类似以下的图。
    这是一个数学问题,我们可以把绿色线切点的左半部分先计算出来。

步骤 1: 建立几何模型

半径为 R 的地球。

将一个天线放在点 A,高度为 h

从点 A作地球的切线,切点为 T

距离AT就是从高度 h能看到的最远距离 d1,地球上的点

我们现在要寻找d1和h之间的关系。

步骤 2: 关键几何关系

让我们观察直角三角形 OT𝐴,其中:

  • O 是地心。

  • T 是切点,所以 OT ⟂ A𝑇

  • OA 是地心到天线的距离,即 OA = R + h

  • OT 是地球半径,即 OT = R

根据勾股定理 (Pythagorean theorem),在直角三角形 OTA 中:

(OA)² = (OT)² + (AT)²


代入已知量:

(R + h)² = R² + d1²

步骤 3: 展开并简化方程

展开方程左边的平方项:

R² + 2Rh + h² = R² + d1²

两边同时减去 

2Rh + h² = d1²

步骤 4: 合理化近似 (关键步骤)

我们先假定在近地面通信条件下,在实际情况中,天线的高度 h (通常几米到几百米) 与地球半径 R (约6371 km = 6,371,000 m) 相比是微不足道的。即 h << R

当然,如果譬如是卫星之间通信,h与地球半径相比并不可忽略,所以,这个时候就不能把h忽略掉。

因此,项  (一个非常小的数的平方) 与项 2Rh (一个非常大的数乘以一个很小的数) 相比,可以忽略不计。

例如,假设 h = 100 m:

h² = 10,000 m²2Rh ≈ 2 * 6,371,000 * 100 = 1,274,200,000 m²

 还不到 2Rh 的十万分之一,完全可以忽略。

于是,方程 2Rh + h² = d1² 可以简化为:

2Rh ≈ d1²

步骤 5: 求解视线距离 d1

由上式直接可得:

d1 ≈ sqrt(2Rh)

这就是一个高度为 h 的天线到地平线的距离公式。

步骤 6: 扩展到双站情况 (两个天线)

现在考虑两个天线,一个高度为 h₁,另一个高度为 h₂

  • 第一个天线能看到的地平线距离是 d₁ ≈ sqrt(2Rh₁)

  • 第二个天线能看到的地平线距离是 d₂ ≈ sqrt(2Rh₂)

当两天线之间的地面距离刚好等于 d₁ + d₂ 时,它们正好处于彼此无线电视距的极限位置。因此,两个天线之间的最大通信距离 D为:

D ≈ d₁ + d₂ ≈ sqrt(2Rh₁) + sqrt(2Rh₂)
这就得到了我们原来看到的公式。只是还没有看到3.57和4.12

1.2  怎么得到3.57?

再看以下公式:

D ≈ d₁ + d₂ ≈ sqrt(2Rh₁) + sqrt(2Rh₂)
简化起见,其中,R为地球半径,h1和h2为两侧天线高度。
R=6371km
一般,为了方便使用,h1和h2的单位取m。

但是,为了开方后结果的单位是一致的,实际上需要将h1和h2的单位折算为km才可以使用。这个地方有点绕,实际上保持长度单位一致,才能使用勾股定理。

所以,直接当做数学问题来解释就行。
D ≈ d₁ + d₂ ≈ sqrt(2*6371*h1/1000) + sqrt(2*6371*h2/1000)
所以,
D ≈ d₁ + d₂ ≈ sqrt(2*6317/1000)*(sqrt(h1) + sqrt(h2))=3.57*(sqrt(h1) + sqrt(h2))
    这就得到了我们常用的保守一些的公式。实际上是没有考虑地球等效半径的因素。    

1.3  为什么是4.12?

引入有效地球半径 Rₑ (考虑大气折射),

光线和电磁波传输类似,以下为太阳光传输因大气折射引起的传播路线示意图。因为光传播和电磁波传播的原理是一样的,所以借用光传播的一些图。

以上的推导假设电波严格沿直线传播。

但实际上,地球大气层的密度随高度变化,导致无线电波发生折射,向下弯曲。

反之,如果地球大气层密度是随高度下降会发生什么?

再考虑,如果没有大气层密度是均匀的,会发生什么?

这种梯度变化,用普通数学已经没法计算,必须用到微积分了。

这使得电波传播的路径比纯直线更远。为了在原有的几何模型中方便地计入这种效应,工程师们引入了有效地球半径的概念。

我们定义一个系数 k,使得:
有效地球半径 Rₑ = k × R
其中,R 是地球真实半径。

标准大气折射条件下,经验值 k = 4/3。这意味着大气的折射效应使得地球的曲率看起来只有原来的 3/4,或者说等效地球半径是真实半径的 4/3 倍。

所以,当 Rₑ = 4/3*R带入替代R
D ≈ d₁ + d₂ ≈ sqrt(2Rh₁) + sqrt(2Rh₂)
可以得到:
D ≈ d₁ + d₂ ≈ sqrt(2*6371*4/3*h1/1000) + sqrt(2*6371*4/3*h2/1000)
计算得到:
D ≈sqrt(4/3)*3.57*(sqrt(h1)+sqrt(h2))=4.12*(sqrt(h1)+sqrt(h2))

这就得到了常见的另一个比较激进的通视距计算公式。

1.3  为什么是4/3?

标准大气折射系数 k = 4/3 并非一个随意的假设,而是源于对大气特性无线电波传播物理的深入理解。

它是一个工程上的等效模型,其合理性可以通过以下两种主要方式来解释:

1.3.1 解释一:几何光学与射线弯曲(物理推导)

这种解释最直观地展示了“等效地球半径”是如何产生的。

1)折射的本质

无线电波在大气中传播的速度 v 取决于空气的折射率 nv = c / n)。靠近地面的空气密度大,折射率 n 稍高;随着高度增加,空气密度降低,折射率 n 减小。根据斯涅尔定律(Snell’s Law),波会向折射率高的区域弯曲。因此,无线电波会持续地、轻微地向地面弯曲,其路径是一条向下凹的曲线,而非直线。

2)曲率计算

无线电波传播路径的曲率半径 ρ 与折射率随高度的梯度 dn/dh 有关。推导出的公式为:

1/ρ ≈ - (dn/dh)

负号表示当 dn/dh 为负值(折射率随高度增加而减小)时,波束向下弯曲。

地球表面的曲率半径为 1/R。3

3)“拉直”波束:为了简化计算,工程师们构想出一个“等效地球”模型。

在这个模型中,我们假设电波是直线传播的(波束曲率 1/ρ = 0),但地球的曲率变小了(地球半径被放大为 Rₑ)。这样,在等效模型中的直线路径,就对应于真实世界中的弯曲路径。

Deepseek编程:通视距计算为什么是4.12或3.57:六千字

4)推导k值

要使等效模型成立,从几何上看,波束相对于等效地球的曲率 必须等于 真实波束相对于真实地球的曲率

数学表达式为:

(1 / Rₑ) = (1 / R) + (dn/dh)


(可以理解为:等效地球的“弯曲程度”补偿了波束的弯曲程度)

将 Rₑ = kR 代入上式:

1/(kR) = 1/R + (dn/dh)
解得:

k = 1 / (1 + R * (dn/dh))
5)代入标准大气值

通过大量测量,在标准大气(Standard Atmosphere)条件下,近地面的折射率梯度经验值为:

dn/dh ≈ -4 × 10⁻⁸ m⁻¹ (即每升高1米,折射率n减少 4e-8)
取地球半径 R ≈ 6.371 × 10⁶ m
将这两个值代入 k 的公式:
k = 1 / (1 + (6.371e6 m) * (-4e-8 m⁻¹))k = 1 / (1 - 0.25484)k = 1 / 0.74516 ≈ 1.341
这个值非常接近 4/3 ≈ 1.3333

因此,k = 4/3 是基于标准大气的典型折射率梯度值得出的一个非常精确且方便的近似值


1.3.2解释二:M-因子与修正折射率(概念等效)

这是另一种理解方式,在雷达和通信系统分析中也非常重要。

1)修正折射率:为了更直接地处理超视距传播等问题,引入了修正折射率 m 的概念。其定义为:

m = n + (h / R)


其中 h 是高度。m 对高度 h 的梯度为 

dm/dh = dn/dh + 1/R

标准大气条件:在标准大气下,dn/dh ≈ -1/R 是一个临界值。代入上式:

dm/dh = (-1/R) + (1/R) = 0
2)与k系数的关系

可以证明,当 dm/dh = 0(即修正折射率不随高度变化)时,等效地球半径系数 k 会变为无穷大(波束弯曲曲率恰好等于地球曲率,即平行于地面传播)。

而标准大气的 dn/dh ≈ -4e-8 m⁻¹ 非常接近这个临界值 -1/R ≈ -1.57e-7 m⁻¹。为了在等效模型中处理这种“近乎临界”的情况,k=4/3 提供了一个完美的、有限大的等效半径,使得计算变得简单直观。


为什么这个系数如此重要且被定为“标准”?

1)代表性-4e-8 m⁻¹ 这个梯度值是对全球中纬度地区多年气象数据统计后的一个平均值,能较好地代表“正常”的大气状况。

所以,如果气候的变化,会影响这个梯度。

2)简化计算4/3 是一个非常简洁的分数,心算和笔算都很方便。它使得复杂的射线追踪问题转化为简单的几何问题(d = sqrt(2kRh))。

3)一致性:全球的无线电工程师、雷达设计师和通信系统规划者都采用这个共同的标准,确保了设计、预测和法规的一致性。

例如,国际电信联盟(ITU)的建议书中就广泛采用此值。

4)保守性与可靠性:虽然大气条件是变化的(有时折射更强,k > 4/3;有时更弱,k < 1),但使用 k=4/3 进行设计可以在大多数情况下提供可靠的性能预测,是一个良好的工程折衷方案。

总结

标准折射系数 k = 4/3 并不是一个魔数,而是基于标准大气的典型物理特性(折射率梯度 dn/dh ≈ -4×10⁻⁸ m⁻¹)通过严格的几何光学推导出的一个等效模型参数。 它将复杂的电磁波弯曲问题简化为一个简单的、基于直线传播的几何模型,极大地便利了工程计算和分析,并已成为全球公认的标准。


1.4公式的适用范围说明

显然,以上公式是有适用范围的。我们可以最先想到的就是高度对公式实用性的影响。

1)高度h较大,公式中近似而忽略的部分,就不能忽略。

2)高度h较大,大气折射率是不是还可以按照之前的等效?

显然,以上两个疑问都有效。

误差分析场景:真正的误差分析需要在违背模型假设的场景下,将近似公式的结果与更高级的模型进行对比。我们将分析两种主要场景:

3) 低高度场景:与考虑地面衍射的模型对比。

结论:在低高度下,由于地面障碍物和衍射效应,实际可靠通信距离大幅缩短。近似公式的计算结果会严重高估实际距离,误差百分比可以轻松超过100%。随着高度增加至30-50米,地形的影响减小,误差百分比逐渐下降到可接受范围(<10%)。

4)高高度场景:与卫星通信的球面几何模型对比。

高度影响模拟计算

我们以单一天线到地平线的距离为例

(即令 h2=0,公式变为 d = 4.12 * sqrt(h1)),对比其与精确计算值的差异。

  • 精确值d_exact = sqrt(2*R*h + h²) (h 单位:公里)

  • 近似值d_approx = 4.12 * sqrt(h) (h 单位:米)

我们使用 地球等效半径 Rₑ = 8495 km

误差分析总结:
     0.0 km (地面通信     ): -0.0% → 误差极小,可忽略     0.1 km (地面通信     ): -0.0% → 误差极小,可忽略     1.0 km (航空通信     ): -0.0% → 误差很小,工程上完全可接受    10.0 km (航空通信     ): -0.1% → 误差很小,工程上完全可接受   100.0 km (低轨卫星(LEO)): -0.3% → 误差仍然很小 (<0.1%)   500.0 km (低轨卫星(LEO)): -1.5% → 误差仍然很小 (<0.1%)  1000.0 km (低轨卫星(LEO)): -2.9% → 误差仍然很小 (<0.1%)  2000.0 km (中轨卫星(MEO)): -5.5% → 误差开始显著 (-5.5%),需谨慎使用 20200.0 km (高轨/深空    ): -32.4% → 误差极大 (-32.4%),公式完全失效 35786.0 km (高轨/深空    ): -43.3% → 误差极大 (-43.3%),公式完全失效100000.0 km (高轨/深空    ): -61.9% → 误差极大 (-61.9%),公式完全失效
关键结论:1. 在0-1000km高度范围内,4.12公式极其准确 (误差<0.1%)2. 超过1000km后,误差开始缓慢增加3. 在GEO轨道高度(35786km),误差达到约-68.6%,公式完全失效4. 4.12公式只适用于高度1000km以下的场景

最终总结

高度范围
近似公式精度
适用性
0-1000 km
误差 < 0.1%
极其准确

,完全适用
以上结论为在数学上的准确。如果考虑地理因素,则高度太低也会较大误差。
1000-10000 km
误差逐渐增大
开始失效,需谨慎使用
> 10000 km
误差 > 50%
完全失效

,必须使用精确模型

但是,注意,高度太低,其实因为地球表面非理想球形,地形、建筑、植被等影响,也不适合完全采用该模型做分析。而是应该采用其他考虑多径、绕射的模型。

因此,4.12近似公式只适用于高度1000km以下的场景,包括地面通信、航空通信、低轨卫星等。对于中高轨卫星(如GPS、GEO),必须使用精确几何模型 

d = √(2*Rₑ*h + h²)

1.4.2 为什么该公式不适用于卫星通信?

卫星通信完全打破了上述所有前提条件:

1)高度假设失效:低地球轨道(LEO)卫星的高度通常在 500公里以上,地球同步轨道(GEO)卫星高度达 35,786公里。这些高度与地球半径(~6371km)处于同一数量级甚至更大。推导公式时 h << R 的基础假设完全崩溃, 项不能再被忽略。几何关系必须使用完整的勾股定理精确计算。

2)“地平线”不再是极限:对于卫星通信,我们几乎从不关心“地平线”问题。恰恰相反,我们希望卫星始终在地平线之上。通信链路的目标是建立稳定的连接,而不是寻找极限距离。地面站的天线通常具有很大的仰角(Elevation Angle)。

3)传播模型不同:卫星与地面之间的通信是地空链路(Space-Earth Link),其传播模型是自由空间传播(Free-Space Propagation),其路径损耗遵循 FSPL = (4πd / λ)²,其中距离 d 是直线距离。这与地面视距传播模型有本质区别。

请直接采用几何模型计算。

凡尘后记:
其实是为了做一个通视距的可视化工具,然后就衍生的又学习了一遍相关知识,又学习到了不少之前理所当然认为的知识。
earth_EM_radians = 1*4/3  # 电磁波等效地球半径因子,可配置,默认[14/3],其中,1对应3.57,4对应4.124.12/3.57=sqrt(4/3)R = 6371 * earth_EM_radians  # 地球半径(km)h = 5 # 额外半径(km),可配置,默认值1,大于0,小于20t = 200  # 通信距离(km),可配置,默认100,大于0a_height = 500/1e3  # A点高度(km),配置范围[0, r],默认值2/1e3,大于0

然后,按照上面的参数,可以得到节点位置示意图如下图所示。
实际上,以上的分析并不是难点,尤其在现在AI工具的辅助下,大部分脑海中有一些印象的知识点都可以通过AI相互连接起来。
如果有细心的读者,其实是这个通视距可视化和实际上地球物理位置的差别比较大?为什么这样处理?其实这个处理是这个工具设计过程中的稍微复杂一些的东西,其中,这部分实现主要考虑效果的展示,而不是相对位置的精确计算,采用了一些变形、拟合的算法。供大家发散参考。
如果我们真的采用地球半径与真实的高度的保持相对大小,那么绘图的效果会是如何?

其实我好久没有原创内容了,一个是今年工作比较忙,另一个是今年要多陪孩子学习锻炼。所以,虽然因为工作中一些培训的需要做了一些工具,这些工具主要是向公司内部的方案和支持部门推广,也没考虑向外推广,虽然写了一些设计说明和使用指导,也没有时间专门写东西推出来。
编写和调试这个代码,在借助AI的条件下,我大约用了一天时间。
如觉得有用,可以赞赏一顿海底捞火锅,我把源码发给你。
如果是学生,一顿肯德基也可以。哈哈哈