C++库:从笛卡尔坐标系转换为纬度、经度和海拔高度。

3
我正在寻找一个C++库,可以将笛卡尔坐标或球面坐标转换为围绕地球的纬度、经度和海拔高度。然而,海拔高度必须是精确的。这意味着在计算时,该库不能仅仅假设地球是球形的,并且必须能够处理地球表面以上的高度。
到目前为止,我已经发现了两个看起来可能可以做到这一点的库(GeographicLibGeoStarsLib),但两者都似乎是小型项目,没有经过适当的检验。我更喜欢一个更大的项目,或者一个我知道已经经过某种形式的审查,这样我们就可以信任输出,而不需要详细测试。我确实找到了boost. geography,但据我所知它不会计算地理高度。
有人能推荐其他库吗?
谢谢
3个回答

4

我是提到的一个库GeographicLib的作者。您的顾虑是合理的。让我指出一些原因,说明为什么GeographicLib可能符合您的需求:

  • GeographicLib通过Geocentric类(您还可以调查LocalCartesian和Geoid类)具有您想要的功能。

  • 该库由我积极维护。错误很少,并且通常在报告后的几天内修复。

  • 该库小巧自足,不依赖于数十个其他库。

  • GeographicLib遵守的精度标准通常比geotrans或proj.4更高。我通过将结果与高精度计算获得的测试数据进行比较来测量误差,并在文档中报告这些误差。

针对@rashad的查询添加的注释: 报告错误的页面在此处。该页面还描述了如何测量误差。


从你的回答中,“我在文档中报告了这些错误。”。你介意添加一个显示比较结果的链接吗? - rkm
1
我添加了一个带有链接的注释。 - cffk
GeographicLib是一个出色的库,当我处理地理坐标和各种表示之间的转换时,我首先考虑使用它。 - Phil

3

同时还要看 Proj.4 和 GDAL/OGR。我认为后者更有用,因为它包括 Proj.4,但还添加了各种有用的功能,可以读取各种格式(包括投影定义)。关于球面近似:Proj.4 将使用您提供的任何椭球体(Google 大多数情况下都假定是一个球)。


1

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