anal_data_geom 의 polygon 중심좌표 테스트
This commit is contained in:
@@ -39,6 +39,7 @@ dependencies {
|
|||||||
implementation 'com.fasterxml.jackson.core:jackson-databind'
|
implementation 'com.fasterxml.jackson.core:jackson-databind'
|
||||||
implementation 'org.locationtech.jts.io:jts-io-common:1.20.0'
|
implementation 'org.locationtech.jts.io:jts-io-common:1.20.0'
|
||||||
implementation 'org.locationtech.jts:jts-core:1.19.0'
|
implementation 'org.locationtech.jts:jts-core:1.19.0'
|
||||||
|
implementation 'org.hibernate:hibernate-spatial:6.2.7.Final'
|
||||||
|
|
||||||
// QueryDSL JPA
|
// QueryDSL JPA
|
||||||
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
|
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.kamco.cd.kamcoback.changedetection;
|
||||||
|
|
||||||
|
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.tags.Tag;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
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
|
||||||
|
@RequestMapping("/api/change-detection")
|
||||||
|
@Transactional
|
||||||
|
public class ChangeDetectionApiController {
|
||||||
|
|
||||||
|
private final ChangeDetectionService changeDetectionService;
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
public ApiResponseDto<List<ChangeDetectionDto>> getPolygonToPoint() {
|
||||||
|
return ApiResponseDto.ok(changeDetectionService.getPolygonToPoint());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.kamco.cd.kamcoback.changedetection.dto;
|
||||||
|
|
||||||
|
import org.locationtech.jts.geom.Geometry;
|
||||||
|
|
||||||
|
public record ChangeDetectionDto(
|
||||||
|
Long id,
|
||||||
|
Geometry polygon,
|
||||||
|
double centroidX,
|
||||||
|
double centroidY
|
||||||
|
) {}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.kamco.cd.kamcoback.changedetection.service;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto;
|
||||||
|
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
|
||||||
|
import com.kamco.cd.kamcoback.postgres.core.ChangeDetectionCoreService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class ChangeDetectionService {
|
||||||
|
|
||||||
|
private final ChangeDetectionCoreService changeDetectionCoreService;
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto> getPolygonToPoint() {
|
||||||
|
return changeDetectionCoreService.getPolygonToPoint();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -293,7 +293,9 @@ public class GlobalExceptionHandler {
|
|||||||
Arrays.stream(stackTrace)
|
Arrays.stream(stackTrace)
|
||||||
// .limit(20)
|
// .limit(20)
|
||||||
.map(StackTraceElement::toString)
|
.map(StackTraceElement::toString)
|
||||||
.collect(Collectors.joining("\n"));
|
.collect(Collectors.joining("\n"))
|
||||||
|
.substring(0, Math.min(stackTrace.length, 255));
|
||||||
|
;
|
||||||
|
|
||||||
ErrorLogEntity errorLogEntity =
|
ErrorLogEntity errorLogEntity =
|
||||||
new ErrorLogEntity(
|
new ErrorLogEntity(
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.kamco.cd.kamcoback.postgres.core;
|
||||||
|
|
||||||
|
|
||||||
|
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;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.locationtech.jts.geom.Geometry;
|
||||||
|
import org.locationtech.jts.geom.Point;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class ChangeDetectionCoreService {
|
||||||
|
|
||||||
|
private final ChangeDetectionRepository changeDetectionRepository;
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto> getPolygonToPoint() {
|
||||||
|
List<MapSheetAnalDataGeomEntity> list = changeDetectionRepository.findAll();
|
||||||
|
|
||||||
|
return list.stream().map(p -> {
|
||||||
|
Geometry polygon = p.getGeom();
|
||||||
|
// 중심 좌표 계산
|
||||||
|
Point centroid = polygon.getCentroid();
|
||||||
|
|
||||||
|
return new ChangeDetectionDto(
|
||||||
|
p.getId(),
|
||||||
|
polygon,
|
||||||
|
centroid.getX(),
|
||||||
|
centroid.getY()
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,17 +1,12 @@
|
|||||||
package com.kamco.cd.kamcoback.postgres.entity;
|
package com.kamco.cd.kamcoback.postgres.entity;
|
||||||
|
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.*;
|
||||||
import jakarta.persistence.Entity;
|
|
||||||
import jakarta.persistence.GeneratedValue;
|
|
||||||
import jakarta.persistence.GenerationType;
|
|
||||||
import jakarta.persistence.Id;
|
|
||||||
import jakarta.persistence.SequenceGenerator;
|
|
||||||
import jakarta.persistence.Table;
|
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.locationtech.jts.geom.Geometry;
|
||||||
|
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@@ -71,4 +66,6 @@ public class MapSheetAnalDataGeomEntity {
|
|||||||
@Column(name = "updated_uid")
|
@Column(name = "updated_uid")
|
||||||
private Long updatedUid;
|
private Long updatedUid;
|
||||||
|
|
||||||
|
@Column(name = "geom", columnDefinition = "geometry")
|
||||||
|
private Geometry geom;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.kamco.cd.kamcoback.postgres.repository.changedetection;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface ChangeDetectionRepository extends JpaRepository<MapSheetAnalDataGeomEntity, Long>, ChangeDetectionRepositoryCustom {}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.kamco.cd.kamcoback.postgres.repository.changedetection;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
|
||||||
|
|
||||||
|
public interface ChangeDetectionRepositoryCustom {
|
||||||
|
|
||||||
|
String getPolygonToPoint();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.kamco.cd.kamcoback.postgres.repository.changedetection;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity;
|
||||||
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
|
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity;
|
||||||
|
|
||||||
|
public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||||
|
implements ChangeDetectionRepositoryCustom {
|
||||||
|
|
||||||
|
private final JPAQueryFactory queryFactory;
|
||||||
|
|
||||||
|
public ChangeDetectionRepositoryImpl(JPAQueryFactory queryFactory) {
|
||||||
|
super(MapSheetAnalDataGeomEntity.class);
|
||||||
|
this.queryFactory = queryFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPolygonToPoint() {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MapSheetAnalDataGeomEntity> findAll() {
|
||||||
|
return queryFactory
|
||||||
|
.selectFrom(mapSheetAnalDataGeomEntity)
|
||||||
|
.orderBy(mapSheetAnalDataGeomEntity.id.desc())
|
||||||
|
.fetch();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user