From ab701c1b65894f29459f180573c3951c6c17e939 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 15 十一月 2024 21:19:15 +0800 Subject: [PATCH] 1 --- src/main/java/com/se/simu/service/ResultService.java | 25 ++++++++++++++++--------- 1 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/se/simu/service/ResultService.java b/src/main/java/com/se/simu/service/ResultService.java index 26e5da8..4741a97 100644 --- a/src/main/java/com/se/simu/service/ResultService.java +++ b/src/main/java/com/se/simu/service/ResultService.java @@ -81,8 +81,8 @@ if (null == ds || 0 == ds.getRasterCount()) return; setTerrainInfo(ds, layer); - setWaterInfo(dto, layer); createTerrainPng(dto, ds, layer); + setWaterInfo(dto, layer); } finally { if (null != ds) ds.delete(); } @@ -101,7 +101,7 @@ double[] mm = new double[2]; band.ComputeRasterMinMax(mm, 0); //layer.getTerrain().setHeight(getMinVal(mm[0], 1000), getMaxVal(mm[1], 1000)); - layer.setExtension(new ExtensionDto(minx, miny, maxx, maxy, getMinVal(mm[0] - 1, 1000), getMaxVal(mm[1] + 1, 1000))); + layer.setExtension(new ExtensionDto(minx, miny, maxx, maxy, mm[0], mm[1])); } private double getMinVal(double val, double radix) { @@ -163,6 +163,7 @@ float[] buffer = new float[width * height]; //band.ReadRaster(0, 0, width, height, buffer, width, height, 0, 0); band.ReadRaster(0, 0, width, height, buffer); + layer.getTerrain().getVals().put(width + "_" + height, buffer); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); double differ = layer.getExtension().getMaxHeight() - layer.getExtension().getMinHeight(), minHeight = layer.getExtension().getMinHeight(); @@ -330,8 +331,10 @@ }); //layer.getExtension().setMinHeight(getMinVal(layer.getExtension().getMinHeight() - 1, 1000)); //layer.getExtension().setMaxHeight(getMaxVal(layer.getExtension().getMaxHeight() + 1, 1000)); - layer.getWaters().setMinHeight(getMinVal(layer.getWaters().getMinHeight() - 1, 1000)); - layer.getWaters().setMaxHeight(getMaxVal(layer.getWaters().getMaxHeight() + 1, 1000)); + //layer.getWaters().setMinHeight(getMinVal(layer.getWaters().getMinHeight() - 1, 1000)); + //layer.getWaters().setMaxHeight(getMaxVal(layer.getWaters().getMaxHeight() + 1, 1000)); + layer.getExtension().setMaxHeight(layer.getExtension().getMinHeight() + layer.getWaters().getMaxHeight()); + layer.getExtension().setDiffer(); } private void processWaters(ResultDto dto, List<String> files, LayerDto layer) { @@ -344,7 +347,7 @@ createWaterPng(dto, ds, layer, layer.getWaters().getData().get(i)); copyWaterTif(dto, ds, layer.getWaters().getData().get(i)); - createVectors(dto, ds, layer, layer.getWaters().getData().get(i)); + //createVectors(dto, ds, layer, layer.getWaters().getData().get(i)); } finally { if (null != ds) ds.delete(); } @@ -383,12 +386,15 @@ double[] transform = ds.GetGeoTransform(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); - double differ = layer.getWaters().getMaxHeight() - layer.getWaters().getMinHeight(), minHeight = layer.getWaters().getMinHeight(); + //double differ = layer.getWaters().getMaxHeight() - layer.getWaters().getMinHeight(), minHeight = layer.getWaters().getMinHeight(); + double differ = layer.getExtension().getDiffer(), maxHeight=layer.getExtension().getMaxHeight(), minHeight = layer.getExtension().getMinHeight(); + float[] ts = layer.getTerrain().getVals().get(width + "_" + height); for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { int offset = x + y * width; + float depth = buffer[offset] + ts[offset]; //if (Float.isNaN(buffer[offset]) || buffer[offset] < -999 || buffer[offset] < minHeight) continue; - if (Float.isNaN(buffer[offset]) || buffer[offset] <= 0 || buffer[offset] < minHeight) continue; + if (Float.isNaN(depth) || depth < minHeight) continue; //double X = transform[0] + x * transform[1] + y * transform[2]; //double Y = transform[3] + x * transform[4] + y * transform[5]; @@ -396,10 +402,10 @@ //if (null != building) continue; int r = 0, g, b; - if (buffer[offset] - layer.getWaters().getMaxHeight() > 0) { + if (depth > maxHeight) { g = b = 255; } else { - int val = (int) ((buffer[offset] - minHeight) / differ * 65535); + int val = (int) ((depth - minHeight) / differ * 65535); g = val / 256; b = val % 256; } @@ -695,6 +701,7 @@ private void copeLayerJson(ResultDto dto, LayerDto layer) throws IOException { layer.getWaters().setFiles(null); layer.getTerrain().setEpsg(null); + layer.getExtension().setDiffer(null); String json = JSON.toJSONString(layer); // String json = JSONUtil.toJsonPrettyStr(layer); -- Gitblit v1.9.3