轨迹中的驻留点计算

最近根据业务需要,编写了一个小的算法,用于从设备的轨迹中提取出设备的驻留点。其中关于时间的验证,使用了上一篇文章中的时间工具js,设备的轨迹是用一个点数组来表示的,驻留点也是一个点的数组。

	function checkDistance(pointArrayBeforenowPoint,nowPoint,stayDistance){
		var pf=pointArrayBeforenowPoint;
		if(pf.length==1){
			return 1;//代表此点是第二个点,可以直接返回ture
		}else{
			for(var i=0;i=stayTime){
			return true;
		}else{
			return false;
		}
	}
	
	function getStayPoints(stayPointSetsArray){
		var stayPoints = new Array();
		for(var i=0;i1&&checkTime(stayPointSet,stayTime)){
    			stayPointSetsArray.push(stayPointSet);
    		}
    	}
    	
    	return getStayPoints(stayPointSetsArray);
    };
代码相关的注释写的很清楚,其中  new EzCoord(x,y)是笔者所使用的地图接口创建“地图点”类的方法,通过该类自带的distanceTo方法计算两点之间的距离。

该算法需要传递两个参数,一个是驻留距离,一个是驻留的最短时间,也就是说,一个设备在最短驻留时间内移动的距离小于驻留距离那么这个设备在此期间就被定义为驻留点了。

最后算法中还内定了一个误差的默认值(5),代表了如果一个设备的定位点有5m的误差,在5m内的移动将被忽略,这样做将某台设备在一段时间内没有移动的情况进行了简单的过滤处理,很大程度的提升了算法的效率。

代码如有需要提升的地方,还望大家指正,或者您有什么好的提议也可以拿来与我讨论。

原创文章,转载请说明出处。


你可能感兴趣的:(轨迹中的驻留点计算)