From 0272ac944a277bc7ed683bab2d1fb13fcfb58869 Mon Sep 17 00:00:00 2001
From: xingjinshuang <xingjs@qq.com>
Date: 星期四, 26 十二月 2024 16:29:44 +0800
Subject: [PATCH] @xingjs@20241226@添加查询管线工具类,修改解决查询站点接口token存在无法获取的情况,解决后可正常获取token,并查询出需要的站点;解析shp文件获取站点范围;新增把降水CSV文件内容解析保存到数据库中

---
 src/main/java/com/se/simu/utils/ShpToolUtils.java |   66 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/se/simu/utils/ShpToolUtils.java b/src/main/java/com/se/simu/utils/ShpToolUtils.java
index ab44469..3cb5b5f 100644
--- a/src/main/java/com/se/simu/utils/ShpToolUtils.java
+++ b/src/main/java/com/se/simu/utils/ShpToolUtils.java
@@ -96,6 +96,72 @@
         return json;
     }
 
+
+    /**
+     * 璇诲彇 shp get local
+     *
+     * @param strVectorFile str 鍚戦噺鏂囦欢
+     * @return {@link JSONObject}
+     */
+    public static JSONArray readShpGetLocal(String strVectorFile) {
+        // 娉ㄥ唽鎵�鏈夌殑椹卞姩
+        ogr.RegisterAll();
+        // 涓轰簡鏀寔涓枃璺緞锛岃娣诲姞涓嬮潰杩欏彞浠g爜
+        gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
+
+        // 璇诲彇鏁版嵁锛岃繖閲屼互ESRI鐨剆hp鏂囦欢涓轰緥
+        String strDriverName = "ESRI Shapefile";
+        org.gdal.ogr.Driver oDriver = ogr.GetDriverByName(strDriverName);
+
+        if (oDriver == null) {
+            System.out.println(strDriverName + " 椹卞姩涓嶅彲鐢紒\n");
+            return null;
+        }
+
+        // 鎵撳紑鏁版嵁婧�
+        DataSource dataSource = oDriver.Open(strVectorFile);
+        if (dataSource == null) {
+            System.out.println("鏃犳硶鎵撳紑 Shapefile 鏂囦欢锛�");
+            return null;
+        }
+
+        Layer layer = dataSource.GetLayer(0);
+
+        // 鑾峰彇鍥惧眰鐨勮寖鍥达紙鍒濇鐨勭煩褰㈣寖鍥达級
+        double[] layerExtent = layer.GetExtent();
+        System.out.println("鍒濆鍥惧眰鑼冨洿锛歮inx:" + layerExtent[0] + ", maxx:" + layerExtent[1] + ", miny:" + layerExtent[2] + ", maxy:" + layerExtent[3]);
+
+        // 鑾峰彇鍥惧眰鐨勭┖闂村弬鑰�
+        SpatialReference layerSpatialRef = layer.GetSpatialRef();
+
+        // 鍒涘缓鐩爣绌洪棿鍙傝�� (EPSG:4326)
+        SpatialReference targetSpatialRef = new SpatialReference();
+        targetSpatialRef.ImportFromEPSG(4326); // EPSG:4326 鏄� WGS84
+
+        // 鍒涘缓鍧愭爣杞崲瀵硅薄
+        CoordinateTransformation coordTransform = CoordinateTransformation.CreateCoordinateTransformation(layerSpatialRef, targetSpatialRef);
+
+        // 閬嶅巻姣忎釜 feature 鑾峰彇鍧愭爣鐐�
+        for (int i = 0; i < layer.GetFeatureCount(); i++) {
+            Feature feature = layer.GetFeature(i);
+            Geometry geometry = feature.GetGeometryRef();
+            // 鍒ゆ柇鍑犱綍绫诲瀷骞跺鐞�
+            if (geometry != null) {
+                if (geometry.GetGeometryType() == ogr.wkbPoint) {
+                    // 鍗曚釜鐐圭殑澶勭悊
+                    processPointGeometry(geometry, coordTransform);
+                } else if (geometry.GetGeometryType() == ogr.wkbMultiPoint) {
+                    // 澶氫釜鐐圭殑澶勭悊
+                    System.out.println("geometry = " + geometry);
+                    //processMultiPointGeometry(geometry, coordTransform);
+                }
+            }
+        }
+        // 鎵撳嵃杞崲鍚庣殑鐭╁舰鑼冨洿锛堢粡绾害锛�
+        System.out.println("鎵�鏈夌偣鐨勭粡绾害鐭╁舰鑼冨洿锛歮inX = " + minX + ", maxX = " + maxX + ", minY = " + minY + ", maxY = " + maxY);
+        return coordinatesArray;
+    }
+
     // 澶勭悊鍗曚釜鐐圭殑鍑犱綍浣�
     private static void processPointGeometry(Geometry geometry, CoordinateTransformation coordTransform) {
         double x = geometry.GetX();

--
Gitblit v1.9.3