码迷,mamicode.com
首页 > 其他好文 > 详细

地图轨迹内插采集点

时间:2020-09-03 17:08:33      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:filter   gpo   nts   ret   string   距离   try   function   通过   

有时候地图轨迹采集点不均匀,在做轨迹回放时速度很不均匀,忽快忽慢,通过内插采集点可以平滑播放,代码如下

//points:[turf.point]
function interpolation(points){
	//获取p1到p2间的最近插入点
	const getAlongPoint=(p1,p2,distance)=>{
		if(turf.distance(p1,p2,{units: ‘kilometers‘})<distance)return {point:p2,done:true}
		return {point:turf.along(turf.lineString([p1.geometry.coordinates,p2.geometry.coordinates]),distance,{units: ‘kilometers‘}),done:false}
	}
	//获取获取p1到p2间的插入点集合
	const getLineInsertPoints=(p1,p2,distance)=>{
		const result=[p1]
		for(let along=getAlongPoint(p1,p2,distance);result.push(along.point),!along.done;along=getAlongPoint(along.point,p2,distance));
		return result
	}
	//获取points相邻点间最短距离
	const getMinDistance=(points)=>{
		// const distances=[]
		// points.reduce((prev,curr)=>{distances.push(turf.distance(prev,curr,{units: ‘kilometers‘}));return curr;}) 
		// return Math.min(...distances.filter(distance=>distance>0))
		return 0.01
	}
	const minDistance=getMinDistance(points)
	//在points所有相邻点间进行插入点操作
	let result=[]
	points.reduce((prev,curr)=>{
		result=[...result,...getLineInsertPoints(prev,curr,minDistance)]
		return curr
	})
	return result
}

  

地图轨迹内插采集点

标签:filter   gpo   nts   ret   string   距离   try   function   通过   

原文地址:https://www.cnblogs.com/zhuxianguo/p/13563136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!