From fadc4c7a796d7d8c40239a951cb00d80cdab778f Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期六, 16 十一月 2024 10:14:55 +0800 Subject: [PATCH] 1 --- src/main/java/com/se/simu/service/ResultService.java | 40 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 40 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/se/simu/service/ResultService.java b/src/main/java/com/se/simu/service/ResultService.java index dfdfcd1..a16e96f 100644 --- a/src/main/java/com/se/simu/service/ResultService.java +++ b/src/main/java/com/se/simu/service/ResultService.java @@ -374,6 +374,46 @@ return file.substring(file.lastIndexOf(File.separator) + 1, file.lastIndexOf(".")); } + private void water2Png2(ResultDto dto, LayerDto layer, String tif, String png, int width, int height) { + Dataset ds = null; + try { + ds = gdal.Open(tif, gdalconst.GA_ReadOnly); + if (null == ds || 0 == ds.getRasterCount()) return; + + Band band = ds.GetRasterBand(1); + float[] buffer = new float[width * height]; + band.ReadRaster(0, 0, width, height, buffer); + + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + double differ = layer.getExtension().getDiffer(), maxHeight = layer.getExtension().getMaxHeight(), minHeight = layer.getExtension().getMinHeight(); + float[] ts = layer.getTerrain().getVals().get(width + "_" + height); + + /*layer.getTerrain().getXyo().get(width + "_" + height).stream().forEach(xyo -> { + + });*/ + for (XYO xyo : layer.getTerrain().getXyo().get(width + "_" + height)) { + float depth = buffer[xyo.getOffset()] + ts[xyo.getOffset()]; + if (Float.isNaN(depth) || depth < minHeight) continue; + + int r = 0, g, b; + if (depth > maxHeight) { + g = b = 255; + } else { + int val = (int) ((depth - minHeight) / differ * 65535); + g = val / 256; + b = val % 256; + } + + Color color = new Color(r, g, b, 127); + image.setRGB(xyo.getX(), xyo.getY(), color.getRGB()); + } + + savePng(image, png); + } finally { + if (null != ds) ds.delete(); + } + } + private void water2Png(ResultDto dto, LayerDto layer, String tif, String png, int width, int height) { Dataset ds = null; try { -- Gitblit v1.9.3