用Python计算地球在纬度上的半径-复制一个公式

3
我正在尝试复制我在以下网站上找到的公式,它涉及计算给定纬度下地球的半径:

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.111公里。我的答案是6360.481公里。
非常感谢您的帮助。提前致谢。

那个公式假设变量B保存了地心纬度。使用大地纬度要常见得多。例如,如果您取一个地图的纬度,它将是一个大地纬度。GPS接收器通常提供大地纬度。给定大地纬度的地球半径公式在您包含的第二个链接中给出。它比您使用的公式要简单一些。 - dmuir
2个回答

5

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
这是因为math.cosmath.sin的参数以弧度为单位给出。你需要在函数顶部将角度转换为弧度:
B *= math.pi/180

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接