src/main/java/com/moon/server/controller/data/RasterAnalysisController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/moon/server/service/data/RasterAnalysisService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/moon/server/service/data/ShuJianService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/sys/LayerMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 = "点WKT", 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 = "线WKT", 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 = "面WKT", 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); } } } 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); 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); 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: 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>