From ed8c7a5effd0d423ce1118b680ecdca6fe732609 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 02 七月 2025 16:43:13 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.11.205:9000/r/P2022036_Service --- src/main/java/com/lf/server/controller/data/WmtsController.java | 118 ++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 68 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/lf/server/controller/data/WmtsController.java b/src/main/java/com/lf/server/controller/data/WmtsController.java index 2392763..4abbf2d 100644 --- a/src/main/java/com/lf/server/controller/data/WmtsController.java +++ b/src/main/java/com/lf/server/controller/data/WmtsController.java @@ -3,6 +3,7 @@ import com.lf.server.annotation.SysLog; import com.lf.server.config.PropertiesConfig; import com.lf.server.helper.StringHelper; +import com.lf.server.helper.WebHelper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -20,8 +21,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; @@ -64,7 +63,7 @@ stream.read(data); stream.close(); - String url = req.getRequestURL().toString().replace("WMTSCapabilities.xml", "tile"); + String url = req.getRequestURL().toString().replace("WMTSCapabilities.xml", "tile?"); String result = new String(data, StandardCharsets.UTF_8); result = result.replace("{url}", url); @@ -83,66 +82,85 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "浠ょ墝", required = true, dataType = "String", defaultValue = "token", paramType = "path"), @ApiImplicitParam(name = "layer", value = "鍥惧眰绫诲瀷", required = true, dataType = "String", defaultValue = "img"), - @ApiImplicitParam(name = "z", value = "灞傜骇", required = true, dataType = "Integer"), - @ApiImplicitParam(name = "x", value = "琛屽彿", required = true, dataType = "Integer"), - @ApiImplicitParam(name = "y", value = "鍒楀彿", required = true, dataType = "Integer") + @ApiImplicitParam(name = "tilematrix", value = "灞傜骇", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "tilerow", value = "琛屽彿", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "tilecol", value = "鍒楀彿", required = true, dataType = "Integer") }) @GetMapping("select/{token}/tile") - public void selectWmtsTile(@RequestParam("LAYER") String layer, @RequestParam("TILEMATRIX") Integer z, @RequestParam("TILEROW") Integer x, - @RequestParam("TILECOL") Integer y, @PathVariable(name = "token") String token, - HttpServletRequest req, HttpServletResponse res) { + public void selectWmtsTile(@PathVariable(name = "token") String token, HttpServletRequest req, HttpServletResponse res) { try { - // ServletServerHttpRequest ssRequest = new ServletServerHttpRequest(request) - if (StringHelper.isEmpty(layer) || null == z || null == x || null == y) { + String layer = WebHelper.getReqParamVal(req, "layer"); + String matrix = WebHelper.getReqParamVal(req, "tilematrix"); + String row = WebHelper.getReqParamVal(req, "tilerow"); + String col = WebHelper.getReqParamVal(req, "tilecol"); + if (StringHelper.isEmpty(layer) || StringHelper.isEmpty(matrix) || StringHelper.isEmpty(layer) || StringHelper.isEmpty(row) || StringHelper.isEmpty(col)) { return; } - ServletServerHttpRequest ssReq = new ServletServerHttpRequest(req); - ServletServerHttpResponse ssRes = new ServletServerHttpResponse(res); + int z = Integer.parseInt(matrix); + int x = Integer.parseInt(row); + int y = Integer.parseInt(col); - // 妫�鏌ョ紦瀛樻槸鍚﹁繃鏈� - if (checkIfNotModify(ssReq, ssRes)) { - // 璁剧疆缂撳瓨澶� - setBrowerCache(ssRes); - return; - } - - // 璁剧疆杩斿洖鍥剧墖绫诲瀷 - res.setContentType("image/png"); - // 璁剧疆缂撳瓨鍙傛暟 - setBrowerCache(ssRes); - // 閫氳繃response瀵硅薄锛岃幏鍙栧埌杈撳嚭娴� - ServletOutputStream outputStream = res.getOutputStream(); - // 瀹氫箟杈撳叆娴侊紝閫氳繃杈撳叆娴佽鍙栨枃浠跺唴瀹� - FileInputStream fileInputStream; - - // y = (int) Math.pow(2, z) - y - 1; - String path = config.getTilePath() + File.separator + layer + File.separator + z + File.separator + y + File.separator + x + ".png"; - - File file = new File(path); - if (!file.exists() || file.isDirectory()) { - ClassPathResource resource = new ClassPathResource("wmts/nofound.png"); - fileInputStream = new FileInputStream(resource.getFile()); - } else { - System.out.println(path); - fileInputStream = new FileInputStream(file); - } - - int len = 0; - byte[] bytes = new byte[1024]; - while ((len = fileInputStream.read(bytes)) != -1) { - outputStream.write(bytes, 0, len); - outputStream.flush(); - } - - outputStream.close(); - fileInputStream.close(); + getWmtsTile(layer, z, x, y, req, res); } catch (Exception ex) { log.error(ex.getMessage(), ex); } } /** + * 鑾峰彇WMTS鐡︾墖 + */ + private void getWmtsTile(String layer, int z, int x, int y, HttpServletRequest req, HttpServletResponse res) throws Exception { + ServletServerHttpRequest ssReq = new ServletServerHttpRequest(req); + ServletServerHttpResponse ssRes = new ServletServerHttpResponse(res); + + // 妫�鏌ョ紦瀛樻槸鍚﹁繃鏈� + if (checkIfNotModify(ssReq, ssRes)) { + // 璁剧疆缂撳瓨澶� + setBrowerCache(ssRes); + return; + } + + // 璁剧疆缂撳瓨鍙傛暟 + setBrowerCache(ssRes); + //res.setContentType("image/png") + + // 閫氳繃response瀵硅薄锛岃幏鍙栧埌杈撳嚭娴� + ServletOutputStream outputStream = res.getOutputStream(); + // 瀹氫箟杈撳叆娴侊紝閫氳繃杈撳叆娴佽鍙栨枃浠跺唴瀹� + FileInputStream fileInputStream; + + // y = (int) Math.pow(2, z) - y - 1; + String path = config.getTilePath() + File.separator + layer + File.separator + z + File.separator + y + File.separator + x + ".png"; + System.out.println(path); + + File file = new File(path); + if (!file.exists() || file.isDirectory()) { + ClassPathResource resource = new ClassPathResource("wmts/nofound.png"); + fileInputStream = new FileInputStream(resource.getFile()); + } else { + System.out.println(path); + fileInputStream = new FileInputStream(file); + } + + int len = 0; + byte[] bytes = new byte[1024]; + while ((len = fileInputStream.read(bytes)) != -1) { + outputStream.write(bytes, 0, len); + outputStream.flush(); + } + //outputStream.close() + fileInputStream.close(); + + // 璁剧疆杩斿洖鍥剧墖绫诲瀷 + ssRes.getHeaders().set("Content-Type", "image/png"); + + OutputStream os = ssRes.getBody(); + os.write(bytes); + os.flush(); + } + + /** * 璁剧疆娴忚鍣ㄧ紦瀛樺弬鏁� */ private void setBrowerCache(ServerHttpResponse res) { -- Gitblit v1.9.3