GPS纠偏算法,适用于google,高德体系的地图

12 篇文章 0 订阅

GPS纠偏算法,适用于google,高德体系的地图,精确度还比较高。我试了一下比高德本身的纠偏还精确点。

 

/**
 * gps纠偏算法,适用于google,高德体系的地图
 * @author Administrator
 */
public class GpsCorrect {
	final static double pi = 3.14159265358979324;
	final static double a = 6378245.0;
	final static double ee = 0.00669342162296594323;

	public static void transform(double wgLat, double wgLon, double[] latlng) {
		if (outOfChina(wgLat, wgLon)) {
			latlng[0] = wgLat;
			latlng[1] = wgLon;
			return;
		}
		double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
		double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
		double radLat = wgLat / 180.0 * pi;
		double magic = Math.sin(radLat);
		magic = 1 - ee * magic * magic;
		double sqrtMagic = Math.sqrt(magic);
		dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
		dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
		latlng[0] = wgLat + dLat;
		latlng[1] = wgLon + dLon;
	}

	private static boolean outOfChina(double lat, double lon) {
		if (lon < 72.004 || lon > 137.8347)
			return true;
		if (lat < 0.8293 || lat > 55.8271)
			return true;
		return false;
	}

	private static double transformLat(double x, double y) {
		double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
		ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
		ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
		ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
		return ret;
	}

	private static double transformLon(double x, double y) {
		double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
		ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
		ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
		ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
		return ret;
	}
}


源码下载地址:http://download.csdn.net/detail/junfeng120125/5945349

  • 5
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
GPS轨迹纠偏算法主要用于对采集到的GPS轨迹数据进行处理和修正,使之更精确地反映真实的移动轨迹。这种算法的应用场景在于各种需要对移动路径进行分析和展示的应用中,如地图导航、运动监测等。 异常点检测则是在GPS轨迹纠偏算法中的一个重要环节,其目的是识别和过滤掉无效的或错误的轨迹点,以保证轨迹数据的准确性和可靠性。异常点检测的主要思想是通过对轨迹数据进行统计分析,找出与正常轨迹偏离较大的数据点,并剔除掉这些异常点。 在GPS轨迹纠偏算法中,常用的异常点检测方法有以下几种: 1. 基于速度的异常点检测:通过计算轨迹点之间的速度变化,对速度超过设定阈值的点进行标记和过滤。速度异常点通常是由于采集设备的误差或者移动模式的突变导致的。 2. 基于加速度的异常点检测:加速度异常点的检测方法类似于速度异常点的检测方法,通过计算轨迹点之间的加速度变化,对加速度超过设定阈值的点进行标记和过滤。 3. 基于位置偏差的异常点检测:通过计算轨迹点与标准轨迹的位置偏差,对偏差超过设定阈值的点进行标记和过滤。位置偏差异常点通常是由于各种误差或者外部干扰导致的。 4. 基于时间间隔的异常点检测:通过计算轨迹点之间的时间间隔,对时间间隔超过设定阈值的点进行标记和过滤。时间间隔异常点通常是由于采集频率不稳定或者采集设备的误差导致的。 综上所述,GPS轨迹纠偏算法中的异常点检测是通过对轨迹数据进行统计分析和设定阈值来识别和过滤掉异常点,以提高轨迹数据的准确性和可靠性。不同的异常点检测方法可以根据具体的应用场景和需求进行选择和调整。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值