| | |
| | | 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(); |
| | | } |
| | |
| | | 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) { |
| | |
| | | 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(); |
| | |
| | | }); |
| | | //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) { |
| | |
| | | |
| | | 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(); |
| | | } |
| | |
| | | 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]; |
| | |
| | | //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; |
| | | } |
| | |
| | | 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); |