lkd9125(이경도)
7 months ago
6 changed files with 166 additions and 3 deletions
@ -0,0 +1,57 @@
|
||||
package kr.co.palnet.kac.api.v1.flight.plan.model.buffer; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import kr.co.palnet.kac.api.util.model.FlightPlanAreaCoordModel; |
||||
import lombok.Data; |
||||
|
||||
import java.time.LocalDateTime; |
||||
@Data |
||||
public class BufferAreaCoordModel { |
||||
|
||||
@Schema(description = "비행구역좌표 일련번호", example = "1") |
||||
private Long planAreaCoordSno; |
||||
|
||||
@Schema(description = "비행계획비행구역 일련번호", example = "1") |
||||
private Long planAreaSno; |
||||
|
||||
@Schema(description = "위도", example = "127.33") |
||||
private double lat; |
||||
|
||||
@Schema(description = "경도", example = "37.99") |
||||
private double lon; |
||||
|
||||
@Schema(description = "생성자ID", hidden = true) |
||||
private String createUserId; |
||||
|
||||
@Schema(description = "생성일시", hidden = true) |
||||
private LocalDateTime createDt; |
||||
|
||||
@Schema(hidden = true) |
||||
private String docState = "R"; |
||||
|
||||
public static FlightPlanAreaCoordModel toCoordModel(BufferAreaCoordModel model){ |
||||
FlightPlanAreaCoordModel coordModel = new FlightPlanAreaCoordModel(); |
||||
coordModel.setPlanAreaCoordSno(model.getPlanAreaCoordSno()); |
||||
coordModel.setPlanAreaSno(model.getPlanAreaSno()); |
||||
coordModel.setLat(model.getLat()); |
||||
coordModel.setLon(model.getLon()); |
||||
coordModel.setCreateUserId(model.getCreateUserId()); |
||||
coordModel.setCreateDt(model.getCreateDt()); |
||||
coordModel.setDocState(model.getDocState()); |
||||
|
||||
return coordModel; |
||||
} |
||||
|
||||
public static BufferAreaCoordModel toModel(FlightPlanAreaCoordModel model){ |
||||
BufferAreaCoordModel coordModel = new BufferAreaCoordModel(); |
||||
coordModel.setPlanAreaCoordSno(model.getPlanAreaCoordSno()); |
||||
coordModel.setPlanAreaSno(model.getPlanAreaSno()); |
||||
coordModel.setLat(model.getLat()); |
||||
coordModel.setLon(model.getLon()); |
||||
coordModel.setCreateUserId(model.getCreateUserId()); |
||||
coordModel.setCreateDt(model.getCreateDt()); |
||||
coordModel.setDocState(model.getDocState()); |
||||
|
||||
return coordModel; |
||||
} |
||||
} |
@ -0,0 +1,58 @@
|
||||
package kr.co.palnet.kac.api.v1.flight.plan.model.buffer; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import kr.co.palnet.kac.api.v1.flight.laanc.model.constant.FltMethod; |
||||
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.BasLaancAreaCoordModel; |
||||
import lombok.Data; |
||||
|
||||
import java.time.LocalDateTime; |
||||
import java.util.List; |
||||
|
||||
@Data |
||||
public class CreateBufferModel { |
||||
@Schema(description = "비행구역 일련번호", example = "1", hidden = true) |
||||
private Long planAreaSno; |
||||
|
||||
@Schema(description = "비행계획서 일련번호", example = "1", hidden = true) |
||||
private Long planSno; |
||||
|
||||
@Schema(description = "구역종류", example = "CIRCLE") |
||||
private String areaType; |
||||
|
||||
@Schema(description = "비행방식", example = "01") |
||||
private FltMethod fltMethod; |
||||
|
||||
@Schema(description = "비행구역주소", example = "인천광역시 부평구 청천2동") |
||||
private String fltAreaAddr; |
||||
|
||||
@Schema(description = "버퍼존", example = "100") |
||||
private Integer bufferZone; |
||||
|
||||
@Schema(description = "고도", example = "110") |
||||
private String fltElev; |
||||
|
||||
@Schema(description = "생성자ID", hidden = true) |
||||
private String createUserId; |
||||
|
||||
@Schema(description = "생성일시", hidden = true) |
||||
private LocalDateTime createDt; |
||||
|
||||
@Schema(description = "수정자ID", hidden = true) |
||||
private String updateUserId; |
||||
|
||||
@Schema(description = "수정일시", hidden = true) |
||||
private LocalDateTime updateDt; |
||||
|
||||
private String docState = "R"; |
||||
|
||||
private List<BufferAreaCoordModel> coordList; |
||||
|
||||
@Schema(hidden = true) |
||||
private List<BufferAreaCoordModel> bufferCoordList; |
||||
|
||||
// kac 추가 필드
|
||||
@Schema(description = "비행방식(기타)") |
||||
private String fltMothoeRm; |
||||
|
||||
|
||||
} |
@ -1,11 +1,43 @@
|
||||
package kr.co.palnet.kac.api.v1.flight.plan.service; |
||||
|
||||
import kr.co.palnet.kac.api.util.AreaUtils; |
||||
import kr.co.palnet.kac.api.util.model.FlightPlanAreaCoordModel; |
||||
import kr.co.palnet.kac.api.v1.flight.laanc.model.create.BasLaancAreaCoordModel; |
||||
import kr.co.palnet.kac.api.v1.flight.plan.model.buffer.BufferAreaCoordModel; |
||||
import kr.co.palnet.kac.api.v1.flight.plan.model.buffer.CreateBufferModel; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.locationtech.jts.geom.Coordinate; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Service |
||||
@Slf4j |
||||
@RequiredArgsConstructor |
||||
public class FlightPlanService { |
||||
|
||||
private final AreaUtils areaUtils; |
||||
|
||||
public List<CreateBufferModel> createBuffer(List<CreateBufferModel> rq) { |
||||
|
||||
for (CreateBufferModel area : rq) { |
||||
|
||||
if ("LINE".equals(area.getAreaType())) { |
||||
List<FlightPlanAreaCoordModel> coordList = area.getCoordList().stream().map(BufferAreaCoordModel::toCoordModel).toList(); |
||||
|
||||
List<Coordinate> convertCoordinates = areaUtils.convertCoordinates(coordList); // 객체 타입 변환
|
||||
List<Coordinate> transCoordList = areaUtils.transform(convertCoordinates, "EPSG:4326", "EPSG:5181"); |
||||
|
||||
List<Coordinate> bufferList = areaUtils.buffer(transCoordList, area.getBufferZone()); // buffer 영역 생성
|
||||
|
||||
List<Coordinate> transBufferList = areaUtils.transform(bufferList, "EPSG:5181", "EPSG:4326"); // buffer 영역 좌표계 변환
|
||||
List<BufferAreaCoordModel> bufferCoordList = areaUtils.convertModel(transBufferList).stream().map(BufferAreaCoordModel::toModel).toList(); |
||||
|
||||
area.setBufferCoordList(bufferCoordList); |
||||
} |
||||
} |
||||
|
||||
return rq; |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue