diff --git a/pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java b/pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java index cc81f4f5..f04450b2 100644 --- a/pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java +++ b/pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java @@ -9,6 +9,7 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -62,7 +63,7 @@ public class CoordUtils { List> callables = new ArrayList<>(); - for (int i = 0; i < coords.length-1; i++) { + for (int i = 0; i < coords.length; i++) { int path = i; callables.add(() -> initCoordinates(coords[path])); @@ -120,6 +121,8 @@ public class CoordUtils { String depth = ""; + Double distance = 1000000.0; + List> callables = new ArrayList<>(); for (int i = 0; i < allLocation.size(); i++) { @@ -141,21 +144,42 @@ public class CoordUtils { for (Future rslt : results) { - JSONObject jsonObject = rslt.get(); + JSONObject jsonObject = new JSONObject(); + + try { + + jsonObject = rslt.get(); + + } catch (InterruptedException | ExecutionException e) { + + jsonObject = null; + } - if(jsonObject != null) { + if(jsonObject != null && jsonObject.get("distance") == null) { depth = (String) jsonObject.get("CD"); break; + + } else if(jsonObject != null && jsonObject.get("distance") != null) { + + Double distances = (Double) jsonObject.get("distance"); + + if(distance > distances) { + + distance = distances; + + depth = (String) jsonObject.get("CD"); + + } + } - } - JSONObject result = this.getCoordinateGis(coord, depth); - - return result; - + JSONObject result = this.getCoordinateGis(coord, depth); + + return result; + } catch (Exception e) { e.printStackTrace(); } @@ -168,7 +192,7 @@ public class CoordUtils { public JSONObject getCoordinateGis(Coordinate coordinate, JSONObject polygon) throws IOException, ParseException { JSONObject obj = new JSONObject(); - + obj = parseGeoJson(polygon, coordinate); if(obj == null) return null; @@ -240,6 +264,10 @@ public class CoordUtils { public JSONObject contains(List features, Point point) { + JSONObject result = null; + + Double standard = 10000000.0; + for(int i=0; i distance) { + + standard = distance; + + result = properties; + } + } } } - return null; + result.put("distance", standard); + + return result; } }