diff --git a/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java b/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java index 5ddf37c..e12588d 100644 --- a/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java +++ b/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java @@ -23,7 +23,6 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq; import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel; -import com.palnet.biz.api.bas.flight.model.BasFlightPlanResultMessageRq; import com.palnet.biz.jpa.entity.FltPlanArcrft; import com.palnet.biz.jpa.entity.FltPlanArea; import com.palnet.biz.jpa.entity.FltPlanAreaCoord; diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java index 180a5bd..6a8a9f7 100644 --- a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java @@ -235,7 +235,7 @@ public class CtrCntrlService { public CtrCntrlPlanContainsRs checkPlanContains(CtrCntrlPlanContainsRq rq) { CtrCntrlPlanContainsRs rs = new CtrCntrlPlanContainsRs(); - int countContains = 0; + int countSuccess = 0; if(rq.getIdntfNum() != null) { for(BasFlightPlanModel plan : rq.getPlanList()) { @@ -244,27 +244,33 @@ public class CtrCntrlService { //드론 위치 Coordinate targetCoord = new Coordinate(rq.getLon(), rq.getLat()); - boolean result = true; + boolean areaContains = true; + boolean airspaceContains = false; if("LINE".equals(area.getAreaType())) { List planBuffer = areaUtils.buffer(planArea, area.getBufferZone()); - result = areaUtils.contains(planBuffer, targetCoord); + + areaContains = areaUtils.contains(planBuffer, targetCoord); + airspaceContains = areaUtils.contains(targetCoord); } if("POLYGON".equals(area.getAreaType())) { - result = areaUtils.contains(planArea, targetCoord); + areaContains = areaUtils.contains(planArea, targetCoord); + airspaceContains = areaUtils.contains(targetCoord); } if("CIRCLE".equals(area.getAreaType())) { List circle = areaUtils.createCircle(planArea.get(0), area.getBufferZone()); - result = areaUtils.contains(circle, targetCoord); + areaContains = areaUtils.contains(circle, targetCoord); + airspaceContains = areaUtils.contains(targetCoord); } - if(result) countContains++; + if(areaContains || !airspaceContains) countSuccess++; } } } - if (countContains > 0) { + // 1개라도 + if (countSuccess > 0) { rs.setWarning(false); } else { rs.setWarning(true); diff --git a/src/main/java/com/palnet/comn/utils/AreaUtils.java b/src/main/java/com/palnet/comn/utils/AreaUtils.java index 9957910..0efa4b7 100644 --- a/src/main/java/com/palnet/comn/utils/AreaUtils.java +++ b/src/main/java/com/palnet/comn/utils/AreaUtils.java @@ -104,14 +104,34 @@ public class AreaUtils { Polygon targetPolygon = geometryFactory.createPolygon(targetCoordList.toArray(new Coordinate[] {})); Polygon effectivePolygon = geometryFactory.createPolygon(effectiveCoordList.toArray(new Coordinate[] {})); - Geometry overlabsGeometry = geometryFactory.createGeometry(effectivePolygon); - Geometry targetGeometry = geometryFactory.createGeometry(targetPolygon); + return targetPolygon.overlaps(effectivePolygon); + } + + /** + * TODO 드론 관제시 정상 비행 체크 (공역) + * + * @param targetCoordinate - 드론 좌표 정보 + * @return boolean - true(비정상), false(정상) + */ + public boolean contains(Coordinate targetCoordinate) { + boolean result = true; + + Point target = geometryFactory.createPoint(targetCoordinate); - return targetGeometry.overlaps(overlabsGeometry); + for(Polygon polygon : polygons) { + boolean contains = polygon.contains(target); + + if(contains) { + result = true; + break; + } + } + + return result; } /** - * TODO 드론 관제시 정상 비행 체크 (Line, Polygon) + * TODO 드론 관제시 정상 비행 체크 (비행 구역) * * @param areaCoordList - 비행 구역 좌표 리스트 * @param targetCoordinate - 드론 좌표 정보 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 871fd25..7ebe598 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -50,7 +50,7 @@ spring: # show_sql: true # format_sql: true rabbitmq: - host: 192.168.0.24 + host: localhost port: 5672 username: guest password: guest