轨迹压缩算法
场景描述
给定一个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(