C++中用于操作空间数据的推荐框架有哪些?

7

有哪些推荐的C++空间数据操作框架?

我需要一个多边形对象、点对象和一些操作,如联合、交集、距离和面积。我需要输入WGS84(经度,纬度)坐标,并得到以平方公里为单位的面积。

我更喜欢免费/开源的框架,但也愿意听取建议。

编辑:不幸的是,我需要一个非GPL解决方案。LGPL可以接受。

6个回答

5

GEOS 是一个开源的(LGPL)C++ 几何/拓扑引擎。或许适合你?

查找这些内容的有用地方是 O'Reilly 网站上的有用文章,以及 OSGeo,这是一个协作组织,支持开源地理空间技术。


4
我也推荐通用几何库,它最近已经被评审并最终收入Boost C++库集合。作为Boost的一部分,GGL现在被称为Boost.Geometry,更确切地说是Boost.Geometry aka GGL,通用几何库
其他有用的工具:
  • ORFEO Toolbox(又名OTB)- 图像处理算法库
  • MetaCRS - 一个涵盖多个投影和坐标系统相关技术的项目。
  • libgeotiff - 仅用于GeoTIFF操作。

3
  • CGAL开源项目提供了一个C++库,可以方便地访问高效可靠的几何算法。CGAL被用于各种需要几何计算的领域,如:计算机图形学、科学可视化、计算机辅助设计和建模、地理信息系统、分子生物学、医学成像、机器人和运动规划、网格生成、数值方法。

  • 通用几何库(geometrylibrary.geodan.nl,目前处于“预览4”阶段)提供了几何算法的通用实现,可以处理用户定义的几何形状。这些算法包括一些著名且经常需要的算法,如点在多边形内、多边形面积、点到点距离、点到线距离、线剪裁和多边形剪裁、凸包。它还包含变换算法、地图投影和选择算法。除了算法外,该库还提供可以使用的几何类,但通用算法不依赖于它们。(建议包含在Boost中)


2

GEOS是几何模型,而GDAL/OGR则是一种空间数据抽象库,支持栅格矢量

通过使用这些库,您还可以处理不同的坐标系统(如从/到WGS84的转换),因为它们都在内部使用Proj.4。要以米为单位查找距离,可以将其从WGS84转换为使用米的东西,如UTM。


1

根据这些计算的复杂程度,您可能需要考虑编写自己的代码。如果您只是在处理面积,那么编写自己的代码可能是速度最快且不会产生冗余的最佳选择。

否则,地理基础类(GFC)库 是您最好的选择。


感谢您提供GFC的指针。不幸的是,我需要一个非GPL的解决方案,因此我澄清了我的问题。 - Alex B

1

对于您的要求来说,它并不够全面和高级,但是如果要进行大地测量变换,您可以使用NGA出色的GEOTRANS库:

http://earth-info.nga.mil/GandG/geotrans/

这将让您在WGS84经纬度和本地笛卡尔坐标系之间进行转换。C代码经过充分测试、文档化,并且是公共领域。


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