|
|
|
@ -9,10 +9,12 @@ import com.palnet.biz.jpa.entity.DosFltPlanResult;
|
|
|
|
|
import com.palnet.biz.jpa.repository.dos.DosFltPlanAreaRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.dos.DosFltPlanQueryRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.dos.DosFltPlanResultRepository; |
|
|
|
|
import com.palnet.comn.utils.AirspaceUtils; |
|
|
|
|
import com.palnet.comn.utils.AreaUtils; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.locationtech.jts.geom.Coordinate; |
|
|
|
|
import org.locationtech.jts.geom.Geometry; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
@ -67,7 +69,7 @@ public class BasDosService {
|
|
|
|
|
Optional<DosFltPlanResult> first = resultList.stream().filter(result -> result.getPlanAreaSno().equals(area.getPlanAreaSno())).findFirst(); |
|
|
|
|
String approvalCd = ""; |
|
|
|
|
Double fltElevMax = null; |
|
|
|
|
if(first.isPresent()){ |
|
|
|
|
if (first.isPresent()) { |
|
|
|
|
DosFltPlanResult dosFltPlanResult = first.get(); |
|
|
|
|
approvalCd = dosFltPlanResult.getApprovalCd(); |
|
|
|
|
fltElevMax = dosFltPlanResult.getFltElevMax(); |
|
|
|
@ -77,6 +79,23 @@ public class BasDosService {
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<Coordinate> coordBuffers = areaUtils.createCircle(new Coordinate(area.getLon(), area.getLat()), area.getBufferZone()); |
|
|
|
|
|
|
|
|
|
if ("GIMPO".equalsIgnoreCase(rq.getSelectZone())) { |
|
|
|
|
AirspaceUtils airspaceUtils = AirspaceUtils.getInstance(); |
|
|
|
|
Geometry rqGeometry = airspaceUtils.createGeometryByCoordinate(coordBuffers); |
|
|
|
|
|
|
|
|
|
AirspaceUtils.FeatureInfo targetfeatureInfo = new AirspaceUtils.FeatureInfo(null, null, 0.0, area.getFltElev(), rqGeometry); |
|
|
|
|
boolean isDuplicatedAirspace = airspaceUtils.isDuplicatedAirspace(targetfeatureInfo, AirspaceUtils.AirspaceType.GIMPO); |
|
|
|
|
if (!isDuplicatedAirspace) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Map<String, Double>> bufferCoordList = coordBuffers.stream().map(coord -> Map.of("lat", coord.y, "lon", coord.x)).collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BasDosPlanAreaRs areaRs = BasDosPlanAreaRs.builder() |
|
|
|
|
.planAreaSno(area.getPlanAreaSno()) |
|
|
|
|
.planSno(area.getPlanSno()) |
|
|
|
@ -88,7 +107,7 @@ public class BasDosService {
|
|
|
|
|
.lon(area.getLon()) |
|
|
|
|
.approvalCd(approvalCd) |
|
|
|
|
.fltElevMax(fltElevMax) |
|
|
|
|
.bufferCoordList(getBufferCoords(area)) |
|
|
|
|
.bufferCoordList(bufferCoordList) |
|
|
|
|
.build(); |
|
|
|
|
areaRsList.add(areaRs); |
|
|
|
|
} |
|
|
|
@ -119,7 +138,7 @@ public class BasDosService {
|
|
|
|
|
* 비행구역의 데이터를 이용하여 주변의 좌표를 추출한다. |
|
|
|
|
* |
|
|
|
|
* @param area: DosFltPlanArea |
|
|
|
|
* @return List<Map<String, Double>> |
|
|
|
|
* @return List<Map < String, Double>> |
|
|
|
|
*/ |
|
|
|
|
private List<Map<String, Double>> getBufferCoords(DosFltPlanArea area) { |
|
|
|
|
// Circle만 체크
|
|
|
|
|