From 05e984d91d8902b1fc68ce40804281f4b8291db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dhji=28=EC=A7=80=EB=8C=80=ED=95=9C=29?= Date: Thu, 9 Nov 2023 14:57:32 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=A0=EB=8F=84=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 4 +- .../com/palnet/biz/config/InitRunner.java | 10 ++- .../com/palnet/comn/utils/AirspaceUtils.java | 70 +++++++------------ .../utils/DigitalElevationModelUtils.java | 26 ++----- ...son.bak => gimpo-airport-2d-elev.json.bak} | 0 5 files changed, 46 insertions(+), 64 deletions(-) rename pav-server/src/main/resources/air/elev2d/{gimpo-airport-2d-ele.json.bak => gimpo-airport-2d-elev.json.bak} (100%) diff --git a/docker-compose.yml b/docker-compose.yml index c04eaf8b..4366e3df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,4 +4,6 @@ services: server: build: pav-server environment: - - SPRING_PROFILES_ACTIVE=local \ No newline at end of file + - SPRING_PROFILES_ACTIVE=local + ports: + - "9000:8080" \ No newline at end of file diff --git a/pav-server/src/main/java/com/palnet/biz/config/InitRunner.java b/pav-server/src/main/java/com/palnet/biz/config/InitRunner.java index 92c81883..a1b28a23 100644 --- a/pav-server/src/main/java/com/palnet/biz/config/InitRunner.java +++ b/pav-server/src/main/java/com/palnet/biz/config/InitRunner.java @@ -1,5 +1,6 @@ package com.palnet.biz.config; +import com.palnet.comn.utils.AirspaceUtils; import com.palnet.comn.utils.DigitalElevationModelUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -16,8 +17,15 @@ public class InitRunner implements ApplicationRunner { try { DigitalElevationModelUtils.getInstance(); } catch (Exception e) { - log.warn("===== InitRunner run error : {}", e.getMessage()); + log.warn("===== InitRunner run error[DigitalElevationModelUtils] : {}", e.getMessage()); } + // airspace load + try { + AirspaceUtils.getInstance(); + } catch (Exception e) { + log.warn("===== InitRunner run error[AirspaceUtils] : {}", e.getMessage()); + } + } } diff --git a/pav-server/src/main/java/com/palnet/comn/utils/AirspaceUtils.java b/pav-server/src/main/java/com/palnet/comn/utils/AirspaceUtils.java index a01488a5..cb17ae39 100644 --- a/pav-server/src/main/java/com/palnet/comn/utils/AirspaceUtils.java +++ b/pav-server/src/main/java/com/palnet/comn/utils/AirspaceUtils.java @@ -9,15 +9,20 @@ import org.geotools.geojson.geom.GeometryJSON; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; -import org.locationtech.jts.geom.*; +import org.locationtech.jts.geom.Coordinate; +import org.locationtech.jts.geom.Geometry; +import org.locationtech.jts.geom.GeometryFactory; import org.opengis.feature.simple.SimpleFeature; -import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -150,56 +155,35 @@ public class AirspaceUtils { // 파일에서 공역 데이터 가져와서 geometry로 변환 - 초기화. private void loadResourceAirspace() { -// airgeo-elev.json -// gimpo-airport-2d-elev.json - ClassPathResource airgeo = new ClassPathResource("air/elev2d/airgeo-elev.json"); - ClassPathResource gimpo = new ClassPathResource("air/elev2d/gimpo-airport-2d-elev.json"); - List featureInfos = new ArrayList<>(); - InputStream jsonInputStream = null; - InputStreamReader inputStreamReader = null; - // 2. json parsing - JSONParser jsonParser = new JSONParser(); + List featureInfos = new ArrayList<>(); + ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + Resource[] resources = null; try { - jsonInputStream = airgeo.getInputStream(); - inputStreamReader = new InputStreamReader(jsonInputStream, "UTF-8"); - BufferedReader reader = new BufferedReader(inputStreamReader); - JSONObject jsonObject = (JSONObject) jsonParser.parse(reader); - List fis = this.convertGeoJsonToGeometry(jsonObject); - featureInfos.addAll(fis); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - try { - if (jsonInputStream != null) jsonInputStream.close(); - if (inputStreamReader != null) inputStreamReader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } + resources = resolver.getResources("classpath:" + CLASS_PATH + "/*-elev.json"); + } catch (IOException e) { + log.warn("airspaces load error : {}", e.getMessage()); } - InputStream jsonInputStream2 = null; - InputStreamReader inputStreamReader2 = null; + if (resources == null) { + log.info("airspace resources is null"); + return; + } - try { - jsonInputStream2 = gimpo.getInputStream(); - inputStreamReader2 = new InputStreamReader(jsonInputStream2, "UTF-8"); - BufferedReader reader = new BufferedReader(inputStreamReader2); - JSONObject jsonObject = (JSONObject) jsonParser.parse(reader); - List fis = this.convertGeoJsonToGeometry(jsonObject); - featureInfos.addAll(fis); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - try { - if (jsonInputStream2 != null) jsonInputStream2.close(); - if (inputStreamReader2 != null) inputStreamReader2.close(); - } catch (IOException e) { - throw new RuntimeException(e); + for (Resource resource : resources) { + try (InputStream is = resource.getInputStream()) { + BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + JSONParser jsonParser = new JSONParser(); + JSONObject jsonObject = (JSONObject) jsonParser.parse(reader); + List fis = this.convertGeoJsonToGeometry(jsonObject); + featureInfos.addAll(fis); + } catch (Exception e) { + log.warn("airspace resource read error : {}", e.getMessage()); } } log.info(">>> featureInfos size : {}", featureInfos.size()); + this.airspaces = featureInfos; } diff --git a/pav-server/src/main/java/com/palnet/comn/utils/DigitalElevationModelUtils.java b/pav-server/src/main/java/com/palnet/comn/utils/DigitalElevationModelUtils.java index 2b7e21fc..7bbcd51c 100644 --- a/pav-server/src/main/java/com/palnet/comn/utils/DigitalElevationModelUtils.java +++ b/pav-server/src/main/java/com/palnet/comn/utils/DigitalElevationModelUtils.java @@ -21,7 +21,6 @@ import org.opengis.referencing.operation.TransformException; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.util.StopWatch; import java.awt.image.Raster; import java.io.File; @@ -57,28 +56,17 @@ public class DigitalElevationModelUtils { try { Resource[] resources = resolver.getResources("classpath:" + CLASS_PATH + "/dem_*.tif"); for (Resource resource : resources) { - log.info("resource : {}", resource); - log.info("resource : {}", resource.getFilename()); - log.info("resource : {}", resource.getURI()); - log.info("resource : {}", resource.getURI().getPath()); - log.info("resource : {}", resource.getURL()); - log.info("resource : {}", resource.getURL().getPath()); - log.info("resource : {}", resource.getDescription()); - log.info("================================"); -// log.info("resource : {}", resource.getFile()); -// log.info("resource : {}", resource.getFile().getName()); -// log.info("resource : {}", resource.getFile().getPath()); -// log.info("resource : {}", resource.getFile().getAbsolutePath()); -// log.info("resource : {}", resource.getFile().getCanonicalPath()); -// log.info("resource : {}", resource.getFile().toPath()); - - if (!resource.isFile()) { + + if (!resource.exists()) { log.info("this is not file : {}", resource.getFilename()); continue; } + File file = File.createTempFile("dem", ".tif"); FileUtils.copyInputStreamToFile(resource.getInputStream(), file); + log.info(">>> file : {}", file); + AbstractGridFormat format = GridFormatFinder.findFormat(file); GridCoverage2DReader reader = format.getReader(file); @@ -92,9 +80,9 @@ public class DigitalElevationModelUtils { } } catch (IOException e) { - throw new RuntimeException(e); + log.warn("dem load error : {}", e.getMessage()); } - log.info(">>> demList : {}", demList); + log.info(">>> demList size : {}", demList.size()); this.dems = demList; } diff --git a/pav-server/src/main/resources/air/elev2d/gimpo-airport-2d-ele.json.bak b/pav-server/src/main/resources/air/elev2d/gimpo-airport-2d-elev.json.bak similarity index 100% rename from pav-server/src/main/resources/air/elev2d/gimpo-airport-2d-ele.json.bak rename to pav-server/src/main/resources/air/elev2d/gimpo-airport-2d-elev.json.bak