From ca3b7f84548273f424c45659267316ee4f443c58 Mon Sep 17 00:00:00 2001 From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com> Date: 星期五, 14 二月 2025 18:11:16 +0800 Subject: [PATCH] [add]tif裁剪 --- src/main/java/com/se/simu/controller/SimuController.java | 88 ++++++++++++++++++++++++++++++++++++++------ 1 files changed, 76 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java index c1282d6..86f333d 100644 --- a/src/main/java/com/se/simu/controller/SimuController.java +++ b/src/main/java/com/se/simu/controller/SimuController.java @@ -244,10 +244,6 @@ Double minY = jsonObject.getDouble("minX"); Double maxY = jsonObject.getDouble("maxX"); // 3 鍒ゆ柇鑼冨洿鍊兼槸鍚︿负绌� - // vo.setMinx(jsonObject.getDouble("minX")); - // vo.setMaxx(jsonObject.getDouble("maxX")); - // vo.setMiny(jsonObject.getDouble("minY")); - // vo.setMaxy(jsonObject.getDouble("maxY")); vo.setMinx(jsonObject.getDouble("minY")); vo.setMaxx(jsonObject.getDouble("maxY")); vo.setMiny(jsonObject.getDouble("minX")); @@ -340,12 +336,37 @@ return fail("闃叉睕鑼冨洿涓嶈兘涓虹┖", false); } } + List<GridDto> dtos = new ArrayList<>(); + dtos.add(new GridDto( vo.getMiny(),vo.getMinx())); + dtos.add(new GridDto(vo.getMaxy(),vo.getMinx())); + dtos.add(new GridDto(vo.getMaxy(),vo.getMaxx())); + dtos.add(new GridDto(vo.getMiny(),vo.getMaxx())); + createSem(tableName, dtos); // 寮�濮嬫ā鎷熻绠� boolean flag = simuFilesService.createByfiles(vo); return success(flag, flag ? "鎴愬姛" : "澶辫触"); } catch (Exception ex) { return fail(ex, null); } + } + + public R<Boolean> createSem(String tableName, List<GridDto> dtos) throws Exception { + //闄嶉洦鏂囦欢鐢熸垚 + saveZarr(tableName); + String token = EntityLibraryUtils.login(); + //绠$偣鐢熸垚 + pointTosem(dtos,token); + //绠$嚎鐢熸垚 + lineToSem(dtos,token); + //鍦板舰鐢熸垚 + terrainToSem(dtos); + //鑼冨洿鐢熸垚 + gridToCityJson(dtos); + //娌虫祦鐢熸垚 + riverToSem(); + //鍦熷湴鍒╃敤鐢熸垚 + landuseToSem(); + return success(true); } @ApiOperation(value = "tarr鏂囦欢缁勮") @@ -416,12 +437,9 @@ return success(filePatn + "raingage.sem"); } - @ApiOperation(value = "绠$偣杞瑂em") - @PostMapping(value = "/pointTosem", produces = "application/json; charset=UTF-8") - public R<String> pointTosem(@RequestBody List<GridDto> dtos) throws Exception { + public R<String> pointTosem(List<GridDto> dtos,String token) throws Exception { String path = outPath + "\\point\\"; String publicKey = EntityLibraryUtils.getPublicKey(); - String token = EntityLibraryUtils.login(); JSONArray jsonArrayList = EntityLibraryUtils.getPointInfo(dtos, token); JSONObject jsonObject = getModule("pointmodule.json"); for (int s = 0; s < jsonArrayList.size(); s++) { @@ -492,6 +510,7 @@ 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 { @@ -541,12 +560,9 @@ 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 { + public R<String> lineToSem(List<GridDto> dtos,String token) throws Exception { String path = outPath + "\\line\\"; String publicKey = EntityLibraryUtils.getPublicKey(); - String token = EntityLibraryUtils.login(); JSONArray jsonArrayList = EntityLibraryUtils.getLineInfo(dtos, token); if (jsonArrayList.size() == 0) { return fail("璇ュ尯鍩熶笉瀛樺湪绠$嚎锛�"); @@ -697,6 +713,54 @@ return success(filePatn + "link.sem"); } + @ApiOperation(value = "鍦板舰杞瑂em") + @PostMapping(value = "/terrainToSem", produces = "application/json; charset=UTF-8") + public R<String> terrainToSem(@RequestBody List<GridDto> dtos) throws Exception { + long times = System.currentTimeMillis(); + String path = outPath + "\\terrain\\" + times + "\\"; + File dirFile = new File(path + "appearance"); + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + double minx = 180.0; + double maxx = 0.0; + double miny = 180.0; + double maxy = 0.0; + for (GridDto dto : dtos + ) { + if (dto.getLon() > maxx) { + maxx = dto.getLon(); + } + if (dto.getLon() < minx) { + minx = dto.getLon(); + } + if (dto.getLat() > maxy) { + maxy = dto.getLat(); + } + if (dto.getLat() < miny) { + miny = dto.getLat(); + } + } + JSONArray min = ProjectionToGeographicUtil.get4548Point(minx, miny); + JSONArray max = ProjectionToGeographicUtil.get4548Point(maxx, maxy); + String tifPath = path + "terrain.tif"; + TiffClipper.cropTiffByLatLon(config.getTifPath(), tifPath, min.getDouble(0), min.getDouble(1), max.getDouble(0), max.getDouble(1)); + String pngPath = path + "appearance\\terrain.png"; + TiffToRGBUtil.tifToPng(tifPath, pngPath); + JSONObject jsonObject = getModule("terrainmodule.json"); + jsonObject.put("vertices", TiffCoordinateExtractorUtil.getCoordinate(tifPath)); + FileWriter fileWriter = new FileWriter(path + "terrain.json"); + fileWriter.write(jsonObject.toJSONString()); + fileWriter.close(); + 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 = "鍦板舰杞琧ityjson") @GetMapping(value = "/terrainToCityJson", produces = "application/json; charset=UTF-8") public R<String> terrainToCityJson(@RequestParam("tifPath") String tifPath) throws Exception { -- Gitblit v1.9.3