输入点集合进行抽稀,根据不同的抽稀力度获取不同的点集结果,力度越大,点集越稀疏。
package com.hxkj.common.utils;
import java.util.*;
/**
* 坐标处理类 GPS点的抽稀-道格拉斯算法
*
* @author Elinx
* @since 2021-05-31 10:28
*/
public class GisDouglasUtil {
/**
* 计算两点距离
*
* @param point1 点1
* @param point2 点2
* @return double
*/
private static double calculationDistance(double[] point1, double[] point2) {
double lat1 = point1[0];
double lat2 = point2[0];
double lng1 = point1[1];
double lng2 = point2[1];
double radLat1 = lat1 * Math.PI / 180.0;
double radLat2 = lat2 * Math.PI / 180.0;
double a = radLat1 - radLat2;
double b = (lng1 * Math.PI / 180.0) - (lng2 * Math.PI / 180.0);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
return s * 6370996.81;
}
/**
* 计算点pX到点pA和pB所确定的直线的距离
*

本文介绍了一种使用道格拉斯算法进行GPS点集抽稀的方法,通过计算两点间的距离,递归地压缩轨迹,根据给定的抽稀力度得到不同密度的点集结果,适用于地图数据简化和路径优化。
最低0.47元/天 解锁文章
7700

被折叠的 条评论
为什么被折叠?



