张洋洋
2025-01-14 95a8d926d951c8c00b0f60f64bd48ff970e9960c
[add]管线json
已添加1个文件
已修改3个文件
48 ■■■■ 文件已修改
pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/controller/SimuController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/utils/ProjectionToGeographicUtil.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/utils/ShpReadUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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);
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 æŠ•影为例,zone 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;
    }
}
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