给定两组坐标及对应半径,求交点经纬度的计算方法
嘿,咱们来一步步拆解这个问题:
结论先行
根据你给出的参数,这两个圆是外离状态,没有交点。不过我会把推导过程和“如果满足相交条件该怎么算”都给你讲清楚。
第一步:计算两圆心的实际距离
你的两个圆心经度完全相同(都是103.4278°),只有纬度差:Δlat = 3.540485 - 3.540437 = 0.000048°
在地球表面,纬度方向每度对应的直线距离大约是111139米(这是地球平均半径换算来的近似值),所以两圆心之间的直线距离D为:D = 0.000048° × 111139 m/° ≈ 5.3347米
第二步:判断两圆是否存在交点
两圆的位置关系由圆心距离D和半径之和/差的关系决定:
- 外切(1个交点):
D = d₁ + d₂ - 相交(2个交点):
|d₁ - d₂| < D < d₁ + d₂ - 内切(1个交点):
D = |d₁ - d₂| - 无交点:
D > d₁ + d₂(外离)或D < |d₁ - d₂|(内含)
代入你的参数:d₁=4m,d₂=1m,半径和为5m,而咱们算出来的D≈5.3347m > 5m,属于外离,所以这两个圆没有交点。
补充:如果满足相交条件,怎么计算交点经纬度
假设两圆心距离D落在|d₁-d₂|和d₁+d₂之间,因为两个点距离极近,球面曲率的影响可以忽略,直接用平面几何近似计算就可以:
- 建立临时平面坐标系:以第一个圆心为原点(0,0),纬度方向为x轴,经度方向为y轴(因为两圆心经度相同,y轴方向的初始距离为0)。
- 第二个圆心在临时坐标系里的坐标就是
(D, 0)。 - 设交点坐标为
(x,y),根据两个圆的方程:- 圆1:
x² + y² = d₁² - 圆2:
(x - D)² + y² = d₂²
- 圆1:
- 把两个方程相减消去
y²,解出x:x = (d₁² - d₂² + D²) / (2D) - 把x代入圆1的方程,解出y:
y = ±√(d₁² - x²) - 把临时坐标转换回经纬度:
- 交点纬度 = 第一个圆心纬度 +
(x / 111139)° - 交点经度 = 第一个圆心经度 +
(y / (111139 × cos(lat)))°(这里的lat可以用第一个圆心的纬度近似,因为变化极小)
- 交点纬度 = 第一个圆心纬度 +
比如如果D=4m(满足3<4<5),代入就能算出两个交点的具体经纬度啦。
内容的提问来源于stack exchange,提问作者April




