关于GPS定位较正的实现的分析2009-11-12 javaeye lgx2351我们在做定位车辆或其它相关GPS点的时候,由于返回得到的数据并不是很准确,如车辆传上来的GPS坐标点偏离了道路很远,而实质坐标应该是在道路上的,这时候需要做个较正,把在允许范围内的点较正到道路上。怎么实现呢?可以先用利用得到的GPS坐标值循环遍历得到距离道路最近的两个节点,然后通过得到的两个最近节点的坐标,利用求垂足的方法得到垂足的坐标就是所要求的点,也就是较正后的点了。具体的代码如下:Java代码 //根据路线id和点坐标,找出该路线上距离改点的最近点 public static Point getPoint(String roadid, double x, double y) { RoadlineDao dao = (RoadlineDao) DaoConfig.getDaoManager().getDao( RoadlineDao.class); List list = dao.getPoints(roadid);
double distance = Integer.MAX_VALUE; Point pt1 = null, pt2 = null; Point tmp_pt1, tmp_pt2; double tmp_distance; for (int i = 1; i < list.size(); i++) { tmp_pt1 = (Point) list.get(i - 1); tmp_pt2 = (Point) list.get(i); tmp_distance = Line2D.ptSegDist(tmp_pt1.getX(), tmp_pt1.getY(), tmp_pt2.getX(), tmp_pt2.getY(), x, y); if (distance > tmp_distance) { distance = tmp_distance; pt1 = tmp_pt1; pt2 = tmp_pt2; } }