shp 파일 생성 수정
This commit is contained in:
@@ -55,7 +55,7 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
* <p>- geometry 타입은 첫 번째 유효 geometry 기준으로 스키마를 생성한다. - 좌표계는 EPSG:5186으로 설정하며, .prj 파일을 직접 생성한다.
|
* <p>- geometry 타입은 첫 번째 유효 geometry 기준으로 스키마를 생성한다. - 좌표계는 EPSG:5186으로 설정하며, .prj 파일을 직접 생성한다.
|
||||||
*
|
*
|
||||||
* @param shpBasePath 확장자를 제외한 SHP 파일 기본 경로
|
* @param shpBasePath 확장자를 제외한 SHP 파일 기본 경로
|
||||||
* @param rows 동일 그룹(stage, mapId, input1, input2)의 데이터 목록
|
* @param rows 동일 그룹(stage, mapId, input1, input2)의 데이터 목록
|
||||||
* @return 이번 호출로 write(생성/덮어쓰기)가 수행된 파일 개수
|
* @return 이번 호출로 write(생성/덮어쓰기)가 수행된 파일 개수
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@@ -123,10 +123,11 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
* 생성된다. - geometry는 GeoTools GeometryJSON을 사용하여 직렬화한다.
|
* 생성된다. - geometry는 GeoTools GeometryJSON을 사용하여 직렬화한다.
|
||||||
*
|
*
|
||||||
* <p>GeoJSON 구조 예: { "type": "FeatureCollection", "name": "stage_input1_input2_mapId", "crs": {
|
* <p>GeoJSON 구조 예: { "type": "FeatureCollection", "name": "stage_input1_input2_mapId", "crs": {
|
||||||
* "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::5186" } }, "properties": { ... }, "features": [ ... ] }
|
* "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::5186" } }, "properties": { ...
|
||||||
|
* }, "features": [ ... ] }
|
||||||
*
|
*
|
||||||
* @param geoJsonPath 생성할 GeoJSON 파일의 전체 경로 (.geojson 포함)
|
* @param geoJsonPath 생성할 GeoJSON 파일의 전체 경로 (.geojson 포함)
|
||||||
* @param rows 동일 그룹(stage, mapId, input1, input2)의 데이터 목록
|
* @param rows 동일 그룹(stage, mapId, input1, input2)의 데이터 목록
|
||||||
* @return 이번 호출로 write(생성/덮어쓰기)가 수행된 파일 개수
|
* @return 이번 호출로 write(생성/덮어쓰기)가 수행된 파일 개수
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@@ -152,9 +153,9 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
|
|
||||||
// name: stage_input1_input2_mapId
|
// name: stage_input1_input2_mapId
|
||||||
String name =
|
String name =
|
||||||
String.format(
|
String.format(
|
||||||
"%d_%d_%d_%d",
|
"%d_%d_%d_%d",
|
||||||
first.getStage(), first.getInput1(), first.getInput2(), first.getMapId());
|
first.getStage(), first.getInput1(), first.getInput2(), first.getMapId());
|
||||||
root.put("name", name);
|
root.put("name", name);
|
||||||
|
|
||||||
// CRS (EPSG:5186)
|
// CRS (EPSG:5186)
|
||||||
@@ -225,7 +226,7 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
|
|
||||||
// 파일 쓰기
|
// 파일 쓰기
|
||||||
try (OutputStreamWriter w =
|
try (OutputStreamWriter w =
|
||||||
new OutputStreamWriter(new FileOutputStream(geoJsonFile), GEOJSON_CHARSET)) {
|
new OutputStreamWriter(new FileOutputStream(geoJsonFile), GEOJSON_CHARSET)) {
|
||||||
om.writerWithDefaultPrettyPrinter().writeValue(w, root);
|
om.writerWithDefaultPrettyPrinter().writeValue(w, root);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,7 +250,7 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private SimpleFeatureType createSchema(
|
private SimpleFeatureType createSchema(
|
||||||
Class<? extends Geometry> geomType, CoordinateReferenceSystem crs) {
|
Class<? extends Geometry> geomType, CoordinateReferenceSystem crs) {
|
||||||
SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder();
|
SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder();
|
||||||
b.setName("inference_result");
|
b.setName("inference_result");
|
||||||
b.setCRS(crs);
|
b.setCRS(crs);
|
||||||
@@ -281,7 +282,7 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
private ShapefileDataStore createDataStore(File shpFile, SimpleFeatureType schema)
|
private ShapefileDataStore createDataStore(File shpFile, SimpleFeatureType schema)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
Map<String, Serializable> params = new HashMap<>();
|
Map<String, Serializable> params = new HashMap<>();
|
||||||
params.put("url", shpFile.toURI().toURL());
|
params.put("url", shpFile.toURI().toURL());
|
||||||
@@ -300,7 +301,7 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DefaultFeatureCollection buildFeatureCollection(
|
private DefaultFeatureCollection buildFeatureCollection(
|
||||||
SimpleFeatureType schema, List<InferenceResultShpDto.Basic> rows) {
|
SimpleFeatureType schema, List<InferenceResultShpDto.Basic> rows) {
|
||||||
DefaultFeatureCollection collection = new DefaultFeatureCollection();
|
DefaultFeatureCollection collection = new DefaultFeatureCollection();
|
||||||
SimpleFeatureBuilder builder = new SimpleFeatureBuilder(schema);
|
SimpleFeatureBuilder builder = new SimpleFeatureBuilder(schema);
|
||||||
|
|
||||||
@@ -318,10 +319,10 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
builder.add(dto.getArea() != null ? dto.getArea().doubleValue() : null);
|
builder.add(dto.getArea() != null ? dto.getArea().doubleValue() : null);
|
||||||
builder.add(dto.getBeforeClass());
|
builder.add(dto.getBeforeClass());
|
||||||
builder.add(
|
builder.add(
|
||||||
dto.getBeforeProbability() != null ? dto.getBeforeProbability().doubleValue() : null);
|
dto.getBeforeProbability() != null ? dto.getBeforeProbability().doubleValue() : null);
|
||||||
builder.add(dto.getAfterClass());
|
builder.add(dto.getAfterClass());
|
||||||
builder.add(
|
builder.add(
|
||||||
dto.getAfterProbability() != null ? dto.getAfterProbability().doubleValue() : null);
|
dto.getAfterProbability() != null ? dto.getAfterProbability().doubleValue() : null);
|
||||||
|
|
||||||
SimpleFeature feature = builder.buildFeature(null);
|
SimpleFeature feature = builder.buildFeature(null);
|
||||||
collection.add(feature);
|
collection.add(feature);
|
||||||
@@ -332,7 +333,7 @@ public class GeoToolsShpWriter implements ShpWriter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void writeFeatures(ShapefileDataStore dataStore, DefaultFeatureCollection collection)
|
private void writeFeatures(ShapefileDataStore dataStore, DefaultFeatureCollection collection)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
String typeName = dataStore.getTypeNames()[0];
|
String typeName = dataStore.getTypeNames()[0];
|
||||||
SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
|
SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
|
||||||
|
|||||||
@@ -16,9 +16,7 @@ public class InferenceResultShpService {
|
|||||||
private final InferenceResultShpCoreService coreService;
|
private final InferenceResultShpCoreService coreService;
|
||||||
private final ShpWriter shpWriter;
|
private final ShpWriter shpWriter;
|
||||||
|
|
||||||
/**
|
/** inference_results 테이블을 기준으로 분석 결과 테이블과 도형 테이블을 최신 상태로 반영한다. */
|
||||||
* inference_results 테이블을 기준으로 분석 결과 테이블과 도형 테이블을 최신 상태로 반영한다.
|
|
||||||
*/
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public InferenceResultShpDto.InferenceCntDto saveInferenceResultData() {
|
public InferenceResultShpDto.InferenceCntDto saveInferenceResultData() {
|
||||||
return coreService.buildInferenceData();
|
return coreService.buildInferenceData();
|
||||||
@@ -38,6 +36,7 @@ public class InferenceResultShpService {
|
|||||||
// TODO 파일 경로는 정해지면 수정, properties 사용
|
// TODO 파일 경로는 정해지면 수정, properties 사용
|
||||||
String baseDir = System.getProperty("user.home") + "/export";
|
String baseDir = System.getProperty("user.home") + "/export";
|
||||||
|
|
||||||
|
// TODO 배치 실행으로 변경 필요
|
||||||
int batchSize = 100;
|
int batchSize = 100;
|
||||||
int geomLimit = 500_000;
|
int geomLimit = 500_000;
|
||||||
|
|
||||||
@@ -59,9 +58,9 @@ public class InferenceResultShpService {
|
|||||||
// 파일명 생성 (stage_mapSheet_compare_target)
|
// 파일명 생성 (stage_mapSheet_compare_target)
|
||||||
InferenceResultShpDto.Basic first = dtoList.get(0);
|
InferenceResultShpDto.Basic first = dtoList.get(0);
|
||||||
String baseName =
|
String baseName =
|
||||||
String.format(
|
String.format(
|
||||||
"%d_%d_%d_%d",
|
"%d_%d_%d_%d",
|
||||||
first.getStage(), first.getMapId(), first.getInput1(), first.getInput2());
|
first.getStage(), first.getMapId(), first.getInput1(), first.getInput2());
|
||||||
|
|
||||||
String shpBasePath = baseDir + "/shp/" + baseName;
|
String shpBasePath = baseDir + "/shp/" + baseName;
|
||||||
String geoJsonPath = baseDir + "/geojson/" + baseName + ".geojson";
|
String geoJsonPath = baseDir + "/geojson/" + baseName + ".geojson";
|
||||||
|
|||||||
Reference in New Issue
Block a user