月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-09-22 3f85f5e14aafa6fcf1dd06fc8239f36eb9636427
去除无效分析节点
已修改2个文件
23 ■■■■■ 文件已修改
src/main/java/com/moon/server/service/data/RasterAnalysisService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/service/data/RasterAnalysisService.java
@@ -188,7 +188,7 @@
     */
    public void analysisPolyline(AnalysisResultEntity entity, Dataset ds, Geometry geo, int size) {
        double[] transform = ds.GetGeoTransform();
        // double rotationX = transform[2]; double rotationY = transform[4]
        double xSize = ds.getRasterXSize(), ySize = ds.getRasterXSize();
        double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = transform[5];
        double len = 0;
@@ -206,6 +206,9 @@
            int xPixel = (int) Math.floor((xy[0] - minX) / pixelWidth);
            int yPixel = (int) Math.floor((maxY - xy[1]) / Math.abs(pixelHeight));
            if (xPixel < 1 || xPixel > xSize || yPixel < 1 || yPixel > ySize) {
                continue;
            }
            List<Double> vals = new ArrayList<>();
            for (int j = 1; j <= bandCount; j++) {
@@ -222,19 +225,22 @@
     */
    public void analysisPolygon(AnalysisResultEntity entity, Dataset ds, Geometry geo) {
        double[] transform = ds.GetGeoTransform();
        // double rotationX = transform[2]; double rotationY = transform[4]
        double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = Math.abs(transform[5]);
        double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = Math.abs(transform[5]), rotationX = transform[2], rotationY = transform[4];
        double[] env = new double[4];
        geo.GetEnvelope(env);
        int xMinPixel = (int) Math.floor((env[0] - minX) / pixelWidth);
        int yMinPixel = (int) Math.floor((maxY - env[3]) / pixelHeight);
        int xMaxPixel = (int) Math.floor((env[1] - minX) / pixelWidth);
        int yMaxPixel = (int) Math.floor((maxY - env[2]) / pixelHeight);
        int xMinPixel = Math.max((int) Math.floor((env[0] - minX) / pixelWidth), 1);
        int yMinPixel = Math.max((int) Math.floor((maxY - env[3]) / pixelHeight), 1);
        int xMaxPixel = Math.min((int) Math.floor((env[1] - minX) / pixelWidth), ds.getRasterXSize());
        int yMaxPixel = Math.min((int) Math.floor((maxY - env[2]) / pixelHeight), ds.getRasterYSize());
        int bandCount = ds.getRasterCount();
        int width = Math.abs(xMaxPixel - xMinPixel);
        int height = Math.abs(yMaxPixel - yMinPixel);
        if (width < 1 || height < 1) {
            setError(entity, "查询范围无效");
            return;
        }
        if (width * height > StaticData.I64 * StaticData.I64) {
            readRasterForBlocks(entity, ds, bandCount, xMinPixel, yMinPixel, width, height);
@@ -355,7 +361,6 @@
                d += distance;
            }
        }
        list.add(geo.GetPoint(c));
        return list;
src/main/resources/application.yml
@@ -14,7 +14,7 @@
    name: MoonServer
  # redis
  redis:
    database: 0
    database: 1
    #host: 192.168.20.83
    host: 127.0.0.1
    port: 6369