GIS 算法原理记录总结二:距离、方位角、沿线上的点的扩展算法及其使用(一)
在了解了距离算法、方位角算法之后,就可以根据距离、方位角进行一些扩展应用。这里罗列如下:
一、计算线段中点(turf.midpoint)
基于球面距离、方位角,在已知一条线段两个端点后,该条线段的中点就很容易计算了。即:
1、根据线段两点,计算该线段长度(两点距离)(turf.distance)
2、根据线段两点,计算两点方位角(turf.bearing)
3、根据方位角及距离的一半计算该线段的中心点(turf.destination)
主要代码如下:
效果如下:
二、计算线段长度(turf.length)
计算流程:
1、将所给线段的坐标点拆分,每相邻两点组成一条线段
2、分别计算每条线段的距离(turf.distance)
3、将每条线段的距离相加,即为所给线段的总长度。
主要代码如下:
此核心算法在于线段的点两两组成一条线段,即对线段的点数据一段一段拆分,如:将一条线段
[
[115, -32],
[131, -22],
[143, -25],
[150, -34]
]
分别拆分组合为
线段1:
[
[115, -32],
[131, -22]
]
线段2:
[
[131, -22],
[143, -25]
]
线段3:
[
[143, -25],
[150, -34]
]
分别计算线段1的 距离、线段 2 的距离、线段 3 的距离,最后将各个计算距离相加,即为当前线段的总长度。
效果如下:
三、已知点 A 和 点集 P[B1,B2,B3…],求点集 P 中的点 B1、B2、B3… 中距离点 A 最近的点(turf.nearstpoint)
计算流程:
1、分别计算点 A 到 B1、B2、B3 的距离(turf.distance)
2、比较 A-B1、A-B2、A-B3 即 A 到各个点的距离,求最小值(turf.meta、turf.clone)
3、得到最小值,返回最近点,即 P 中的一点及其与 A 点的距离
主要代码如下:
效果如下: