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; |
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.RequiredArgsConstructor; |
||||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.locationtech.jts.geom.Coordinate; |
||||||
import org.springframework.stereotype.Service; |
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
@Service |
@Service |
||||||
@Slf4j |
@Slf4j |
||||||
@RequiredArgsConstructor |
@RequiredArgsConstructor |
||||||
public class FlightPlanService { |
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