From 95a8d926d951c8c00b0f60f64bd48ff970e9960c Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期二, 14 一月 2025 11:10:16 +0800 Subject: [PATCH] [add]管线json --- src/main/java/com/se/simu/utils/ProjectionToGeographicUtil.java | 32 ++++++++++++++++++++++++++++++++ src/main/java/com/se/simu/utils/ShpReadUtils.java | 4 ++-- pom.xml | 5 +++++ src/main/java/com/se/simu/controller/SimuController.java | 7 +------ 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 455621b..bf667d9 100644 --- a/pom.xml +++ b/pom.xml @@ -298,6 +298,11 @@ <artifactId>jts</artifactId> <version>1.13</version> </dependency> + <dependency> + <groupId>org.osgeo</groupId> + <artifactId>proj4j</artifactId> + <version>0.1.0</version> + </dependency> </dependencies> <repositories> <repository> diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java index 5879100..8aab3c3 100644 --- a/src/main/java/com/se/simu/controller/SimuController.java +++ b/src/main/java/com/se/simu/controller/SimuController.java @@ -467,12 +467,7 @@ JSONArray array = JSONObject.parseObject(map.get("the_geom").toString()).getJSONArray("coordinates"); for (int i = 0; i < array.size(); i++) { JSONObject object = JSONObject.parseObject(array.get(i).toString()); - JSONArray vertice = new JSONArray(); - //todo 鏈潵淇敼鍧愭爣绯� - vertice.add(object.get("x")); - vertice.add(object.get("y")); - vertice.add(0.0); - jsonObject.getJSONArray("vertices").add(vertice); + jsonObject.getJSONArray("vertices").add(ProjectionToGeographicUtil.getPoint(Double.valueOf(object.get("x").toString()),Double.valueOf(object.get("y").toString()))); boundarie.add(jsonObject.getJSONArray("vertices").size()); } metry.put("boundaries", boundarie); diff --git a/src/main/java/com/se/simu/utils/ProjectionToGeographicUtil.java b/src/main/java/com/se/simu/utils/ProjectionToGeographicUtil.java new file mode 100644 index 0000000..de0de6e --- /dev/null +++ b/src/main/java/com/se/simu/utils/ProjectionToGeographicUtil.java @@ -0,0 +1,32 @@ +package com.se.simu.utils; + +import com.alibaba.fastjson.JSONArray; +import org.osgeo.proj4j.BasicCoordinateTransform; +import org.osgeo.proj4j.CRSFactory; +import org.osgeo.proj4j.CoordinateReferenceSystem; +import org.osgeo.proj4j.ProjCoordinate; + +public class ProjectionToGeographicUtil { + public static JSONArray getPoint(Double x,Double y) { + // 鍒涘缓 CRSFactory 瀵硅薄 + CRSFactory crsFactory = new CRSFactory(); + // 瀹氫箟鎶曞奖鍧愭爣绯荤粺锛岃繖閲屼互 UTM 鎶曞奖涓轰緥锛寊one 33N + CoordinateReferenceSystem sourceCRS = crsFactory.createFromName("EPSG:4548"); + // 瀹氫箟鍦扮悊鍧愭爣绯荤粺锛岃繖閲屼娇鐢� WGS84 + CoordinateReferenceSystem targetCRS = crsFactory.createFromName("EPSG:4326"); + // 鍒涘缓鍧愭爣杞崲瀵硅薄 + BasicCoordinateTransform transform = new BasicCoordinateTransform(sourceCRS, targetCRS); + //lon=116.683795 lat=39.90849042 + // 杈撳叆鎶曞奖鍧愭爣锛屼互 UTM 鎶曞奖鍧愭爣涓轰緥锛屽崟浣嶆槸绫� + ProjCoordinate sourceCoord = new ProjCoordinate(x, y); + ProjCoordinate targetCoord = new ProjCoordinate(); + + // 鎵ц鍧愭爣杞崲 + transform.transform(sourceCoord, targetCoord); + JSONArray vertice = new JSONArray(); + vertice.add(targetCoord.x); + vertice.add(targetCoord.y); + vertice.add(0.0); + return vertice; + } +} diff --git a/src/main/java/com/se/simu/utils/ShpReadUtils.java b/src/main/java/com/se/simu/utils/ShpReadUtils.java index 137ff83..49f6154 100644 --- a/src/main/java/com/se/simu/utils/ShpReadUtils.java +++ b/src/main/java/com/se/simu/utils/ShpReadUtils.java @@ -24,8 +24,8 @@ public class ShpReadUtils { public static void main(String[] args) throws Exception { - //readPointShp("D:\\鍩庡競鍐呮稘\\sem\\绠$偣\\pipeline-point.shp"); - readPointShp("D:\\鍩庡競鍐呮稘\\sem\\绠$嚎\\pipeline-conduit.shp"); + readPointShp("D:\\鍩庡競鍐呮稘\\sem\\绠$偣\\pipeline-point.shp"); + //readPointShp("D:\\鍩庡競鍐呮稘\\sem\\绠$嚎\\pipeline-conduit.shp"); } static class GeometrySerializer extends JsonSerializer<Geometry> { @Override -- Gitblit v1.9.3