7

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

我正在寻找多边形对象、点对象以及一些操作,如联合、交集、距离和面积。我需要在 WGS84 (lon,lat) 中输入坐标并以平方公里为单位获取面积。

我更喜欢免费/开源框架,但愿意接受建议。

编辑:不幸的是,我需要一个非 GPL 解决方案。LGPL 没问题。

4

6 回答 6

4

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

寻找这些东西的有用地方是 O'Reilly 网站上的这篇有用的文章,还有OSGeo,它是一个支持开源地理空间东西的合作项目。

于 2009-06-28T20:01:03.720 回答
4

我还推荐Generic Geometry Library,它最近已被审查并最终被Boost C++ Libraries的集合所接受。正如 Boost 中包含的那样,GGL 现在称为 Boost.Geometry,更准确地说是Boost.Geometry aka GGL,Generic Geometry Library

其他有用的工具

  • ORFEO Toolbox (aka OTB) - 图像处理算法库
  • MetaCRS - 一个包含多个投影和坐标系统相关技术的项目。
  • libgeotiff用于唯一的 GeoTIFF 操作
于 2010-01-25T23:01:09.460 回答
3
  • CGAL开源项目以 C++ 库的形式提供对高效可靠几何算法的轻松访问。CGAL 用于需要几何计算的各个领域,例如:计算机图形学、科学可视化、计算机辅助设计和建模、地理信息系统、分子生物学、医学成像、机器人和运动规划、网格生成、数值方法。

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

于 2009-06-29T20:23:29.510 回答
2

GEOS用于几何模型,GDAL/OGR 用于支持RastersVectors的空间数据抽象库。

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

于 2009-07-07T02:10:54.960 回答
1

根据这些计算的复杂程度,您可能需要考虑编写自己的计算。如果您只是在做区域,那么这可能是您提高速度和不臃肿的最佳选择。

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

于 2009-06-25T21:29:32.403 回答
1

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

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

这将使您可以在 WGS84 纬度/经度和本地笛卡尔坐标系之间进行转换。C 代码经过良好测试、记录,并且是公共领域。

于 2009-06-29T19:00:27.727 回答