Gis 如何将大地测量位置转换为与铯地形模型一起工作的ECF位置
我想在珠穆朗玛峰的顶端画一个点。到昨晚为止,我最有可能的候选代码是我借用来进行大地测量到ecef转换的代码(来自PySatel.coord)。今天早上回顾后,它似乎是正确的:Gis 如何将大地测量位置转换为与铯地形模型一起工作的ECF位置,gis,geospatial,coordinate-systems,cesium,czml,Gis,Geospatial,Coordinate Systems,Cesium,Czml,我想在珠穆朗玛峰的顶端画一个点。到昨晚为止,我最有可能的候选代码是我借用来进行大地测量到ecef转换的代码(来自PySatel.coord)。今天早上回顾后,它似乎是正确的: a = 6378.137 b = 6356.7523142 esq = 6.69437999014 * 0.001 e1sq = 6.73949674228 * 0.001 f = 1 / 298.257223563 def geodetic2ecef(lat, lon, alt): """Convert ge
a = 6378.137
b = 6356.7523142
esq = 6.69437999014 * 0.001
e1sq = 6.73949674228 * 0.001
f = 1 / 298.257223563
def geodetic2ecef(lat, lon, alt):
"""Convert geodetic coordinates to ECEF.
Units are degrees and kilometers.
"""
lat, lon = radians(lat), radians(lon)
xi = sqrt(1 - esq * sin(lat))
x = (a / xi + alt) * cos(lat) * cos(lon)
y = (a / xi + alt) * cos(lat) * sin(lon)
z = (a / xi * (1 - esq) + alt) * sin(lat)
return x, y, z
我从维基百科上获取了珠穆朗玛峰的纬度/经度/高度。我将上述代码提供的ECF坐标乘以1000(m/km),然后在CZML中定位对象。我得到的ECF位置为:[302995.411221301245640733.983083752981975.8695256836]。使用默认地形提供程序(如中所述),该点明显高于珠穆朗玛峰的峰值
以下是相关的CZML片段:
{"position":
{"cartesian": [302995.41122130124, 5640733.98308375, 2981975.8695256836]},
"id": "ellipsoid-1",
"ellipsoid":
{
"radii": {"cartesian": [3545.5375159540376,
164.44985193756034,
164.62702908803794]},
"material": {"solidColor": {"color": {"rgba": [0, 255, 0, 100]}}}
},
"orientation": {"unitQuaternion": [0.00014107125875577922,
-0.011462389405915903,
-0.010254110199791062,
-0.70702315200093502]}
}
这里有几个因素在起作用 首先,铯用于地形测量的原始数据可能低于珠穆朗玛峰的预期高度。我们使用CGIAR SRTM数据集,因此其常见问题解答中的此项是相关的: 为什么有些山区的山峰明显低于应有的高度 如前所述,许多原始数据空洞集中在山区和积雪地区。因此,高山地区的许多山峰实际上是插值的。如果不使用高分辨率协变量进行插值,插值无法确定数据空洞实际上是一个峰值,并倾向于“展平”峰值,从而导致低估该区域的真实高程。这个问题在版本4中基本上得到了解决 他们说这在v4中得到了很大的解决,铯使用的版本,所以希望这第一个因素不是实际的问题 第二,我们对源地形数据进行处理,以便与铯一起使用,这可能会使峰值变平一点。这个问题将很快得到纠正,希望在未来几个月内得到纠正 第三,维基百科提供了高于平均海平面(MSL)的高度。MSL是一个复杂的曲面,在数学上很难处理,因此您的大地测量2ECEF没有这样做。相反,它和铯一样,假设高度是相对于WGS84椭球体的,而WGS84椭球体是一个更好的表面 NGA有一个网站,可用于查找WGS84椭球体上方的MSL高度,也称为大地水准面高度: 据报道,珠穆朗玛峰(北纬27°59′17〃,东经86°55′31〃)的MSL比WGS84低28.73米。如果你从维基百科上报道的山峰高度中减去这个数字,你至少应该更接近了 此页面包含有关以编程方式计算大地水准面高度的信息: 我建议在15分钟的大地水准面高度文件上插值,而不是根据系数计算高度 与问题没有直接关系的几个其他注意事项:
- 铯有将LLA(我们称之为制图)转换为笛卡尔坐标的代码。请参见椭球体。制图中心
- 您可以在CZML中以制图度数或制图半径(而不是笛卡尔坐标)指定坐标,然后铯将自动为您进行转换。但是,在指定高度时,仍必须调整大地水准面。另外,不要忘记经度是第一位的