// 判断经纬度是否在此区域内
public void selectDevice2() throws IOException{
String birthday = device.getBirthday();
String Position1 = device.getJingweidu1();
String Position2 = device.getJingweidu2();
// 创建表
String IMSIPositionTableName = "IMSIP_"+birthday;
// 判断是否有统计报告表
if(judgeTable(IMSIPositionTableName)){
// 有表
}else {
// 没有表,创建
String createdIMSIPositionTableOK = db.createdIMSIPositionTable(IMSIPositionTableName).toString();
if(responseutil.getResultData(createdIMSIPositionTableOK).equals("OK")){
// 创建成功
String TableName = "Z_"+birthday;
String selectAllPositionOk = db.selectAllPosition(TableName).toString();
if (responseutil.getResultData(selectAllPositionOk).equals("OK")) {
String rowsData = responseutil.getRowsData(selectAllPositionOk);
JSONResolveArray(rowsData, Position1, Position2, IMSIPositionTableName);
}else {
System.out.println("失败:"+selectAllPositionOk);
}
}
}
// 查询数据
String selectIMSIPositionOK = db.selectIMSIPosition(IMSIPositionTableName).toString();
if(responseutil.getResultData(selectIMSIPositionOK).equals("OK")){
response.addHeader("Content-Type", "text/plain; charset=UTF-8");
response.getWriter().print(selectIMSIPositionOK);
}else {
response.addHeader("Content-Type", "text/plain; charset=UTF-8");
response.getWriter().print("NO");
}
}
// 解析JSON数组2
public String JSONResolveArray(String ResponseStr, String Position1, String Position2, String IMSIPositionTableName) {
String returnArrayStr = "";
// 处理需要判断的区域
String[] Position1Arr = Position1.split(",");
String[] Position2Arr = Position2.split(",");
double minLongitude = Double.parseDouble(Position1Arr[0]);
double minLatitude = Double.parseDouble(Position1Arr[1]);
double maxLongitude = Double.parseDouble(Position2Arr[0]);
double maxLatitude = Double.parseDouble(Position2Arr[1]);
JSONArray arr = null;
try {
arr = new JSONArray(ResponseStr);
for (int i = 0; i < arr.length(); i++) {
JSONArray temp = (JSONArray) arr.get(i);
for (int j = 0; j < temp.length(); j++) {
if (j%2 == 0) {
// IMSI
// System.out.println(temp.getString(j));
}else {
// 轨迹数据
String[] positionsArr = temp.getString(j).split("\\|");
// 取出第一个轨迹
String[] positionArr = positionsArr[0].split(",");
// 数据库的数据
Double Longitude =Double.parseDouble(positionArr[0]);
Double Latitude = Double.parseDouble(positionArr[1]);
// 判断数据是否再次区域
if (Longitude>minLongitude && Latitude>minLatitude && Longitude<maxLongitude && Latitude<maxLatitude) {
System.out.println("在这个区域");
String IMSI = temp.getString(0);
System.out.println(positionArr[0]+" "+positionArr[1]+" "+temp.getString(0));
String City = Responseutil.GetCity(Latitude+","+Longitude,"city");// 调用封装的获取城市名称的方法
String Province = Responseutil.GetCity(Latitude+","+Longitude,"province");
System.out.println("所在省份:"+Province);
System.out.println("所在城市:"+City);
// 查询IMSI信息,将使用时间存入数据库
String selectIMSI_INFOOK = db.selectIMSI_INFO2(IMSI).toString();
String infoData = responseutil.JSONResolveArray(responseutil.getRowsData(selectIMSI_INFOOK), "#");
String statisticsInfo = infoData+Latitude+","+Longitude+"#"+City+"#"+Province;// 要存的信息
System.out.println("statisticsInfo:"+statisticsInfo);
String SIArr[] = statisticsInfo.split("#");
System.out.println(SIArr[0]+","+ SIArr[1]+","+ SIArr[2]+","+ SIArr[3]+","+ SIArr[4]+","+ SIArr[5]+","+ SIArr[6]+","+ SIArr[7]+","+ SIArr[8]+","+ SIArr[9]+","+ SIArr[10]);
// 存入数据库
String insertIMSIPositionOK = db.insertIMSIPosition(IMSIPositionTableName, SIArr[0], SIArr[1], SIArr[2], SIArr[3], SIArr[4], SIArr[5], SIArr[6], SIArr[7], SIArr[8], SIArr[9], SIArr[10]).toString();
if(responseutil.getResultData(insertIMSIPositionOK).equals("OK")){
System.out.println("存入成功");
}else {
System.out.println("存入失败");
}
break;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return returnArrayStr;
}
原文:http://my.oschina.net/hehongbo/blog/524027