如何使用boost处理经纬度值?

时间:2019-04-15 15:01:14

标签: c++ boost coordinates latitude-longitude boost-geometry

在我的应用程序中,我收到以下形式的纬度/经度输入:“ N48 E010”,“ N40 E020”,“ S30 W110” ...
我期待做的是检查这些点是否形成有效的多边形。 我的目的是使用boost库来实现我的目标。因此,我需要帮助:

  1. 是否已经定义了用于存储纬度对的类型?
  2. 在多边形已经充满点的情况下,如何检查该多边形是否有效?
  3. 多边形是否有效。如何获得其面积?

1 个答案:

答案 0 :(得分:2)

要生效,必须关闭多边形,即最后一个点必须与第一个点相同。
由于最小的多边形是一个具有3个点的三角形,所以有效的多边形必须至少具有4个。
对于您自己来说,这是一个足够简单的测试。

boost geometry库的类型定义为存储纬度对,并且可以在地理坐标中找到多边形的面积,请参见:area

注意:您的纬度/经度点不是标准格式,例如ISO 6709,其中纬度和经度坐标表示为十进制数字,北和东为正,南和西为负。
因此,您需要将坐标解析为十进制数字才能使用boost库。

另外,请注意,许多GIS库(包括boost几何)都按经度/纬度顺序获取坐标,以符合OGCGeoJSON标准。