在Python中通过纬度计算地球半径-复制公式

时间:2019-06-03 03:47:03

标签: python geometry geospatial

我正在尝试复制在此网站上找到的公式,该公式与计算给定纬度下的地球半径有关。

https://rechneronline.de/earth-radius/ 要么 https://planetcalc.com/7721/

然后我使用网站上的计算器来确定我是否正确复制了公式。

我编写了以下代码,但是我无法复制网站上给出的答案(当纬度等于零时除外)。由于方程非常复杂,因此我什至将每个部分拆分为一个单独的变量。但是,我的结果仍然不正确。

示例代码

import math

def radius (B):
  a = 6378.137  #Radius at sea level at equator
  b = 6356.752  #Radius at poles

  c = (a**2*math.cos(B))**2
  d = (b**2*math.sin(B))**2
  e = (a*math.cos(B))**2
  f = (b*math.sin(B))**2

  R = math.sqrt((c+d)/(e+f))


  return R

例如,该网站使用纬度2(变量B)来计算地球半径为6378.111km。我的回答是6360.481公里。

任何帮助将不胜感激。预先谢谢你

2 个答案:

答案 0 :(得分:3)

python数学库将弧度作为三角函数的输入,

因此请确保将B的值转换为弧度

可以通过B=math.radians(B)

完成

最终代码:

import math
def radius (B):
    B=math.radians(B) #converting into radians
    a = 6378.137  #Radius at sea level at equator
    b = 6356.752  #Radius at poles
    c = (a**2*math.cos(B))**2
    d = (b**2*math.sin(B))**2
    e = (a*math.cos(B))**2
    f = (b*math.sin(B))**2
    R = math.sqrt((c+d)/(e+f))
    return R

答案 1 :(得分:1)

这是因为math.cosmath.sin的参数以弧度给出。您需要在函数顶部将度数转换为弧度:

B *= math.pi/180