WGS84 经度米函数

问题描述 投票:0回答:3

我找到了以纬度为单位的米函数,它在here给出:

111132.954 - 559.822 * cos(2 * phi) + 1.175 * cos(4 * phi) // where phi is geodetic latitude

对于经度函数,我能找到的最好的方程是它下面的方程,即

pi * a * cos(phi) / (180 * sqrt(1 - e^2 * sin^2(phi)))

出现(如此处所示),

e
是椭球体的偏心率,
a
是赤道半径。 WGS84 是所讨论的椭球体,我同时拥有
a
b
,因此我可以直接计算
e
或被
实事求是地告诉 它是 0.0818192

现在我的问题很简单:

这是我应该使用的正确方程吗以便与通常获得的 GPS 角度兼容?我的理解是,现在所有的GPS设备(事实上,所有的GPS设备永远)都使用WGS84大地纬度和经度(其中大地纬度的假想角线实际上并不穿过地球中心,但经度的线却穿过地球中心),因此对我来说采用球面近似数学是愚蠢的。

发布这个问题的原因是为了得到这个行业中某人的点头,他们可以为我验证我实际上没有找错树,或者我的假设犯了严重错误。在我迄今为止进行的时间紧迫的研究中,我看到的大多数解决方案都建议简单地使用基于球面经度和纬度的三角表达式。尽管它们可能足以满足我的需求,但当我知道我可以通过大约相同的工作量获得更准确的值时,我拒绝使用它们。

geolocation gps geocoding
3个回答
0
投票
不,我认为这不是正确的公式:

对于米每度,对于几乎所有应用,只需将

cos(latitude)

 系数应用于赤道处的米每度就足够了。

但这取决于你想计算什么,为什么你需要米每度?

(我需要将纬度/经度转换为笛卡尔坐标)
两种方法之间 75° 处的差异为 90m 和 28km,因此对于角度计算或到笛卡尔空间的转换,这几乎没有影响。
如果不超过纬度 80°,这一切都是有效的。在极地地区 > 纬度 80°,您必须将所有计算更改为极坐标变换。 (例如 UPS)


0
投票
不。 我在 StackExchange 上的一篇题为“理解度数公式长度”的文章中找到了答案。 它使用与维基百科页面地球半径相同的公式。 公式在这个 C 例程中:

void Radii(double lat) { double deg2rad = 3.141592653589793 / 180.0; // PI double a = 6378.1370; // radius at equator in kilometers double e2 = 0.0066943799901413165; double OneMinus_e2 = 1.0 - 0.0066943799901413165; double deg2radX1000 = (PI/180.0)*1000.0; lat *= deg2rad; u = 1.0-e2*sin(lat)*sin(lat); latmetersperdegree = (OneMinus_e2/u)*(a/sqrt(u))*deg2radX1000; lonmetersperdegree = cos(lat)*(a/sqrt(u))*deg2radX1000; }
    

-2
投票
好吧,仅仅检查球面近似值与所讨论的方程有多相似并不完全是火箭科学(考虑到我玩过的 KSP 数量,这甚至也不像是一个合适的习语):

更多 WolframAlpha 恶作剧

这足以让我信服,真的...

© www.soinside.com 2019 - 2024. All rights reserved.