轨迹压缩算法--开放窗口--java实现

本文介绍了轨迹压缩算法的应用场景,即通过距离阈值过滤GPS数据记录,压缩后的轨迹由保留的坐标点构成。虽然算法描述省略,但提供了代码实现部分。
摘要由CSDN通过智能技术生成

轨迹压缩算法

  • 场景描述
    给定一个GPS数据记录文件,每条记录包含经度和维度两个坐标字段,根据距离阈值压缩记录,将过滤后的所有记录的经纬度坐标构成一条轨迹

  • 算法描述
    自己去百度吧。。。

  • 代码实现
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Toolkit;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TrajectoryCom {
   

    public static void main(String[] args) throws Exception{
        //阈值定义
        double maxDistanceError = 30;

        /*
         * 文件读取
         * */

        //存放从文件读取的位置点的信息列表
        ArrayList<ENPoint> ENPList = new ArrayList<ENPoint>();
        //源数据文件的地址 建立文件对象
        //这里是需要更改的地方   改你源文件的存放地址   记住如果地址中含"\",记得再加一个"\",原因"\"是转义符号     
        //这里可以写成C:/Users/Administrator/Desktop/11.6/2007-10-14-GPS.log
        File sourceFile = new File("./2007-10-14-GPS.log");
        //调用文件读取函数   读取文件数据
        ENPList = getENPointFromFile(sourceFile);
        //这里是测试  有没有读到里面   看看列表里的数据个数   交作业的时候记得注释掉
        System.out.println(ENPList.size());

        /*
         * 数据处理
         * 方法:开放窗口轨迹压缩法
         * */
        //存放目标点的集合
        ArrayList<ENPoint> rePointList = new ArrayList<ENPoint>();
        rePointList = openWindowTra(ENPList,maxDistanceError);
        System.out.println(rePointList.size());

        /*
         * 写入目标文件
         * */
        File targetFile = new File("./2007-10-14-GPSResult.log");
        writeTestPointToFile(targetFile,rePointList);


        /*
         * 压缩率计算
         */
        double cpL = (double)rePointList.size() / (double)ENPList.size() * 100;
        DecimalFormat df = new DecimalFormat("0.000000");
        System.out.println(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值