4326 변환 로직 주석

This commit is contained in:
2025-12-01 14:47:46 +09:00
parent 94ea935317
commit cff4df73ee

View File

@@ -10,9 +10,6 @@ import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalSttcEntity.map
import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity;
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataEntity;
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataGeomEntity;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.Projections; import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.CaseBuilder; import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.Expressions;
@@ -20,9 +17,6 @@ import com.querydsl.core.types.dsl.StringExpression;
import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQueryFactory; import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.geojson.GeoJsonReader;
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
@@ -114,79 +108,23 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
public ChangeDetectionDto.PolygonFeatureList getChangeDetectionPolygonList( public ChangeDetectionDto.PolygonFeatureList getChangeDetectionPolygonList(
Long analUid, String mapSheetNum) { Long analUid, String mapSheetNum) {
List<Tuple> list =
queryFactory
.select(
Expressions.stringTemplate(
"ST_AsGeoJSON(ST_Transform({0}, 4326))", mapSheetAnalDataGeomEntity.geom),
mapSheetAnalDataGeomEntity.id,
mapSheetAnalDataGeomEntity.area,
mapSheetAnalDataGeomEntity.compareYyyy,
mapSheetAnalDataGeomEntity.classBeforeProb,
mapSheetAnalDataGeomEntity.classBeforeCd.toUpperCase(),
mapSheetAnalDataGeomEntity.targetYyyy,
mapSheetAnalDataGeomEntity.classAfterProb,
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())
.from(QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity)
.where(
QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity.dataUid.in(
JPAExpressions.select(QMapSheetAnalDataEntity.mapSheetAnalDataEntity.id)
.from(QMapSheetAnalDataEntity.mapSheetAnalDataEntity)
.where(QMapSheetAnalDataEntity.mapSheetAnalDataEntity.analUid.eq(analUid))),
QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity.mapSheetNum.eq(
Long.valueOf(mapSheetNum)))
.fetch();
GeoJsonReader reader = new GeoJsonReader();
List<ChangeDetectionDto.PolygonFeature> result = List<ChangeDetectionDto.PolygonFeature> result =
list.stream()
.map(
tuple -> {
String geojson = tuple.get(0, String.class);
Geometry geom;
try {
geom = reader.read(geojson);
} catch (Exception ex) {
throw new RuntimeException("GeoJSON -> Geometry 변환 실패", ex);
}
ChangeDetectionDto.PolygonProperties properties =
new ChangeDetectionDto.PolygonProperties(
tuple.get(mapSheetAnalDataGeomEntity.id).longValue(),
tuple.get(mapSheetAnalDataGeomEntity.area).doubleValue(),
tuple.get(mapSheetAnalDataGeomEntity.compareYyyy).intValue(),
tuple.get(mapSheetAnalDataGeomEntity.classBeforeProb).doubleValue(),
tuple
.get(mapSheetAnalDataGeomEntity.classBeforeCd.toUpperCase())
.toString(),
tuple.get(mapSheetAnalDataGeomEntity.targetYyyy).intValue(),
tuple.get(mapSheetAnalDataGeomEntity.classAfterProb).doubleValue(),
tuple
.get(mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())
.toString());
return new ChangeDetectionDto.PolygonFeature("Feature", geom, properties);
})
.collect(Collectors.toList());
ChangeDetectionDto.PolygonFeatureList polygonList = new ChangeDetectionDto.PolygonFeatureList();
polygonList.setType("FeatureCollection");
polygonList.setFeatures(result);
list.clear(); // List<Tuple> 사용 참조 해제
return polygonList;
}
@Override
public List<ChangeDetectionDto.PointFeature> getChangeDetectionPointList(
Long analUid, String mapSheetNum) {
List<Tuple> list =
queryFactory queryFactory
.select( .select(
Expressions.stringTemplate( Projections.constructor(
"ST_AsGeoJSON(ST_Transform({0}, 4326))", mapSheetAnalDataGeomEntity.geomCenter), ChangeDetectionDto.PolygonFeature.class,
mapSheetAnalDataGeomEntity.id, Expressions.stringTemplate("{0}", "Feature"),
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase()) mapSheetAnalDataGeomEntity.geom, // polygon
Projections.constructor(
ChangeDetectionDto.PolygonProperties.class,
mapSheetAnalDataGeomEntity.id,
mapSheetAnalDataGeomEntity.area,
mapSheetAnalDataGeomEntity.compareYyyy,
mapSheetAnalDataGeomEntity.classBeforeProb,
mapSheetAnalDataGeomEntity.classBeforeCd.toUpperCase(),
mapSheetAnalDataGeomEntity.targetYyyy,
mapSheetAnalDataGeomEntity.classAfterProb,
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())))
.from(mapSheetAnalDataGeomEntity) .from(mapSheetAnalDataGeomEntity)
.where( .where(
mapSheetAnalDataGeomEntity.dataUid.in( mapSheetAnalDataGeomEntity.dataUid.in(
@@ -196,31 +134,136 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
mapSheetAnalDataGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum))) mapSheetAnalDataGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum)))
.fetch(); .fetch();
GeoJsonReader reader = new GeoJsonReader(); // List<Tuple> list =
List<ChangeDetectionDto.PointFeature> result = // queryFactory
list.stream() // .select(
.map( // Expressions.stringTemplate(
tuple -> { // "ST_AsGeoJSON(ST_Transform({0}, 4326))", mapSheetAnalDataGeomEntity.geom),
String geojson = tuple.get(0, String.class); // mapSheetAnalDataGeomEntity.id,
Geometry geom; // mapSheetAnalDataGeomEntity.area,
try { // mapSheetAnalDataGeomEntity.compareYyyy,
geom = reader.read(geojson); // mapSheetAnalDataGeomEntity.classBeforeProb,
} catch (Exception ex) { // mapSheetAnalDataGeomEntity.classBeforeCd.toUpperCase(),
throw new RuntimeException("GeoJSON -> Geometry 변환 실패", ex); // mapSheetAnalDataGeomEntity.targetYyyy,
} // mapSheetAnalDataGeomEntity.classAfterProb,
// mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())
// .from(QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity)
// .where(
// QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity.dataUid.in(
// JPAExpressions.select(QMapSheetAnalDataEntity.mapSheetAnalDataEntity.id)
// .from(QMapSheetAnalDataEntity.mapSheetAnalDataEntity)
//
// .where(QMapSheetAnalDataEntity.mapSheetAnalDataEntity.analUid.eq(analUid))),
// QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity.mapSheetNum.eq(
// Long.valueOf(mapSheetNum)))
// .fetch();
//
// GeoJsonReader reader = new GeoJsonReader();
//
// List<ChangeDetectionDto.PolygonFeature> result =
// list.stream()
// .map(
// tuple -> {
// String geojson = tuple.get(0, String.class);
// Geometry geom;
// try {
// geom = reader.read(geojson);
// } catch (Exception ex) {
// throw new RuntimeException("GeoJSON -> Geometry 변환 실패", ex);
// }
// ChangeDetectionDto.PolygonProperties properties =
// new ChangeDetectionDto.PolygonProperties(
// tuple.get(mapSheetAnalDataGeomEntity.id).longValue(),
// tuple.get(mapSheetAnalDataGeomEntity.area).doubleValue(),
// tuple.get(mapSheetAnalDataGeomEntity.compareYyyy).intValue(),
// tuple.get(mapSheetAnalDataGeomEntity.classBeforeProb).doubleValue(),
// tuple
// .get(mapSheetAnalDataGeomEntity.classBeforeCd.toUpperCase())
// .toString(),
// tuple.get(mapSheetAnalDataGeomEntity.targetYyyy).intValue(),
// tuple.get(mapSheetAnalDataGeomEntity.classAfterProb).doubleValue(),
// tuple
// .get(mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())
// .toString());
// return new ChangeDetectionDto.PolygonFeature("Feature", geom, properties);
// })
// .collect(Collectors.toList());
Long geoUid = tuple.get(mapSheetAnalDataGeomEntity.id).longValue(); ChangeDetectionDto.PolygonFeatureList polygonList = new ChangeDetectionDto.PolygonFeatureList();
String classCd = polygonList.setType("FeatureCollection");
tuple.get(mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase()).toString(); polygonList.setFeatures(result);
return new ChangeDetectionDto.PointFeature( // list.clear(); // List<Tuple> 사용 참조 해제
"Feature", geom, new ChangeDetectionDto.PointProperties(geoUid, classCd));
})
.collect(Collectors.toList());
list.clear(); // List<Tuple> 사용 참조 해제 return polygonList;
}
return result; @Override
public List<ChangeDetectionDto.PointFeature> getChangeDetectionPointList(
Long analUid, String mapSheetNum) {
return queryFactory
.select(
Projections.constructor(
ChangeDetectionDto.PointFeature.class,
Expressions.stringTemplate("{0}", "Feature"),
mapSheetAnalDataGeomEntity.geomCenter, // point
Projections.constructor(
ChangeDetectionDto.PointProperties.class,
mapSheetAnalDataGeomEntity.id,
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())))
.from(mapSheetAnalDataGeomEntity)
.where(
mapSheetAnalDataGeomEntity.dataUid.in(
JPAExpressions.select(mapSheetAnalDataEntity.id)
.from(mapSheetAnalDataEntity)
.where(mapSheetAnalDataEntity.analUid.eq(analUid))),
mapSheetAnalDataGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum)))
.fetch();
// List<Tuple> list =
// queryFactory
// .select(
// Expressions.stringTemplate(
// "ST_AsGeoJSON(ST_Transform({0}, 4326))",
// mapSheetAnalDataGeomEntity.geomCenter),
// mapSheetAnalDataGeomEntity.id,
// mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())
// .from(mapSheetAnalDataGeomEntity)
// .where(
// mapSheetAnalDataGeomEntity.dataUid.in(
// JPAExpressions.select(mapSheetAnalDataEntity.id)
// .from(mapSheetAnalDataEntity)
// .where(mapSheetAnalDataEntity.analUid.eq(analUid))),
// mapSheetAnalDataGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum)))
// .fetch();
//
// GeoJsonReader reader = new GeoJsonReader();
// List<ChangeDetectionDto.PointFeature> result =
// list.stream()
// .map(
// tuple -> {
// String geojson = tuple.get(0, String.class);
// Geometry geom;
// try {
// geom = reader.read(geojson);
// } catch (Exception ex) {
// throw new RuntimeException("GeoJSON -> Geometry 변환 실패", ex);
// }
//
// Long geoUid = tuple.get(mapSheetAnalDataGeomEntity.id).longValue();
// String classCd =
//
// tuple.get(mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase()).toString();
//
// return new ChangeDetectionDto.PointFeature(
// "Feature", geom, new ChangeDetectionDto.PointProperties(geoUid,
// classCd));
// })
// .collect(Collectors.toList());
//
// list.clear(); // List<Tuple> 사용 참조 해제
//
// return result;
} }
@Override @Override