|
|
@ -907,7 +907,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi |
|
|
|
* @throws IOException |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public JSONObject getTheCurrentCongestedSection() throws HttpException, IOException { |
|
|
|
public JSONArray getTheCurrentCongestedSection() throws HttpException, IOException { |
|
|
|
OkHttp okHttp = new OkHttp(); |
|
|
|
|
|
|
|
RequestParams requestParams = new RequestParams(); |
|
|
@ -927,49 +927,51 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi |
|
|
|
ResponseBody body = response.body(); |
|
|
|
if (body != null) { |
|
|
|
JSONArray jsonArray = JSON.parseArray(body.string()); |
|
|
|
JSONObject jsonObject = (JSONObject) jsonArray.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
Integer asOneRoad = jsonObject.getInteger("as_one_road"); |
|
|
|
|
|
|
|
if (asOneRoad == UniversalEnum.ONE.getNumber()){ |
|
|
|
|
|
|
|
String string = jsonObject.getString("list_link_info"); |
|
|
|
JSONArray jsonlist = JSON.parseArray(string); |
|
|
|
JSONObject o = (JSONObject) jsonlist.get(UniversalEnum.ZERO.getNumber()); |
|
|
|
|
|
|
|
String string1 = o.getString("firstPoint"); |
|
|
|
String string2 = o.getString("lastPoint"); |
|
|
|
String lngLats = o.getString("lngLats"); |
|
|
|
String[] lngLatsString = lngLats.split(UniversalEnum.COLON.getValue()); |
|
|
|
double s = Double.parseDouble(lngLatsString[UniversalEnum.ZERO.getNumber()].split(UniversalEnum.COMMA.getValue())[UniversalEnum.ZERO.getNumber()]); |
|
|
|
double s2 = Double.parseDouble(lngLatsString[UniversalEnum.ZERO.getNumber()].split(UniversalEnum.COMMA.getValue())[UniversalEnum.ONE.getNumber()]); |
|
|
|
double s3 = Double.parseDouble(lngLatsString[lngLatsString.length-UniversalEnum.ONE.getNumber()].split(UniversalEnum.COMMA.getValue())[UniversalEnum.ZERO.getNumber()]); |
|
|
|
double s4 = Double.parseDouble(lngLatsString[lngLatsString.length-UniversalEnum.ONE.getNumber()].split(UniversalEnum.COMMA.getValue())[UniversalEnum.ONE.getNumber()]); |
|
|
|
double distanceM = calculateDistance(s2, s, s4, s3)* UniversalEnum.THOUSAND.getNumber(); |
|
|
|
// System.out.printf("最大距离为: %.2f 米%n", distanceM);
|
|
|
|
jsonObject.put("max_jam_dist",distanceM);//最大拥堵距离
|
|
|
|
String[] split = string1.split(UniversalEnum.COMMA.getValue()); |
|
|
|
double firstLon = Double.parseDouble(split[UniversalEnum.ZERO.getNumber()]); |
|
|
|
double firstLat = Double.parseDouble(split[UniversalEnum.ONE.getNumber()]); |
|
|
|
String[] split2 = string2.split(UniversalEnum.COMMA.getValue()); |
|
|
|
double lastLon = Double.parseDouble(split2[UniversalEnum.ZERO.getNumber()]); |
|
|
|
double lastLat = Double.parseDouble(split2[UniversalEnum.ONE.getNumber()]); |
|
|
|
//double firstLat = 35.38524527319016;
|
|
|
|
// double firstLon = 118.39808642864227;
|
|
|
|
//double lastLat = 35.386351346969604;
|
|
|
|
// double lastLon = 118.4038907289505;
|
|
|
|
double distanceKm = calculateDistance(firstLat, firstLon, lastLat, lastLon); |
|
|
|
double distanceMeters = distanceKm * UniversalEnum.THOUSAND.getNumber(); // 将距离转换为米
|
|
|
|
//System.out.printf("两点之间的距离为: %.2f 米%n", distanceMeters);
|
|
|
|
jsonObject.put("jam_dist",distanceMeters);//当前拥堵距离
|
|
|
|
|
|
|
|
return jsonObject; |
|
|
|
}else { |
|
|
|
for (Object object : jsonArray) { |
|
|
|
JSONObject jsonObject = (JSONObject) object; |
|
|
|
Integer asOneRoad = jsonObject.getInteger("as_one_road"); |
|
|
|
//as_one_road
|
|
|
|
//是否为同一条路,1-是,0-否
|
|
|
|
if (asOneRoad == UniversalEnum.ZERO.getNumber()){ |
|
|
|
|
|
|
|
String string = jsonObject.getString("list_link_info"); |
|
|
|
JSONArray jsonlist = JSON.parseArray(string); |
|
|
|
JSONObject o = (JSONObject) jsonlist.get(0); |
|
|
|
|
|
|
|
String string1 = o.getString("firstPoint"); |
|
|
|
String string2 = o.getString("lastPoint"); |
|
|
|
String lngLats = o.getString("lngLats"); |
|
|
|
String[] lngLatsString = lngLats.split(";"); |
|
|
|
double s = Double.parseDouble(lngLatsString[0].split(",")[0]); |
|
|
|
double s2 = Double.parseDouble(lngLatsString[0].split(",")[1]); |
|
|
|
double s3 = Double.parseDouble(lngLatsString[lngLatsString.length-1].split(",")[0]); |
|
|
|
double s4 = Double.parseDouble(lngLatsString[lngLatsString.length-1].split(",")[1]); |
|
|
|
double distanceM = calculateDistance(s2, s, s4, s3)* 1000; |
|
|
|
// System.out.printf("最大距离为: %.2f 米%n", distanceM);
|
|
|
|
jsonObject.put("max_jam_dist",distanceM);//最大拥堵距离
|
|
|
|
String[] split = string1.split(","); |
|
|
|
double firstLon = Double.parseDouble(split[0]); |
|
|
|
double firstLat = Double.parseDouble(split[1]); |
|
|
|
String[] split2 = string2.split(","); |
|
|
|
double lastLon = Double.parseDouble(split2[0]); |
|
|
|
double lastLat = Double.parseDouble(split2[1]); |
|
|
|
//double firstLat = 35.38524527319016;
|
|
|
|
// double firstLon = 118.39808642864227;
|
|
|
|
//double lastLat = 35.386351346969604;
|
|
|
|
// double lastLon = 118.4038907289505;
|
|
|
|
double distanceKm = calculateDistance(firstLat, firstLon, lastLat, lastLon); |
|
|
|
double distanceMeters = distanceKm * 1000; // 将距离转换为米
|
|
|
|
//System.out.printf("两点之间的距离为: %.2f 米%n", distanceMeters);
|
|
|
|
jsonObject.put("jam_dist",distanceMeters);//当前拥堵距离
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return jsonArray; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return new JSONObject(); |
|
|
|
return new JSONArray(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@ -1019,6 +1021,8 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi |
|
|
|
|
|
|
|
// 计算两点间的距离
|
|
|
|
double distance = EARTH_RADIUS * c; |
|
|
|
// 保留两位小数,四舍五入
|
|
|
|
distance= Double.parseDouble(String.format("%.5f", distance)); |
|
|
|
|
|
|
|
return distance; |
|
|
|
} |
|
|
|