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 鍩烘湰閰嶇疆 &currentSchema=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