使用Python评估EGM上的大地水准面高度

6 投票
2 回答
3218 浏览
提问于 2025-04-17 23:19

有没有什么Python库可以用来计算地球的高程,比如用egm84、egm96和egm2008这些模型?

我知道geographiclib这个库里有一个函数(http://geographiclib.sourceforge.net/html/classGeographicLib_1_1GravityModel.html),可以用这三个模型来计算地球高程,但我不知道怎么在Python中使用它(如果真的可以的话)。你能告诉我怎么用吗?如果不能用Python,那有没有其他库可以使用呢?

谢谢。

2 个回答

0

我制作了一个tiff文件,这个文件是基于(https://geographiclib.sourceforge.io/html/geoid.html#geoidinst)的EGM2008-1数据。我还把它转换成EPSG4326格式,并从-180.00000 87.37000这个点开始(这是左上角的坐标)。

2

这里有一些相关的工作:

https://github.com/mrJean1/PyGeodesy

他们的使用说明不是最新的,不过这里有个简要总结:

首先,从这个链接下载你选择的地球模型,比如这样:

wget https://sourceforge.net/projects/geographiclib/files/geoids-distrib/egm2008-5.tar.bz2
bzip2 -d egm2008-5.tar.bz2
tar -xvf egm2008-5.tar

然后在你的Python脚本中使用:

import pygeodesy
from pygeodesy.ellipsoidalKarney import LatLon
ginterpolator = pygeodesy.GeoidKarney("./geoids/egm2008-5.pgm")

# Make an example location
lat=51.416422
lon=-116.217151

# Get the geoid height
single_position=LatLon(lat, lon)
h = ginterpolator(single_position)
print(h)

这样可以给你这个位置的椭球体偏差,单位是米:

-11.973145778529625

这大致和我们在使用在线计算器时得到的结果相符。

撰写回答