From c3137476e71b28cb77f52d24b2714cee336fc2f4 Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期一, 10 二月 2025 13:43:40 +0800 Subject: [PATCH] [add]cityjson转sem --- src/main/java/com/se/simu/controller/SimuController.java | 144 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 123 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java index 58bdf74..dd371ea 100644 --- a/src/main/java/com/se/simu/controller/SimuController.java +++ b/src/main/java/com/se/simu/controller/SimuController.java @@ -7,6 +7,7 @@ import com.se.simu.config.PropertiesConfig; import com.se.simu.domain.dto.GeDb; import com.se.simu.domain.dto.GeLayer; +import com.se.simu.domain.dto.GridDto; import com.se.simu.domain.po.DataPo; import com.se.simu.domain.po.SimuPo; import com.se.simu.domain.vo.*; @@ -52,6 +53,9 @@ @Value("${config.outPath}") private String outPath; + + @Value("${config.inPath}") + private String inPath; @Resource @@ -387,7 +391,7 @@ metry.put("type", "MultiPoint"); metry.put("lod", 0); JSONArray boundarie = new JSONArray(); - boundarie.add(jsonObject.getJSONArray("vertices").size()-1); + boundarie.add(jsonObject.getJSONArray("vertices").size() - 1); metry.put("boundaries", boundarie); geometry.add(metry); cityObject.put("geometry", geometry); @@ -400,8 +404,13 @@ FileWriter fileWriter = new FileWriter(path + tableName + "\\闄嶉洦閲�.json"); fileWriter.write(jsonObject.toJSONString()); fileWriter.close(); - SemUtils.cityJsonToSem(path + tableName + "\\闄嶉洦閲�.json",path + tableName + "\\station_rain.sem"); - return success(path + tableName + "\\station_rain.sem"); + String filePatn = inPath + "\\tongzhou\\"; + File file = new File(filePatn); + if (!file.exists()) { + file.mkdirs(); + } + SemUtils.cityJsonToSem(path + tableName + "\\闄嶉洦閲�.json", filePatn + "raingage.sem"); + return success(filePatn + "raingage.sem"); } @ApiOperation(value = "绠$偣杞琧ityjson") @@ -429,7 +438,7 @@ metry.put("type", "MultiPoint"); metry.put("lod", 0); JSONArray boundarie = new JSONArray(); - boundarie.add(jsonObject.getJSONArray("vertices").size()-1); + boundarie.add(jsonObject.getJSONArray("vertices").size() - 1); metry.put("boundaries", boundarie); geometry.add(metry); cityObject.put("geometry", geometry); @@ -444,8 +453,13 @@ FileWriter fileWriter = new FileWriter(pointPath); fileWriter.write(jsonObject.toJSONString()); fileWriter.close(); - SemUtils.cityJsonToSem(pointPath,path + times + "\\point.sem"); - return success(path + times + "\\point.sem"); + 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 = "绠$嚎杞琧ityjson") @@ -469,16 +483,16 @@ 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); + 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 jsonArray = new JSONArray(); jsonArray.add(boundarie); metry.put("boundaries", jsonArray); - JSONArray metryArray=new JSONArray(); + JSONArray metryArray = new JSONArray(); metryArray.add(metry); - cityObject.put("geometry",metryArray); - cityObject.put("attributes",attribute); + cityObject.put("geometry", metryArray); + cityObject.put("attributes", attribute); cityObject.put("attributes", attribute); geometry.add(metry); jsonObject.getJSONObject("CityObjects").put("UUID_" + UUID.randomUUID().toString(), cityObject); @@ -492,28 +506,116 @@ FileWriter fileWriter = new FileWriter(pointPath); fileWriter.write(jsonObject.toJSONString()); fileWriter.close(); - SemUtils.cityJsonToSem(pointPath, path + times + "\\line.sem"); - return success(path + times + "\\line.sem"); + 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") public R<String> terrainToCityJson(@RequestParam("tifPath") String tifPath) throws Exception { long times = System.currentTimeMillis(); - String path = outPath + "\\terrain\\"+times+"\\"; - File dirFile = new File(path+"appearance"); + String path = outPath + "\\terrain\\" + times + "\\"; + File dirFile = new File(path + "appearance"); if (!dirFile.exists()) { dirFile.mkdirs(); } - String pngPath=path+"appearance\\terrain.png"; - TiffToRGBUtil.tifToPng(tifPath,pngPath); + String pngPath = path + "appearance\\terrain.png"; + TiffToRGBUtil.tifToPng(tifPath, pngPath); JSONObject jsonObject = getModule("terrainmodule.json"); - jsonObject.put("vertices",TiffCoordinateExtractorUtil.getCoordinate(tifPath)); + jsonObject.put("vertices", TiffCoordinateExtractorUtil.getCoordinate(tifPath)); FileWriter fileWriter = new FileWriter(path + "terrain.json"); fileWriter.write(jsonObject.toJSONString()); fileWriter.close(); - SemUtils.cityJsonToSem(path + "terrain.json", path + "terrain.sem"); - return success(path + "terrain.sem"); + String filePatn = inPath + "\\tongzhou\\"; + File file = new File(filePatn); + if (!file.exists()) { + file.mkdirs(); + } + SemUtils.cityJsonToSem(path + "terrain.json", filePatn + "terrain.sem"); + return success(filePatn + "terrain.sem"); } + + @ApiOperation(value = "grid杞琧ityjson") + @PostMapping(value = "/gridToCityJson", produces = "application/json; charset=UTF-8") + public R<String> gridToCityJson(@RequestBody List<GridDto> dtos) throws Exception { + long times = System.currentTimeMillis(); + String path = outPath + "\\grid\\" + times + "\\"; + File dirFile = new File(path); + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + JSONObject jsonObject = getModule("grid.json"); + JSONArray array = jsonObject.getJSONArray("vertices"); + for (GridDto dto : dtos + ) { + JSONArray jsonArray = new JSONArray(); + jsonArray.add(dto.getLon()); + jsonArray.add(dto.getLat()); + jsonArray.add(0); + array.add(jsonArray); + } + jsonObject.put("vertices", array); + FileWriter fileWriter = new FileWriter(path + "grid.json"); + fileWriter.write(jsonObject.toJSONString()); + fileWriter.close(); + String filePatn = inPath + "\\tongzhou\\"; + File file = new File(filePatn); + if (!file.exists()) { + file.mkdirs(); + } + SemUtils.cityJsonToSem(path + "grid.json", filePatn + "grid.sem"); + return success(filePatn + "grid.sem"); + } + + @ApiOperation(value = "river杞瑂em") + @GetMapping(value = "/riverToSem", produces = "application/json; charset=UTF-8") + public R<String> riverToSem() throws Exception { + long times = System.currentTimeMillis(); + String path = outPath + "\\river\\" + times + "\\"; + File dirFile = new File(path); + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + JSONObject jsonObject = getModule("river.json"); + FileWriter fileWriter = new FileWriter(path + "river.json"); + fileWriter.write(jsonObject.toJSONString()); + fileWriter.close(); + String filePatn = inPath + "\\tongzhou\\"; + File file = new File(filePatn); + if (!file.exists()) { + file.mkdirs(); + } + SemUtils.cityJsonToSem(path + "river.json", filePatn + "river.sem"); + return success(filePatn + "river.sem"); + } + + @ApiOperation(value = "landuse杞瑂em") + @GetMapping(value = "/landuseToSem", produces = "application/json; charset=UTF-8") + public R<String> landuseToSem() throws Exception { + long times = System.currentTimeMillis(); + String path = outPath + "\\landuse\\" + times + "\\"; + File dirFile = new File(path); + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + JSONObject jsonObject = getModule("landuse.json"); + FileWriter fileWriter = new FileWriter(path + "landuse.json"); + fileWriter.write(jsonObject.toJSONString()); + fileWriter.close(); + String filePatn = inPath + "\\tongzhou\\"; + File file = new File(filePatn); + if (!file.exists()) { + file.mkdirs(); + } + SemUtils.cityJsonToSem(path + "landuse.json", filePatn + "landuse.sem"); + return success(filePatn + "landuse.sem"); + } + public JSONObject getModule(String moduleName) { JSONObject jsonObject = new JSONObject(); try { -- Gitblit v1.9.3