From 3f50254c68361dfc54f0f6e07df7a0b44ef203c8 Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期三, 12 二月 2025 13:55:41 +0800 Subject: [PATCH] [add]根据坐标提取管线管点 --- src/main/java/com/se/simu/utils/EntityLibraryUtils.java | 79 ++++++++++++ src/main/resources/layerQueryDetailParams.json | 2 src/main/java/com/se/simu/controller/SimuController.java | 235 ++++++++++++++++++++++++++++----------- src/main/resources/layerQueryPointParams.json | 1 4 files changed, 247 insertions(+), 70 deletions(-) diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java index 891f0b1..31b3435 100644 --- a/src/main/java/com/se/simu/controller/SimuController.java +++ b/src/main/java/com/se/simu/controller/SimuController.java @@ -416,25 +416,53 @@ return success(filePatn + "raingage.sem"); } - @ApiOperation(value = "绠$偣杞琧ityjson") - @GetMapping(value = "/pointToCityJson", produces = "application/json; charset=UTF-8") - public R<String> pointToCityJson(@RequestParam("shpPath") String shpPath) throws Exception { + @ApiOperation(value = "绠$偣杞瑂em") + @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 = "绠$偣杞琧ityjson") +// @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 = "绠$嚎杞琧ityjson") + @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 = "绠$嚎杞琧ityjson") -// @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 = "鍦板舰杞琧ityjson") @GetMapping(value = "/terrainToCityJson", produces = "application/json; charset=UTF-8") diff --git a/src/main/java/com/se/simu/utils/EntityLibraryUtils.java b/src/main/java/com/se/simu/utils/EntityLibraryUtils.java index 2b73b52..0bbeb30 100644 --- a/src/main/java/com/se/simu/utils/EntityLibraryUtils.java +++ b/src/main/java/com/se/simu/utils/EntityLibraryUtils.java @@ -45,6 +45,50 @@ return null; } + public static String getLoginPublicKey() { + JSONObject jsonObject = new JSONObject(); + String json = jsonObject.toJSONString(); + // 鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity<String> request = new HttpEntity<>(json, headers); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/account-service/security/publickey", request, String.class); + if (responseEntity.getStatusCode().is2xxSuccessful()) { + String body = responseEntity.getBody(); + return JSONObject.parseObject(body).getString("data"); + } + return null; + } + + /** + * 鐧诲綍瀹炰綋搴� + * + * @return 鍙傛暟鍐呰鎯� + */ + public static String login() throws Exception { + String publicKey = getLoginPublicKey(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("userid", "admin"); + jsonObject.put("password", encrypt("admin", publicKey)); + RestTemplate restTemplate = new RestTemplate(); + // 鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰 + StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8); + converter.setSupportedMediaTypes(MediaType.parseMediaTypes("text/plain;charset=UTF-8")); + restTemplate.getMessageConverters().add(0, converter); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.add("Access-Control-Allow-Origin", "*"); + String json = jsonObject.toJSONString(); + HttpEntity<String> request = new HttpEntity<>(json, headers); + ResponseEntity<String> responseEntity = restTemplate.exchange("http://106.120.22.26:8024/account-service/security/login", HttpMethod.POST, request, String.class); + if (responseEntity.getStatusCode().is2xxSuccessful()) { + String body = responseEntity.getBody(); + return JSONObject.parseObject(body).getJSONObject("data").getString("token"); + } + return null; + } + public static String encrypt(String str, String publicKey) throws Exception { //Base64缂栫爜鐨勫叕閽� byte[] decoded = Base64.decodeBase64(publicKey); @@ -90,7 +134,36 @@ * @param dtos 鍥涗釜鍧愭爣鐐� * @return 妗嗛�夊唴閮ㄧ绾� */ - public static JSONArray getPointInfo(List<GridDto> dtos) { + public static JSONArray getPointInfo(List<GridDto> dtos, String token) { + JSONArray paramArray = new JSONArray(); + for (GridDto dto : dtos + ) { + paramArray.add(ProjectionToGeographicUtil.get4548Point(dto.getLon(), dto.getLat())); + } + paramArray.add(ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat())); + JSONObject jsonObject = getModule("layerQueryPointParams.json"); + jsonObject.getJSONObject("geometry").getJSONArray("coordinates").add(paramArray); + jsonObject.put("token", token); + RestTemplate restTemplate = new RestTemplate(); + // 鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + String json = jsonObject.toJSONString(); + HttpEntity<String> request = new HttpEntity<>(json, headers); + ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://106.120.22.26:8024/geo-service/entitydbdata/layer/query", request, String.class); + if (responseEntity.getStatusCode().is2xxSuccessful()) { + String body = responseEntity.getBody(); + return JSONObject.parseObject(body).getJSONObject("data").getJSONArray("items"); + } + return null; + } + /** + * 绠$嚎鍒楄〃 + * + * @param dtos 鍥涗釜鍧愭爣鐐� + * @return 妗嗛�夊唴閮ㄧ绾� + */ + public static JSONArray getLineInfo(List<GridDto> dtos, String token) { JSONArray paramArray = new JSONArray(); for (GridDto dto : dtos ) { @@ -99,6 +172,7 @@ paramArray.add(ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat())); JSONObject jsonObject = getModule("layerQueryParams.json"); jsonObject.getJSONObject("geometry").getJSONArray("coordinates").add(paramArray); + jsonObject.put("token", token); RestTemplate restTemplate = new RestTemplate(); // 鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰 HttpHeaders headers = new HttpHeaders(); @@ -119,9 +193,10 @@ * @param param 鏌ヨ鍙傛暟 * @return 鍙傛暟鍐呰鎯� */ - public static JSONArray getPointDetail(String param) { + public static JSONArray getLineDetail(String param,String token) { JSONObject jsonObject = getModule("layerQueryDetailParams.json"); jsonObject.put("where", param); + jsonObject.put("token",token); RestTemplate restTemplate = new RestTemplate(); // 鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰 StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8); diff --git a/src/main/resources/layerQueryDetailParams.json b/src/main/resources/layerQueryDetailParams.json index 4143cd3..0c76911 100644 --- a/src/main/resources/layerQueryDetailParams.json +++ b/src/main/resources/layerQueryDetailParams.json @@ -1 +1 @@ -{"dbid":"85257774fdb64e5f99f6778696cad02a","querytype":"polyline","layerid":"1e677d48-8dff-4975-b9a0-c16500193629","where":"","containCount":false,"token":"54bc48d424ee49c6b07c1c6f91a583ea"} \ No newline at end of file +{"dbid":"85257774fdb64e5f99f6778696cad02a","querytype":"polyline","count":100000,"layerid":"1e677d48-8dff-4975-b9a0-c16500193629","where":"","containCount":false,"token":"54bc48d424ee49c6b07c1c6f91a583ea"} \ No newline at end of file diff --git a/src/main/resources/layerQueryPointParams.json b/src/main/resources/layerQueryPointParams.json new file mode 100644 index 0000000..b621423 --- /dev/null +++ b/src/main/resources/layerQueryPointParams.json @@ -0,0 +1 @@ +{"dbid":"85257774fdb64e5f99f6778696cad02a","layerid":"ede07887-7b58-47b4-ae96-b8a6a30e9c11","token":"54bc48d424ee49c6b07c1c6f91a583ea","start":1,"count":100000,"like":null,"outfields":"seid,enti_uuid","containCount":true,"geometry":{"type":"Polygon","coordinates":[]}} \ No newline at end of file -- Gitblit v1.9.3