【问题标题】:Calculating the radius of earth by latitude in Python - replicating a formula在 Python 中按纬度计算地球半径 - 复制公式
【发布时间】:2019-06-03 12:06:23
【问题描述】:

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

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.481km。

任何帮助将不胜感激。提前谢谢你

【问题讨论】:

  • 该公式假设变量 B 持有地心纬度。使用大地纬度要普遍得多。如果您以地图的纬度为例,它将是大地纬度。 GPS 接收器通常会给出大地纬度。给定大地纬度的地球半径公式在您包含的第二个链接中给出。它比您使用的要简单一些。

标签: python geometry geospatial


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    B *= math.pi/180
    

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多