Browse Source

feat: 김포 지역 검색조건 추가

feature/address-coordinate
지대한 3 months ago
parent
commit
9216159a23
  1. 1
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java
  2. 25
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java

1
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanRq.java

@ -16,4 +16,5 @@ public class BasDosPlanRq {
private LocalDate searchEndDt;
private String applyNo;
private String approvalCd;
private String selectZone;
}

25
pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java

@ -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만 체크

Loading…
Cancel
Save