在C ++中操作空间数据有哪些推荐的框架?
我正在寻找一个多边形对象,点对象,以及一些像union,intersection,distance和area这样的操作。我需要在WGS84(lon,lat)中输入坐标,并获得平方公里的面积。
我更喜欢免费/开源框架,但我愿意接受建议。
编辑:不幸的是我需要一个非GPL解决方案。 LGPL没问题。
答案 0 :(得分:4)
GEOS是一个开源(LGPL)C ++几何/拓扑引擎。可能适合你吗?
在O'Reilly网站上查看此内容的有用位置是useful article,还有OSGeo这是支持开源地理空间内容的合作。
答案 1 :(得分:4)
我还建议最近Generic Geometry Library reviewed Boost C++ Libraries并最终接受ORFEO Toolbox的收集。如Boost中所包含的,GGL现在称为Boost.Geometry,更准确地说是 Boost.Geometry又名GGL,通用几何库。
其他有用的工具
答案 2 :(得分:3)
CGAL开源项目 提供轻松访问高效和 可靠的几何算法 C ++库的形式。使用CGAL 在需要几何的各个领域 计算,如:计算机 图形,科学可视化, 计算机辅助设计和建模, 地理信息系统, 分子生物学,医学成像, 机器人和运动规划,网格 生成,数值方法。
通用几何库(geometrylibrary.geodan.nl,当前位于“预览4”中)提供几何算法的通用实现,使用用户定义的几何。算法包括一些众所周知且经常需要的算法,如多边形点,多边形区域,点对点距离,点到线距离,线条剪裁和多边形裁剪,凸包。它还包含转换算法,地图投影和选择算法。除了算法之外,库还提供了可能使用的几何类,但通用算法并不依赖于它们。 (建议加入Boost)
答案 3 :(得分:2)
GEOS用于Geometry模型,GDAL / OGR用于支持Rasters和Vectors的空间数据抽象库。
通过使用这些库,您还可以处理不同的坐标系(例如从/向WGS84转换),因为它们都使用Proj.4。要以米为单位查找距离,您可以从WGS84转换为使用UTM等米的东西。
答案 4 :(得分:1)
根据这些计算的复杂程度,您可能需要考虑编写自己的计算。如果你只是做一个可能是速度和缺乏膨胀的最佳选择的区域。
答案 5 :(得分:1)
对于你提出的问题,它不够全面和高水平,但是对于进行大地变形,你可以使用NGA优秀的GEOTRANS库:
http://earth-info.nga.mil/GandG/geotrans/
这将让您在WGS84 lat / long和本地笛卡尔坐标系之间进行转换。 C代码经过充分测试,记录并且是公共领域。