环境
gt-geojson-14.2.jar,json-simple-1.1.1.jar,jts-1.8.jar
一、wkt格式的geometry转成json格式
public String evaluate(String wkt) {
String ret = null;
try {
Geometry geometry = reader.read(wkt);
StringWriter writer = new StringWriter();
GeometryJSON g = new GeometryJSON();
g.write(geometry, writer);
ret = writer.toString();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
return ret;
}
二、json格式转wkt格式
public String evaluate(String geoJson) {
String ret = null;
GeometryJSON gjson = new GeometryJSON();
Reader reader = new StringReader(geoJson);
try {
Geometry geometry = gjson.read(reader);
ret = geometry.toText();
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
}
return ret;
}
三、json格式的数据进行解析
数据格式如下:
{
"_id" : "b454e650cb1a4fa4a2f2bd6899fbfa73",
"bb" : "116.2451019,39.8486099,116.2451019,39.8486099",
"pts" : [{
"1" : 0,
"2" : 39.8486099,
"3" : 116.2451019,
"4" : 0.0,
"5" : 0.0,
"6" : "2012-03-07 14:25:08",
"7" : "2012-03-07 14:25:10",
"8" : "2",
"9" : 0.0,
"10" : 1
}, {
"1" : 1,
"2" : 39.8486099,
"3" : 116.2451019,
"4" : 0.0,
"5" : 0.0,
"6" : "2012-03-07 14:25:16",
"7" : "2012-03-07 14:25:17",
"8" : "1",
"9" : 0.0,
"10" : 1
}, {
"1" : 2,
"2" : 39.8486099,
"3" : 116.2451019,
"4" : -1.0,
"5" : 0.0,
"6" : "2012-03-07 14:25:18",
"7" : "2012-03-07 14:25:20",
"8" : "1",
"9" : 0.0,
"10" : 1
}]
}
获取“_id”值和“bb”属性值(两点的经纬度坐标),获取“pts”属性中第一个标签6的值(起始时间)和最后一个标签7的属性值(终止时间),并根据经纬度计算两点之间的距离,根据起始时间和终止时间计算其时间差,得到每个“_id”的对应的距离和时间差
private final double PI = 3.1415926; //圆周率
private final static double earthRadius = 6371; //地球半径,单位为KM
public static void parseJson(BufferedReader bufferedReader)
throws IOException, ParseException, java.text.ParseException{
String line = ""; //一行一行的形式读取文件
String[] pts6FirstTime =null;//第一个坐标点标签6的时间
String pts6Time ="";
String ptsTime7 = "";
String reslut = ""; //计算最终结果
double betweenTime = 0.0d;//轨迹点之间的时间差,以小时(h)为单位
//longitude1、longitude2、dimension1、dimension2分别为经度坐标和维度坐标
double longitude1 = 0.0d;
double dimension1 = 0.0d;
double longitude2 = 0.0d;
double dimension2 = 0.0d;
//设置时间格式
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//创建json解析对象
JSONParser jsonParser = new JSONParser();
//创建一个distanceAndTime对象
DistanceAndTime distanceAndTime = new DistanceAndTime();
while((line = buff