在 C++ 中操作空间数据的推荐框架有哪些?
我正在寻找多边形对象、点对象以及一些操作,如联合、交集、距离和面积。我需要在 WGS84 (lon,lat) 中输入坐标并以平方公里为单位获取面积。
我更喜欢免费/开源框架,但愿意接受建议。
编辑:不幸的是,我需要一个非 GPL 解决方案。LGPL 没问题。
在 C++ 中操作空间数据的推荐框架有哪些?
我正在寻找多边形对象、点对象以及一些操作,如联合、交集、距离和面积。我需要在 WGS84 (lon,lat) 中输入坐标并以平方公里为单位获取面积。
我更喜欢免费/开源框架,但愿意接受建议。
编辑:不幸的是,我需要一个非 GPL 解决方案。LGPL 没问题。
我还推荐Generic Geometry Library,它最近已被审查并最终被Boost C++ Libraries的集合所接受。正如 Boost 中包含的那样,GGL 现在称为 Boost.Geometry,更准确地说是Boost.Geometry aka GGL,Generic Geometry Library。
其他有用的工具
CGAL开源项目以 C++ 库的形式提供对高效可靠几何算法的轻松访问。CGAL 用于需要几何计算的各个领域,例如:计算机图形学、科学可视化、计算机辅助设计和建模、地理信息系统、分子生物学、医学成像、机器人和运动规划、网格生成、数值方法。
通用几何库(geometrylibrary.geodan.nl,目前处于“预览版 4”中)提供几何算法的通用实现,使用用户定义的几何。这些算法包括一些众所周知且经常需要的算法,如多边形中的点、多边形面积、点到点距离、点到线距离、线裁剪和多边形裁剪、凸包。它还包含变换算法、地图投影和选择算法。除了算法之外,该库还提供了可能使用的几何类,但通用算法不依赖于它们。(建议包含在 Boost 中)
根据这些计算的复杂程度,您可能需要考虑编写自己的计算。如果您只是在做区域,那么这可能是您提高速度和不臃肿的最佳选择。
否则,地理基础类 (GFC) 库是您最好的选择。
对于您的要求,它不够全面和高级,但是对于进行大地测量变换,您可以使用 NGA 出色的 GEOTRANS 库:
http://earth-info.nga.mil/GandG/geotrans/
这将使您可以在 WGS84 纬度/经度和本地笛卡尔坐标系之间进行转换。C 代码经过良好测试、记录,并且是公共领域。