From 50155d2d6da56ac59a672755a704ed1503ffe3f6 Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期四, 19 六月 2025 10:07:18 +0800 Subject: [PATCH] 修复返回的模拟结果中最大最小水深问题 --- src/main/java/com/se/nsl/service/TestService.java | 49 ++++++++++++++++++++++++++++--------------------- 1 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/se/nsl/service/TestService.java b/src/main/java/com/se/nsl/service/TestService.java index 6364471..a007a9e 100644 --- a/src/main/java/com/se/nsl/service/TestService.java +++ b/src/main/java/com/se/nsl/service/TestService.java @@ -126,22 +126,14 @@ } public void setTerrainInfo(Dataset ds, LayerDto layer) { -// Geometry minPoint = GdalHelper.getMinPoint(ds); -// Geometry maxPoint = GdalHelper.getMaxPoint(ds); -// double minx = ComHelper.getMinVal(minPoint.GetX(0), 10000000); -// double miny = ComHelper.getMinVal(minPoint.GetY(0), 10000000); -// double maxx = ComHelper.getMaxVal(maxPoint.GetX(0) + MAX_X_OFFSET, 10000000); -// double maxy = ComHelper.getMaxVal(maxPoint.GetY(0), 10000000); double minx = Double.MAX_VALUE; double miny = Double.MAX_VALUE; double maxx = Double.MIN_VALUE; double maxy = Double.MIN_VALUE; - //layer.setExtension(new ExtensionDto(minx, miny, maxx, maxy, Double.MAX_VALUE, Double.MIN_VALUE)); Band band = ds.GetRasterBand(1); 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, mm[0], mm[1])); } @@ -263,13 +255,15 @@ } public void processWaters(ResultDto dto, List<String> files, LayerDto layer) { + List<Double> waterDepths = new ArrayList<>(); for (int i = 0, c = files.size(); i < c; i++) { Dataset ds = null; try { ds = gdal.Open(files.get(i), gdalconstConstants.GA_ReadOnly); if (null == ds || 0 == ds.getRasterCount()) return; if (null == ds.GetSpatialRef()) ds.SetSpatialRef(dto.getSpatialReference()); - + waterDepths.add(layer.getWaters().getMinHeight()); + waterDepths.add(layer.getWaters().getMaxHeight()); createWaterPng(dto, ds, layer, layer.getWaters().getData().get(i)); //if (config.getCopyTif()) copyWaterTif(dto, ds, layer.getWaters().getData().get(i)); ///createVectors(dto, ds, layer, layer.getWaters().getData().get(i)); @@ -277,6 +271,9 @@ if (null != ds) ds.delete(); } } + waterDepths.sort(null); + layer.getWaters().setMinHeight(waterDepths.get(0)); + layer.getWaters().setMaxHeight(waterDepths.get(waterDepths.size() - 1)); } public void createWaterPng(ResultDto dto, Dataset ds, LayerDto layer, long ticks) { @@ -313,8 +310,8 @@ double maxHeight = layer.getExtension().getMaxHeight(); double minHeight = layer.getExtension().getMinHeight(); float[] ts = layer.getTerrain().getVals().get(width + "_" + height); - double minDepth = Double.MAX_VALUE; - double maxDepth = Double.MIN_VALUE; +// double minDepth = Double.MAX_VALUE; +// double maxDepth = Double.MIN_VALUE; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { int offset = x + y * width; @@ -337,16 +334,26 @@ Color color = new Color(r, g, b, 127); image.setRGB(x, y, color.getRGB()); - if (minDepth > depth) { - minDepth = depth; - } - if (maxDepth < depth) { - maxDepth = depth; - } +// maxDepth = Math.max(maxDepth, depth); +// minDepth = Math.min(minDepth, depth); } } - layer.getWaters().setMinHeight(minDepth); - layer.getWaters().setMaxHeight(maxDepth); +// Double srcMinHeight = layer.getWaters().getMinHeight(); +// Double srcMaxHeight = layer.getWaters().getMaxHeight(); +// if (srcMinHeight == null) { +// srcMinHeight = minDepth; +// layer.getWaters().setMinHeight(minDepth); +// } +// if (srcMaxHeight == null) { +// srcMaxHeight = maxDepth; +// layer.getWaters().setMaxHeight(maxDepth); +// } +// if (minDepth < srcMinHeight) { +// layer.getWaters().setMinHeight(minDepth); +// } +// if (maxDepth < srcMaxHeight) { +// layer.getWaters().setMaxHeight(maxDepth); +// } ComHelper.savePng(image, png); } finally { if (null != ds) ds.delete(); @@ -441,11 +448,11 @@ if (!new File(tif).exists()) continue; String png = flowPath + File.separator + sizes[0] + "_" + sizes[1] + ".png"; - vxyTif2Png(layer, tif, png, sizes[0], sizes[1]); + vxyTif2Png(tif, png, sizes[0], sizes[1]); } } - public void vxyTif2Png(LayerDto layer, String tif, String png, int width, int height) { + public void vxyTif2Png(String tif, String png, int width, int height) { Dataset ds = null; try { ds = gdal.Open(tif, gdalconstConstants.GA_ReadOnly); -- Gitblit v1.9.3