4326 변환 로직 주석
This commit is contained in:
@@ -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.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.dsl.CaseBuilder;
|
||||
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.impl.JPAQueryFactory;
|
||||
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;
|
||||
|
||||
public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
@@ -114,79 +108,23 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
public ChangeDetectionDto.PolygonFeatureList getChangeDetectionPolygonList(
|
||||
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.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
|
||||
.select(
|
||||
Expressions.stringTemplate(
|
||||
"ST_AsGeoJSON(ST_Transform({0}, 4326))", mapSheetAnalDataGeomEntity.geomCenter),
|
||||
mapSheetAnalDataGeomEntity.id,
|
||||
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())
|
||||
Projections.constructor(
|
||||
ChangeDetectionDto.PolygonFeature.class,
|
||||
Expressions.stringTemplate("{0}", "Feature"),
|
||||
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)
|
||||
.where(
|
||||
mapSheetAnalDataGeomEntity.dataUid.in(
|
||||
@@ -196,31 +134,136 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
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);
|
||||
}
|
||||
// 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.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();
|
||||
String classCd =
|
||||
tuple.get(mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase()).toString();
|
||||
ChangeDetectionDto.PolygonFeatureList polygonList = new ChangeDetectionDto.PolygonFeatureList();
|
||||
polygonList.setType("FeatureCollection");
|
||||
polygonList.setFeatures(result);
|
||||
|
||||
return new ChangeDetectionDto.PointFeature(
|
||||
"Feature", geom, new ChangeDetectionDto.PointProperties(geoUid, classCd));
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
// list.clear(); // List<Tuple> 사용 참조 해제
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user