Browse Source

feat: 법정동 유틸 성능개선(육지가 아닌 지역의 정보도 불러올 수 있게 변경)

pull/18/head
qkr7828 8 months ago
parent
commit
759eb31339
  1. 63
      pav-server/src/main/java/com/palnet/comn/utils/CoordUtils.java

63
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<Callable<JSONObject>> 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<Callable<JSONObject>> callables = new ArrayList<>();
for (int i = 0; i < allLocation.size(); i++) {
@ -141,20 +144,41 @@ public class CoordUtils {
for (Future<JSONObject> rslt : results) {
JSONObject jsonObject = rslt.get();
JSONObject jsonObject = new JSONObject();
try {
jsonObject = rslt.get();
if(jsonObject != null) {
} catch (InterruptedException | ExecutionException e) {
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);
JSONObject result = this.getCoordinateGis(coord, depth);
return result;
return result;
} catch (Exception e) {
e.printStackTrace();
@ -240,6 +264,10 @@ public class CoordUtils {
public JSONObject contains(List<JSONObject> features, Point point) {
JSONObject result = null;
Double standard = 10000000.0;
for(int i=0; i<features.size(); i++) {
JSONObject geometry = (JSONObject) features.get(i).get("geometry");
@ -268,20 +296,35 @@ public class CoordUtils {
polygonPaths.add(areaCoord);
}
}
polygonPaths.add(polygonPaths.get(0));
}
}
Polygon polygon = geometryFactory.createPolygon(polygonPaths.toArray(new Coordinate[] {}));
if(polygon.contains(point)) return properties;
if(polygon.contains(point)) {
return properties;
}else {
Double distance = polygon.distance(point);
if(standard > distance) {
standard = distance;
result = properties;
}
}
}
}
return null;
result.put("distance", standard);
return result;
}
}

Loading…
Cancel
Save