有哪些推荐的C++空间数据操作框架?
我需要一个多边形对象、点对象和一些操作,如联合、交集、距离和面积。我需要输入WGS84(经度,纬度)坐标,并得到以平方公里为单位的面积。
我更喜欢免费/开源的框架,但也愿意听取建议。
编辑:不幸的是,我需要一个非GPL解决方案。LGPL可以接受。
有哪些推荐的C++空间数据操作框架?
我需要一个多边形对象、点对象和一些操作,如联合、交集、距离和面积。我需要输入WGS84(经度,纬度)坐标,并得到以平方公里为单位的面积。
我更喜欢免费/开源的框架,但也愿意听取建议。
编辑:不幸的是,我需要一个非GPL解决方案。LGPL可以接受。
CGAL开源项目提供了一个C++库,可以方便地访问高效可靠的几何算法。CGAL被用于各种需要几何计算的领域,如:计算机图形学、科学可视化、计算机辅助设计和建模、地理信息系统、分子生物学、医学成像、机器人和运动规划、网格生成、数值方法。
通用几何库(geometrylibrary.geodan.nl,目前处于“预览4”阶段)提供了几何算法的通用实现,可以处理用户定义的几何形状。这些算法包括一些著名且经常需要的算法,如点在多边形内、多边形面积、点到点距离、点到线距离、线剪裁和多边形剪裁、凸包。它还包含变换算法、地图投影和选择算法。除了算法外,该库还提供可以使用的几何类,但通用算法不依赖于它们。(建议包含在Boost中)
根据这些计算的复杂程度,您可能需要考虑编写自己的代码。如果您只是在处理面积,那么编写自己的代码可能是速度最快且不会产生冗余的最佳选择。
否则,地理基础类(GFC)库 是您最好的选择。
对于您的要求来说,它并不够全面和高级,但是如果要进行大地测量变换,您可以使用NGA出色的GEOTRANS库:
http://earth-info.nga.mil/GandG/geotrans/
这将让您在WGS84经纬度和本地笛卡尔坐标系之间进行转换。C代码经过充分测试、文档化,并且是公共领域。