如何使用 boost 处理经纬度值?
How to handle lat long values using boost?
在我的应用程序中,我收到 latitude/longitude 以下形式的输入:"N48 E010"、"N40 E020"、"S30 W110" ...
我期待做的是检查这些点是否形成有效的多边形。
我的意图是使用 boost 库来实现我的目标。所以,我需要帮助:
- 是否已经定义了存储经纬度对的类型?
- 多边形已经充满了点,如何检查这是否是一个有效的多边形?
- 如果多边形有效。如何得到它的面积?
要有效,多边形需要闭合,即最后一个点必须与第一个相同。
由于最小的多边形是一个有 3 个点的三角形,一个有效的多边形必须至少有 4 个。
这是一个足够简单的测试,您可以自己做。
boost geometry library has types defined to store lat lon pairs and can find the area of a polygon in geographic coordinates, see: area.
注意:您的 latitude/longitude 点不是标准形式,例如 ISO 6709,其中纬度和经度坐标表示为十进制数,北和东为正,南和西为负。
因此,您需要将坐标解析为十进制数才能使用 boost 库。
另外,请注意许多 GIS 库(包括 boost geometry)采用 longitude/latitude 顺序的坐标,以符合 OGC and GeoJSON 标准。
在我的应用程序中,我收到 latitude/longitude 以下形式的输入:"N48 E010"、"N40 E020"、"S30 W110" ...
我期待做的是检查这些点是否形成有效的多边形。
我的意图是使用 boost 库来实现我的目标。所以,我需要帮助:
- 是否已经定义了存储经纬度对的类型?
- 多边形已经充满了点,如何检查这是否是一个有效的多边形?
- 如果多边形有效。如何得到它的面积?
要有效,多边形需要闭合,即最后一个点必须与第一个相同。
由于最小的多边形是一个有 3 个点的三角形,一个有效的多边形必须至少有 4 个。
这是一个足够简单的测试,您可以自己做。
boost geometry library has types defined to store lat lon pairs and can find the area of a polygon in geographic coordinates, see: area.
注意:您的 latitude/longitude 点不是标准形式,例如 ISO 6709,其中纬度和经度坐标表示为十进制数,北和东为正,南和西为负。
因此,您需要将坐标解析为十进制数才能使用 boost 库。
另外,请注意许多 GIS 库(包括 boost geometry)采用 longitude/latitude 顺序的坐标,以符合 OGC and GeoJSON 标准。