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