Geometry 변환 hibernate-spatial 적용
This commit is contained in:
@@ -39,7 +39,7 @@ dependencies {
|
||||
implementation 'com.fasterxml.jackson.core:jackson-databind'
|
||||
implementation 'org.locationtech.jts.io:jts-io-common:1.20.0'
|
||||
implementation 'org.locationtech.jts:jts-core:1.19.0'
|
||||
//implementation 'org.hibernate:hibernate-spatial:6.2.7.Final'
|
||||
implementation 'org.hibernate:hibernate-spatial:6.2.7.Final'
|
||||
|
||||
// QueryDSL JPA
|
||||
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.kamco.cd.kamcoback.changedetection.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -53,7 +52,7 @@ public class ChangeDetectionDto {
|
||||
public static class CogUrlDto {
|
||||
private String beforeCogUrl;
|
||||
private String afterCogUrl;
|
||||
private JsonNode bbox;
|
||||
private Geometry bbox;
|
||||
}
|
||||
|
||||
@Schema(name = "AnalYearList", description = "년도(차수) 목록")
|
||||
|
||||
@@ -56,16 +56,6 @@ public class ChangeDetectionCoreService {
|
||||
}
|
||||
|
||||
public ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
ChangeDetectionDto.CogUrlDto resultDto =
|
||||
changeDetectionRepository.getChangeDetectionCogUrl(req);
|
||||
|
||||
try {
|
||||
JsonNode geomNode = mapper.readTree(resultDto.getBbox().toString());
|
||||
resultDto.setBbox(geomNode);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to parse geom JSON", e);
|
||||
}
|
||||
return changeDetectionRepository.getChangeDetectionCogUrl(req);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,19 +7,14 @@ import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataGeomEntity
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalEntity.mapSheetAnalEntity;
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalSttcEntity.mapSheetAnalSttcEntity;
|
||||
|
||||
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.querydsl.core.Tuple;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.CaseBuilder;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.core.types.dsl.StringExpression;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
|
||||
|
||||
public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
@@ -68,12 +63,13 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
|
||||
@Override
|
||||
public ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req) {
|
||||
Tuple result =
|
||||
queryFactory
|
||||
return queryFactory
|
||||
.select(
|
||||
Projections.constructor(
|
||||
ChangeDetectionDto.CogUrlDto.class,
|
||||
makeCogUrl(req.getBeforeYear()).max().as("beforeCogUrl"),
|
||||
makeCogUrl(req.getAfterYear()).max().as("afterCogUrl"),
|
||||
Expressions.stringTemplate("ST_AsGeoJSON({0})", mapInkx5kEntity.geom).as("bbox"))
|
||||
mapInkx5kEntity.geom.as("bbox")))
|
||||
.from(imageryEntity)
|
||||
.innerJoin(mapInkx5kEntity)
|
||||
.on(imageryEntity.scene5k.eq(mapInkx5kEntity.mapidcdNo))
|
||||
@@ -85,14 +81,6 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
imageryEntity.scene5k.eq(req.getMapSheetNum()))
|
||||
.groupBy(mapInkx5kEntity.geom)
|
||||
.fetchOne();
|
||||
|
||||
// Polygon -> JsonNode 로 변환
|
||||
JsonNode geometryJson =
|
||||
changeGeometryJson(
|
||||
String.valueOf(Objects.requireNonNull(result).get(2, StringExpression.class)));
|
||||
|
||||
return new ChangeDetectionDto.CogUrlDto(
|
||||
result.get(0, String.class), result.get(1, String.class), geometryJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -119,13 +107,4 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
"{0} || {1}", imageryEntity.cogMiddlePath, imageryEntity.cogFilename))
|
||||
.otherwise("");
|
||||
}
|
||||
|
||||
private JsonNode changeGeometryJson(String geometry) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
try {
|
||||
return mapper.readTree(geometry);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user