最近根据业务需要,编写了一个小的算法,用于从设备的轨迹中提取出设备的驻留点。其中关于时间的验证,使用了上一篇文章中的时间工具js,设备的轨迹是用一个点数组来表示的,驻留点也是一个点的数组。
function checkDistance(pointArrayBeforenowPoint,nowPoint,stayDistance){
var pf=pointArrayBeforenowPoint;
if(pf.length==1){
return 1;//代表此点是第二个点,可以直接返回ture
}else{
for(var i=0;i<pf.length;i++){
var distance=getDistanceBetween(pf[i],nowPoint);
if(distance<5){//误差距离,在此处默认为5m,也就说说,5米范围内的点可以作为另外一个点的误差点,而不需要额外计算。
return 2;//代表此点可忽略
}else{
if(distance<(stayDistance*2)){
continue;
}else{
return 0;//代表此点不符合距离要求,驻留点序列断裂
}
}
}
return 1;//符合要求的主流点被加入。
}
}
function checkTime(stayPointSet,stayTime){
var lastIndex=stayPointSet.length-1;
var startPointSetTime=getDateFromformatS