diff --git a/src/main/java/com/palnet/comn/utils/FlightUtils.java b/src/main/java/com/palnet/comn/utils/FlightUtils.java index 49a7805..7768142 100644 --- a/src/main/java/com/palnet/comn/utils/FlightUtils.java +++ b/src/main/java/com/palnet/comn/utils/FlightUtils.java @@ -10,6 +10,7 @@ import org.locationtech.jts.geom.Polygon; import org.locationtech.jts.geom.impl.CoordinateArraySequence; import org.locationtech.jts.operation.buffer.BufferOp; import org.locationtech.jts.operation.buffer.BufferParameters; +import org.locationtech.jts.util.GeometricShapeFactory; import org.locationtech.proj4j.BasicCoordinateTransform; import org.locationtech.proj4j.CRSFactory; import org.locationtech.proj4j.CoordinateReferenceSystem; @@ -34,6 +35,24 @@ public class FlightUtils { return bufferCoords; } + //기본좌표와 반지름을 받아 원을 생성하는 유틸 + public static Coordinate[] createCircle(Coordinate circleCoords) { + GeometricShapeFactory shapeFactory = new GeometricShapeFactory(); + GeometryFactory geometryFactory = new GeometryFactory(); + double lng = circleCoords.x; + double lat = circleCoords.y; + double diameterInMeters = circleCoords.z; + shapeFactory.setCentre(new Coordinate(lng , lat)); + shapeFactory.setHeight((diameterInMeters * 2) / 111320d); + shapeFactory.setWidth((diameterInMeters * 2) / (40075000 * Math.cos(Math.toRadians(lat)) / 360)); + shapeFactory.setNumPoints(64); + final Polygon circle = shapeFactory.createEllipse(); + circle.setSRID(4326); + Geometry geometry = geometryFactory.createGeometry(circle); + Coordinate[] coords = geometry.getCoordinates(); + return coords; + + } //생성된 버퍼좌표에서 특정 좌표가 버퍼좌표 안에 속해있는지, 혹은 아닌지를 판단하는 유틸 public static boolean contains(Coordinate[] bufferCoords, Coordinate[] containsPoint) {