From 636f52fc934cd4fdc61472d786dec14616b2f2fa Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 11 九月 2023 18:02:37 +0800 Subject: [PATCH] 修改栅格分析-1 --- src/main/java/com/moon/server/service/data/RasterAnalysisService.java | 30 +++++++++------ src/main/resources/mapper/sys/LayerMapper.xml | 2 src/main/java/com/moon/server/service/data/ShuJianService.java | 8 +++ src/main/java/com/moon/server/controller/data/RasterAnalysisController.java | 51 ------------------------- src/main/resources/application.yml | 2 + 5 files changed, 28 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java b/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java index 91d3688..d1281b0 100644 --- a/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java +++ b/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java @@ -107,55 +107,4 @@ return fail(ex, null); } } - - @SysLog() - @ApiOperation(value = "涓嬭浇鐐瑰垎鏋�") - @ApiImplicitParams({ - @ApiImplicitParam(name = "wkt", value = "鐐筗KT", dataType = "String", example = "") - }) - @GetMapping(value = "/downloadByPoint") - public void downloadByPoint(String wkt, HttpServletResponse res) { - try { - // ... - - String filePath = "鐢熸垚鏂囦欢鐨勮矾寰�"; - WebHelper.download(filePath, "鏂囦欢鍚�", res); - } catch (Exception ex) { - log.error(ex.getMessage(), ex); - } - } - - @SysLog() - @ApiOperation(value = "涓嬭浇绾垮垎鏋�") - @ApiImplicitParams({ - @ApiImplicitParam(name = "wkt", value = "绾縒KT", dataType = "String", example = "") - }) - @GetMapping(value = "/downloadByPolyline") - public void downloadByPolyline(String wkt, HttpServletResponse res) { - try { - // ... - - String filePath = "鐢熸垚鏂囦欢鐨勮矾寰�"; - WebHelper.download(filePath, "鏂囦欢鍚�", res); - } catch (Exception ex) { - log.error(ex.getMessage(), ex); - } - } - - @SysLog() - @ApiOperation(value = "涓嬭浇闈㈠垎鏋�") - @ApiImplicitParams({ - @ApiImplicitParam(name = "wkt", value = "闈KT", dataType = "String", example = "") - }) - @GetMapping(value = "/downloadByPolygon") - public void downloadByPolygon(String wkt, HttpServletResponse res) { - try { - // ... - - String filePath = "鐢熸垚鏂囦欢鐨勮矾寰�"; - WebHelper.download(filePath, "鏂囦欢鍚�", res); - } catch (Exception ex) { - log.error(ex.getMessage(), ex); - } - } } diff --git a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java index ae472e7..d443f94 100644 --- a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java +++ b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java @@ -133,20 +133,23 @@ double[] transform = ds.GetGeoTransform(); // double rotationX = transform[2]; double rotationY = transform[4] double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = transform[5]; + double[] env = new double[4]; + polyline.GetEnvelope(env); - double[] bounds = new double[4]; - polyline.GetEnvelope(bounds); - double startX = bounds[0], endX = bounds[1], startY = bounds[2], endY = bounds[3]; + int xMinPixel = (int) Math.floor((env[0] - minX) / pixelWidth); + int yMinPixel = (int) Math.floor((maxY - env[3]) / Math.abs(pixelHeight)); + int xMaxPixel = (int) Math.floor((env[1] - minX) / pixelWidth); + int yMaxPixel = (int) Math.floor((maxY - env[2]) / Math.abs(pixelHeight)); int bandCount = ds.getRasterCount(); - int xStartPixel = (int) Math.floor((startX - minX) / pixelWidth); - int yStartPixel = (int) Math.floor((maxY - startY) / Math.abs(pixelHeight)); - int xEndPixel = (int) Math.floor((endX - minX) / pixelWidth); - int yEndPixel = (int) Math.floor((maxY - endY) / Math.abs(pixelHeight)); + int xMin = Math.min(xMinPixel, xMaxPixel); + int xMax = Math.max(xMinPixel, xMaxPixel); + int yMin = Math.min(yMinPixel, yMaxPixel); + int yMax = Math.max(yMinPixel, yMaxPixel); List<Double> list = new ArrayList<>(); - for (int y = Math.min(yStartPixel, yEndPixel); y <= Math.max(yStartPixel, yEndPixel); y++) { - for (int x = Math.min(xStartPixel, xEndPixel); x <= Math.max(xStartPixel, xEndPixel); x++) { + for (int y = yMin; y <= yMax; y++) { + for (int x = xMin; x <= xMax; x++) { Geometry point = new Geometry(ogr.wkbPoint); point.AddPoint(minX + pixelWidth * x, maxY - pixelHeight * y); if (polyline.Contains(point)) { @@ -173,9 +176,9 @@ polygon.GetEnvelope(env); int xMinPixel = (int) Math.floor((env[0] - minX) / pixelWidth); - int yMinPixel = (int) Math.floor((maxY - env[2]) / Math.abs(pixelHeight)); + int yMinPixel = (int) Math.floor((maxY - env[3]) / Math.abs(pixelHeight)); int xMaxPixel = (int) Math.floor((env[1] - minX) / pixelWidth); - int yMaxPixel = (int) Math.floor((maxY - env[3]) / Math.abs(pixelHeight)); + int yMaxPixel = (int) Math.floor((maxY - env[2]) / Math.abs(pixelHeight)); int bandCount = ds.getRasterCount(); int geoWidth = Math.abs(xMaxPixel - xMinPixel); @@ -225,8 +228,11 @@ * 澶勭悊缁撴灉 */ private void processResult(List<Double> rs, AnalysisResultEntity entity) { - double avg = rs.stream().mapToDouble(Double::valueOf).average().getAsDouble(); + if (null == rs || rs.isEmpty()) { + return; + } + double avg = rs.stream().mapToDouble(Double::valueOf).average().getAsDouble(); entity.setMin(Collections.min(rs)); entity.setMax(Collections.max(rs)); entity.setAvg(avg); diff --git a/src/main/java/com/moon/server/service/data/ShuJianService.java b/src/main/java/com/moon/server/service/data/ShuJianService.java index e56fec5..d4021c5 100644 --- a/src/main/java/com/moon/server/service/data/ShuJianService.java +++ b/src/main/java/com/moon/server/service/data/ShuJianService.java @@ -45,6 +45,12 @@ @Value("${shujian.path}") String sjPath; + @Value("${shujian.domName}") + String domName; + + @Value("${shujian.demName}") + String demName; + @Resource ResService resService; @@ -319,7 +325,7 @@ * 鍒涘缓鍥惧眰 */ private LayerEntity createLayerEntity(ResEntity resEntity, Integer category) { - Integer pid = layerService.selectIdByName(StaticData.I1 == resEntity.getData() ? "DOM" : "DEM"); + Integer pid = layerService.selectIdByName(StaticData.I1 == resEntity.getData() ? domName : demName); Integer orderNum = layerService.selectMaxOrderNumByPid(pid); LayerEntity layer = layerService.selectById(pid); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 570d4fe..e570f4e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -124,6 +124,8 @@ url1: http://172.16.2.10:50001 url5: http://172.16.2.10:50005 path: share/YQData/upload/ + domName: 鑷姩鍙戝竷褰卞儚鍥惧眰缁� + demName: 鑷姩鍙戝竷楂樼▼鍥惧眰缁� # 绯荤粺閰嶇疆 sys: diff --git a/src/main/resources/mapper/sys/LayerMapper.xml b/src/main/resources/mapper/sys/LayerMapper.xml index 3fa6425..a80aafc 100644 --- a/src/main/resources/mapper/sys/LayerMapper.xml +++ b/src/main/resources/mapper/sys/LayerMapper.xml @@ -72,7 +72,7 @@ select id from lf.sys_dir where name = #{name}; </select> - <select id="selectOrderNumByPid" resultType="java.lang.Integer"> + <select id="selectMaxOrderNumByPid" resultType="java.lang.Integer"> select coalesce(max(order_num), 0) + 1 from lf.sys_layer where pid = #{pid}; </select> -- Gitblit v1.9.3