张洋洋
2025-02-12 3f50254c68361dfc54f0f6e07df7a0b44ef203c8
src/main/java/com/se/simu/controller/SimuController.java
@@ -416,25 +416,53 @@
        return success(filePatn + "raingage.sem");
    }
    @ApiOperation(value = "管点转cityjson")
    @GetMapping(value = "/pointToCityJson", produces = "application/json; charset=UTF-8")
    public R<String> pointToCityJson(@RequestParam("shpPath") String shpPath) throws Exception {
    @ApiOperation(value = "管点转sem")
    @PostMapping(value = "/pointTosem", produces = "application/json; charset=UTF-8")
    public R<String> pointTosem(@RequestBody List<GridDto> dtos) throws Exception {
        String path = outPath + "\\point\\";
        List<Map<String, Object>> list = ShpReadUtils.readPointShp(shpPath);
        String publicKey = EntityLibraryUtils.getPublicKey();
        String token = EntityLibraryUtils.login();
        JSONArray jsonArrayList = EntityLibraryUtils.getPointInfo(dtos, token);
        JSONObject jsonObject = getModule("pointmodule.json");
        for (Map<String, Object> map : list
        ) {
        for (int s = 0; s < jsonArrayList.size(); s++) {
            JSONObject pointObject = jsonArrayList.getJSONObject(s);
            //拼装坐标
            JSONArray vertice = new JSONArray();
            vertice.add(map.get("lon"));
            vertice.add(map.get("lat"));
            vertice.add(Double.valueOf(pointObject.getString("lon")));
            vertice.add(Double.valueOf(pointObject.getString("lat")));
            vertice.add(0.0);
            jsonObject.getJSONArray("vertices").add(vertice);
            //拼装基础信息
            JSONObject cityObject = new JSONObject();
            cityObject.put("type", "+PipePoint");
            JSONObject attribute = new JSONObject();
            attribute.put("name", map.get("fsw"));
            attribute.put("维护时间", pointObject.get("operatetime"));
            attribute.put("维护人", pointObject.get("operator"));
            attribute.put("唯一编码", pointObject.get("seid"));
            attribute.put("ID", pointObject.get("id"));
            attribute.put("enti_uuid", pointObject.get("enti_uuid"));
            attribute.put("标识码", pointObject.get("bsm"));
            attribute.put("管线种类", pointObject.get("gxzl"));
            attribute.put("地面高程", pointObject.get("dmgc"));
            attribute.put("特征", pointObject.get("tz"));
            attribute.put("附属物", pointObject.get("fsw"));
            attribute.put("建筑物", pointObject.get("jzw"));
            attribute.put("井底高程", pointObject.get("jdgc"));
            attribute.put("井底埋深", pointObject.get("jdms"));
            attribute.put("井脖埋深", pointObject.get("jbms"));
            attribute.put("井盖形状", pointObject.get("jgxz"));
            attribute.put("井盖尺寸", pointObject.get("jgcc"));
            attribute.put("井盖材质", pointObject.get("jgcz"));
            attribute.put("井盖状态", pointObject.get("jgzt"));
            attribute.put("井脖材质", pointObject.get("jbcz"));
            attribute.put("井脖尺寸", pointObject.get("jbcc"));
            attribute.put("井材质", pointObject.get("jcz"));
            attribute.put("井尺寸", pointObject.get("jcc"));
            attribute.put("使用状况", pointObject.get("syzk"));
            attribute.put("lon", Double.valueOf(pointObject.getString("lon")));
            attribute.put("lat", Double.valueOf(pointObject.getString("lat")));
            attribute.put("atti", pointObject.get("atti"));
            attribute.put("雨水集结点", pointObject.get("ysjjd"));
            cityObject.put("attributes", attribute);
            JSONArray geometry = new JSONArray();
            JSONObject metry = new JSONObject();
@@ -464,12 +492,62 @@
        SemUtils.cityJsonToSem(pointPath, filePatn + "node.sem");
        return success(filePatn + "node.sem");
    }
//    @ApiOperation(value = "管点转cityjson")
//    @GetMapping(value = "/pointToCityJson", produces = "application/json; charset=UTF-8")
//    public R<String> pointToCityJson(@RequestParam("shpPath") String shpPath) throws Exception {
//        String path = outPath + "\\point\\";
//        List<Map<String, Object>> list = ShpReadUtils.readPointShp(shpPath);
//        JSONObject jsonObject = getModule("pointmodule.json");
//        for (Map<String, Object> map : list
//        ) {
//            //拼装坐标
//            JSONArray vertice = new JSONArray();
//            vertice.add(map.get("lon"));
//            vertice.add(map.get("lat"));
//            vertice.add(0.0);
//            jsonObject.getJSONArray("vertices").add(vertice);
//            //拼装基础信息
//            JSONObject cityObject = new JSONObject();
//            cityObject.put("type", "+PipePoint");
//            JSONObject attribute = new JSONObject();
//            attribute.put("name", map.get("fsw"));
//            cityObject.put("attributes", attribute);
//            JSONArray geometry = new JSONArray();
//            JSONObject metry = new JSONObject();
//            metry.put("type", "MultiPoint");
//            metry.put("lod", 0);
//            JSONArray boundarie = new JSONArray();
//            boundarie.add(jsonObject.getJSONArray("vertices").size() - 1);
//            metry.put("boundaries", boundarie);
//            geometry.add(metry);
//            cityObject.put("geometry", geometry);
//            jsonObject.getJSONObject("CityObjects").put("UUID_" + UUID.randomUUID().toString(), cityObject);
//        }
//        long times = System.currentTimeMillis();
//        String pointPath = path + times + "\\管点.json";
//        File dirFile = new File(path + times);
//        if (!dirFile.exists()) {
//            dirFile.mkdirs();
//        }
//        FileWriter fileWriter = new FileWriter(pointPath);
//        fileWriter.write(jsonObject.toJSONString());
//        fileWriter.close();
//        String filePatn = inPath + "\\tongzhou\\";
//        File file = new File(filePatn);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//        SemUtils.cityJsonToSem(pointPath, filePatn + "node.sem");
//        return success(filePatn + "node.sem");
//    }
    @ApiOperation(value = "管线sem生成")
    @PostMapping(value = "/lineToSem", produces = "application/json; charset=UTF-8")
    public R<String> lineToSem(@RequestBody List<GridDto> dtos) throws Exception {
        String path = outPath + "\\line\\";
        JSONArray jsonArrayList = EntityLibraryUtils.getPointInfo(dtos);
        String publicKey = EntityLibraryUtils.getPublicKey();
        String token = EntityLibraryUtils.login();
        JSONArray jsonArrayList = EntityLibraryUtils.getLineInfo(dtos, token);
        if (jsonArrayList.size() == 0) {
            return fail("该区域不存在管线!");
        }
@@ -480,7 +558,6 @@
        }
        String sql = stringBuffer.toString();
        sql = sql.substring(0, sql.length() - 1) + ")";
        String publicKey = EntityLibraryUtils.getPublicKey();
        StringBuffer paramBuffer = new StringBuffer("");
        while (!"".equals(sql)) {
            if (sql.length() > 110) {
@@ -492,10 +569,86 @@
                sql = "";
            }
        }
        String src=paramBuffer.toString().substring(0, paramBuffer.length() - 1);
        JSONArray arrayDetail = EntityLibraryUtils.getPointDetail(src);
        //todo 替换mapencodedString
        List<Map<String, Object>> list = new ArrayList<>();
        String src = paramBuffer.toString().substring(0, paramBuffer.length() - 1);
        JSONArray arrayDetail = EntityLibraryUtils.getLineDetail(src, token);
        JSONObject jsonObject = getModule("linemodule.json");
        for (int i = 0; i < arrayDetail.size(); i++) {
            JSONObject detailJSONObject = arrayDetail.getJSONObject(i);
            //拼装基础信息
            JSONObject cityObject = new JSONObject();
            cityObject.put("type", "+PipeLine");
            JSONObject attribute = new JSONObject();
            attribute.put("维护时间", detailJSONObject.getJSONObject("properties").getLong("operatetime"));
            attribute.put("维护人", detailJSONObject.getJSONObject("properties").getString("operator"));
            attribute.put("唯一编码", detailJSONObject.getJSONObject("properties").get("seid"));
            attribute.put("ENTI_UUID", detailJSONObject.getJSONObject("properties").get("enti_uuid"));
            attribute.put("ID", detailJSONObject.getJSONObject("properties").get("id"));
            attribute.put("lon", detailJSONObject.getJSONObject("properties").get("lon"));
            attribute.put("lat", detailJSONObject.getJSONObject("properties").get("lat"));
            attribute.put("atti", detailJSONObject.getJSONObject("properties").get("atti"));
            attribute.put("管线种类", detailJSONObject.getJSONObject("properties").get("gxzl"));
            attribute.put("起点标识码", detailJSONObject.getJSONObject("properties").get("qdbsm"));
            attribute.put("止点标识码", detailJSONObject.getJSONObject("properties").get("zdbsm"));
            attribute.put("起点高程", detailJSONObject.getJSONObject("properties").get("qdgc"));
            attribute.put("起高程类型", detailJSONObject.getJSONObject("properties").get("qgclx"));
            attribute.put("起点埋深", detailJSONObject.getJSONObject("properties").get("qdms"));
            attribute.put("止点高程", detailJSONObject.getJSONObject("properties").get("zdgc"));
            attribute.put("止高程类型", detailJSONObject.getJSONObject("properties").get("zgclx"));
            attribute.put("止点埋深", detailJSONObject.getJSONObject("properties").get("zdms"));
            attribute.put("材质", detailJSONObject.getJSONObject("properties").get("cz"));
            attribute.put("埋设方式", detailJSONObject.getJSONObject("properties").get("msfs"));
            attribute.put("管径1", detailJSONObject.getJSONObject("properties").get("gja"));
            attribute.put("管径2", detailJSONObject.getJSONObject("properties").get("gjb"));
            attribute.put("使用状况", detailJSONObject.getJSONObject("properties").get("syzk"));
            attribute.put("管线段长度", detailJSONObject.getJSONObject("properties").get("gxdcd"));
            attribute.put("groupID", detailJSONObject.getJSONObject("properties").get("groupid"));
            attribute.put("Shape_Length", detailJSONObject.getJSONObject("properties").get("shape_length"));
            attribute.put("标识码", detailJSONObject.getJSONObject("properties").get("bsm"));
            JSONArray geometry = new JSONArray();
            JSONObject metry = new JSONObject();
            metry.put("type", "MultiLineString");
            metry.put("lod", 0);
            JSONArray boundarie = new JSONArray();
            JSONArray array = detailJSONObject.getJSONObject("geometry").getJSONArray("coordinates").getJSONArray(0);
            for (int m = 0; m < array.size(); m++) {
                JSONArray object = array.getJSONArray(m);
                jsonObject.getJSONArray("vertices").add(ProjectionToGeographicUtil.getPoint(object.getDouble(0), object.getDouble(1)));
                boundarie.add(jsonObject.getJSONArray("vertices").size() - 1);
            }
            JSONArray jsonArray = new JSONArray();
            jsonArray.add(boundarie);
            metry.put("boundaries", jsonArray);
            JSONArray metryArray = new JSONArray();
            metryArray.add(metry);
            cityObject.put("geometry", metryArray);
            cityObject.put("attributes", attribute);
            cityObject.put("attributes", attribute);
            geometry.add(metry);
            jsonObject.getJSONObject("CityObjects").put("UUID_" + UUID.randomUUID().toString(), cityObject);
        }
        long times = System.currentTimeMillis();
        String pointPath = path + times + "\\管线.json";
        File dirFile = new File(path + times);
        if (!dirFile.exists()) {
            dirFile.mkdirs();
        }
        FileWriter fileWriter = new FileWriter(pointPath);
        fileWriter.write(jsonObject.toJSONString());
        fileWriter.close();
        String filePatn = inPath + "\\tongzhou\\";
        File file = new File(filePatn);
        if (!file.exists()) {
            file.mkdirs();
        }
        SemUtils.cityJsonToSem(pointPath, filePatn + "link.sem");
        return success(filePatn + "link.sem");
    }
    @ApiOperation(value = "管线转cityjson")
    @GetMapping(value = "/lineToCityJson", produces = "application/json; charset=UTF-8")
    public R<String> lineToCityJson(@RequestParam("shpPath") String shpPath) throws Exception {
        String path = outPath + "\\line\\";
        List<Map<String, Object>> list = ShpReadUtils.readPointShp(shpPath);
        JSONObject jsonObject = getModule("linemodule.json");
        for (Map<String, Object> map : list
        ) {
@@ -543,58 +696,6 @@
        SemUtils.cityJsonToSem(pointPath, filePatn + "link.sem");
        return success(filePatn + "link.sem");
    }
//    @ApiOperation(value = "管线转cityjson")
//    @GetMapping(value = "/lineToCityJson", produces = "application/json; charset=UTF-8")
//    public R<String> lineToCityJson(@RequestParam("shpPath") String shpPath) throws Exception {
//        String path = outPath + "\\line\\";
//        List<Map<String, Object>> list = ShpReadUtils.readPointShp(shpPath);
//        JSONObject jsonObject = getModule("linemodule.json");
//        for (Map<String, Object> map : list
//        ) {
//            //拼装基础信息
//            JSONObject cityObject = new JSONObject();
//            cityObject.put("type", "+PipeLine");
//            JSONObject attribute = new JSONObject();
//            attribute.put("name", map.get("msfs"));
//            JSONArray geometry = new JSONArray();
//            JSONObject metry = new JSONObject();
//            metry.put("type", "MultiLineString");
//            metry.put("lod", 0);
//            JSONArray boundarie = new JSONArray();
//            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());
//                jsonObject.getJSONArray("vertices").add(ProjectionToGeographicUtil.getPoint(Double.valueOf(object.get("x").toString()), Double.valueOf(object.get("y").toString())));
//                boundarie.add(jsonObject.getJSONArray("vertices").size() - 1);
//            }
//            JSONArray jsonArray = new JSONArray();
//            jsonArray.add(boundarie);
//            metry.put("boundaries", jsonArray);
//            JSONArray metryArray = new JSONArray();
//            metryArray.add(metry);
//            cityObject.put("geometry", metryArray);
//            cityObject.put("attributes", attribute);
//            cityObject.put("attributes", attribute);
//            geometry.add(metry);
//            jsonObject.getJSONObject("CityObjects").put("UUID_" + UUID.randomUUID().toString(), cityObject);
//        }
//        long times = System.currentTimeMillis();
//        String pointPath = path + times + "\\管线.json";
//        File dirFile = new File(path + times);
//        if (!dirFile.exists()) {
//            dirFile.mkdirs();
//        }
//        FileWriter fileWriter = new FileWriter(pointPath);
//        fileWriter.write(jsonObject.toJSONString());
//        fileWriter.close();
//        String filePatn = inPath + "\\tongzhou\\";
//        File file = new File(filePatn);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//        SemUtils.cityJsonToSem(pointPath, filePatn+ "link.sem");
//        return success(filePatn + "link.sem");
//    }
    @ApiOperation(value = "地形转cityjson")
    @GetMapping(value = "/terrainToCityJson", produces = "application/json; charset=UTF-8")