From a3d8b2a5a449f2f633973786573b5306f29a517e Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 29 十一月 2023 16:33:45 +0800 Subject: [PATCH] 添加“使用GDAL获取EPSG编码” --- src/main/java/com/lf/server/controller/data/PublishController.java | 3 + src/main/java/com/lf/server/helper/WebHelper.java | 28 ++++++++++++- src/main/java/com/lf/server/helper/StringHelper.java | 2 说明.txt | 6 +++ src/main/java/com/lf/server/service/data/RasterService.java | 37 ++++++++++++++++++ src/main/resources/application.yml | 8 ++-- 6 files changed, 75 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/lf/server/controller/data/PublishController.java b/src/main/java/com/lf/server/controller/data/PublishController.java index a073ba1..f7db163 100644 --- a/src/main/java/com/lf/server/controller/data/PublishController.java +++ b/src/main/java/com/lf/server/controller/data/PublishController.java @@ -299,7 +299,8 @@ continue; } - Integer epsg = rasterService.getRaterEpsg(filePath); + // Integer epsg = rasterService.getRaterEpsg(filePath) + Integer epsg = rasterService.getEpsgByGdal(filePath); if (null == epsg || epsg < 1) { me.setBak("鍧愭爣绯籌D鏃犳晥"); errList.add(me); diff --git a/src/main/java/com/lf/server/helper/StringHelper.java b/src/main/java/com/lf/server/helper/StringHelper.java index c0ea623..2a130b4 100644 --- a/src/main/java/com/lf/server/helper/StringHelper.java +++ b/src/main/java/com/lf/server/helper/StringHelper.java @@ -203,7 +203,7 @@ * 鑾峰彇鍒嗛挓宸暟 */ public static long getMinuteDifference(Timestamp ts) { - return (ts.getTime() - new Date().getTime()) / 1000 / 60; + return (ts.getTime() - System.currentTimeMillis()) / 1000 / 60; } /** diff --git a/src/main/java/com/lf/server/helper/WebHelper.java b/src/main/java/com/lf/server/helper/WebHelper.java index c47a45a..2d4c289 100644 --- a/src/main/java/com/lf/server/helper/WebHelper.java +++ b/src/main/java/com/lf/server/helper/WebHelper.java @@ -16,9 +16,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintWriter; +import java.io.*; import java.net.URLEncoder; import java.sql.Timestamp; import java.util.*; @@ -368,6 +366,30 @@ } /** + * 鎵ц鍛戒护 + * + * @param cmd 鍛戒护 + */ + public static String exec2(String cmd) { + try { + StringBuilder sb = new StringBuilder(); + Process process = Runtime.getRuntime().exec(cmd); + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + + String line; + while ((line = reader.readLine()) != null) { + sb.append(line).append("\n"); + } + reader.close(); + + return sb.toString(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return null; + } + } + + /** * 鑾峰彇璇锋眰鐨勫弬鏁板�� * * @param req 璇锋眰 diff --git a/src/main/java/com/lf/server/service/data/RasterService.java b/src/main/java/com/lf/server/service/data/RasterService.java index 625b0c4..1870908 100644 --- a/src/main/java/com/lf/server/service/data/RasterService.java +++ b/src/main/java/com/lf/server/service/data/RasterService.java @@ -2,6 +2,7 @@ import com.lf.server.entity.all.StaticData; import com.lf.server.helper.StringHelper; +import com.lf.server.helper.WebHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.gdal.Dataset; @@ -11,6 +12,7 @@ import org.gdal.ogr.ogr; import org.gdal.osr.SpatialReference; import org.osgeo.proj4j.*; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; @@ -25,6 +27,9 @@ private SpatialReference sr4326; private SpatialReference sr4490; + + @Value("${sys.gdal_path}") + private String gdalPath; private final static Log log = LogFactory.getLog(RasterService.class); @@ -80,6 +85,38 @@ } /** + * 浣跨敤GDAL鑾峰彇EPSG缂栫爜 + */ + public Integer getEpsgByGdal(String file) { + try { + File f = new File(file); + if (!f.exists() || f.isDirectory()) { + return null; + } + + String cmd = String.format("%s\\gdalsrsinfo.exe \"%s\" -o epsg", gdalPath, file); + String rs = WebHelper.exec2(cmd); + if (StringHelper.isEmpty(rs)) { + return null; + } + + String[] strs = rs.split("\n"); + for (String str : strs) { + if (str.contains("EPSG:")) { + String epsg = str.replace("EPSG:", ""); + + return Integer.parseInt(epsg); + } + } + + return 0; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return null; + } + } + + /** * 鍧愭爣杞崲 */ public Object csTransform(double x, double y, int epsg) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8fb02ba..2ddf761 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -46,11 +46,11 @@ name: prod # JDBC 鍩烘湰閰嶇疆 ¤tSchema=public #url: jdbc:postgresql://106.120.22.35:5433/langfang?useAffectedRows=true - #url: jdbc:postgresql://192.168.20.205:5433/langfang?useAffectedRows=true - url: jdbc:postgresql://127.0.0.1:5433/langfang?useAffectedRows=true + url: jdbc:postgresql://192.168.20.205:5433/langfang?useAffectedRows=true + #url: jdbc:postgresql://127.0.0.1:5433/langfang?useAffectedRows=true username: postgres - #password: Postgres!_14_Lf - password: postgres + password: Postgres!_14_Lf + #password: postgres driver-class-name: org.postgresql.Driver platform: POSTGRESQL type: com.alibaba.druid.pool.DruidDataSource diff --git "a/\350\257\264\346\230\216.txt" "b/\350\257\264\346\230\216.txt" index 315e1b7..a4311eb 100644 --- "a/\350\257\264\346\230\216.txt" +++ "b/\350\257\264\346\230\216.txt" @@ -1,3 +1,9 @@ +------------------------------------------------------------------------------- 涓撻鍥� +case "A0": return 1200; +case "A1": return 850; +case "A2": return 600; +case "A3": return 424; +case "A4": return 300; ------------------------------------------------------------------------------- 浼樺寲缃戠粶 gpedit.msc 璁$畻鏈篭绠$悊妯℃澘\缃戠粶\Qos鏁版嵁鍖呰鍒掔▼搴廫闄愬埗鍙繚鐣欏甫瀹� -> 鍚敤锛�0% -- Gitblit v1.9.3