diff --git a/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java b/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java index e8b2f533..5e387fcf 100644 --- a/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java @@ -1,16 +1,19 @@ package com.kamco.cd.kamcoback.changedetection; +import com.fasterxml.jackson.databind.JsonNode; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto; import com.kamco.cd.kamcoback.changedetection.service.ChangeDetectionService; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; +import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.transaction.Transactional; -import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @Tag(name = "변화탐지", description = "변화탐지 API") @RequiredArgsConstructor @RestController @@ -20,8 +23,19 @@ public class ChangeDetectionApiController { private final ChangeDetectionService changeDetectionService; + @Hidden + @Deprecated @GetMapping - public ApiResponseDto> getPolygonToPoint() { + public ApiResponseDto> getPolygonToPoint() { return ApiResponseDto.ok(changeDetectionService.getPolygonToPoint()); } + + /** + * PolygonData -> JsonNode 변환 예제 + * @return + */ + @GetMapping("/json-data") + public ApiResponseDto> getPolygonToJson(){ + return ApiResponseDto.ok(changeDetectionService.getPolygonToJson()); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/changedetection/dto/ChangeDetectionDto.java b/src/main/java/com/kamco/cd/kamcoback/changedetection/dto/ChangeDetectionDto.java index ebfcec09..cb3c971e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/changedetection/dto/ChangeDetectionDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/changedetection/dto/ChangeDetectionDto.java @@ -1,5 +1,74 @@ package com.kamco.cd.kamcoback.changedetection.dto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import org.locationtech.jts.geom.Geometry; -public record ChangeDetectionDto(Long id, Geometry polygon, double centroidX, double centroidY) {} +public class ChangeDetectionDto{ + + @Schema(name = "TestDto", description = "테스트용") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class TestDto { + private Long id; + private Geometry polygon; + private Double centroidX;; + private Double centroidY; + } + + @Schema(name = "PolygonGeometry", description = "폴리곤 리턴 객체") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class PointGeometry{ + private Long geoUid; + private String type; // "Point" + private Geometry coordinates; //Point 값 + private String before_class; //기준 분류 + private String after_class; //비교 분류 + } + + @Schema(name = "PolygonGeometry", description = "폴리곤 리턴 객체") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class PolygonGeometry{ + private Long geoUid; + private String type; // "MultiPolygon" + private Geometry coordinates; //Polygon 값 + private Double center_latitude; //폴리곤 중심 위도 + private Double center_longitude; //폴리곤 중심 경도 + } + + @Schema(name = "CogURL", description = "COG URL") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class CogURL{ + private String before_cog_url; //기준 COG URL + private String after_cog_url; //비교 COG URL + } + + @Schema(name = "PolygonProperties", description = "폴리곤 정보") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class PolygonProperties{ + private Double area; //면적 + private String before_year; //기준년도 + private Double before_confidence; //기준 신뢰도(확률) + private String before_class; //기준 분류 + private String after_year; //비교년도 + private Double after_confidence; //비교 신뢰도(확률) + private String after_class; //비교 분류 + } +} diff --git a/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java b/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java index 4fb89cb5..48a365dd 100644 --- a/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java +++ b/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java @@ -1,5 +1,6 @@ package com.kamco.cd.kamcoback.changedetection.service; +import com.fasterxml.jackson.databind.JsonNode; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto; import com.kamco.cd.kamcoback.postgres.core.ChangeDetectionCoreService; import java.util.List; @@ -12,7 +13,11 @@ public class ChangeDetectionService { private final ChangeDetectionCoreService changeDetectionCoreService; - public List getPolygonToPoint() { + public List getPolygonToPoint() { return changeDetectionCoreService.getPolygonToPoint(); } + + public List getPolygonToJson(){ + return changeDetectionCoreService.getPolygonToJson(); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java index 382c3e54..491137b7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java @@ -1,5 +1,8 @@ package com.kamco.cd.kamcoback.postgres.core; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity; import com.kamco.cd.kamcoback.postgres.repository.changedetection.ChangeDetectionRepository; @@ -16,7 +19,7 @@ public class ChangeDetectionCoreService { private final ChangeDetectionRepository changeDetectionRepository; - public List getPolygonToPoint() { + public List getPolygonToPoint() { List list = changeDetectionRepository.findAll(); return list.stream() @@ -26,8 +29,24 @@ public class ChangeDetectionCoreService { // 중심 좌표 계산 Point centroid = polygon.getCentroid(); - return new ChangeDetectionDto(p.getId(), polygon, centroid.getX(), centroid.getY()); + return new ChangeDetectionDto.TestDto(p.getId(), polygon, centroid.getX(), centroid.getY()); }) .collect(Collectors.toList()); } + + public List getPolygonToJson() { + List list = changeDetectionRepository.findPolygonJson(); + ObjectMapper mapper = new ObjectMapper(); + + return list.stream() + .map( + s -> { + try { + return mapper.readTree(s); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + }) + .collect(Collectors.toList()); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java index 2044ab48..db1375cd 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java @@ -1,6 +1,10 @@ package com.kamco.cd.kamcoback.postgres.repository.changedetection; +import java.util.List; + public interface ChangeDetectionRepositoryCustom { String getPolygonToPoint(); + + List findPolygonJson(); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java index 481e6379..4ec6e2f8 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java @@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.postgres.repository.changedetection; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity; +import com.querydsl.core.types.dsl.Expressions; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; @@ -23,10 +24,14 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport return null; } - public List findAll() { + @Override + public List findPolygonJson(){ return queryFactory - .selectFrom(mapSheetAnalDataGeomEntity) - .orderBy(mapSheetAnalDataGeomEntity.id.desc()) - .fetch(); + .select( + Expressions.stringTemplate("ST_AsGeoJSON({0})", mapSheetAnalDataGeomEntity.geom) + ) + .from(mapSheetAnalDataGeomEntity) + .orderBy(mapSheetAnalDataGeomEntity.id.desc()) + .fetch(); } }