月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-09-16 97b1a4298a3ba502c63e433db294e7e904be15f4
元数据添加最值
已修改4个文件
71 ■■■■■ 文件已修改
src/main/java/com/moon/server/controller/data/RasterAnalysisController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/entity/data/MetaEntity.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/entity/data/MetaFileEntity.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/service/data/ReadRasterService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
@@ -91,7 +91,8 @@
    @SysLog()
    @ApiOperation(value = "查询面分析")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "wkt", value = "面WKT", dataType = "String", example = "POLYGON ((165.680851 31.333443,166.383982 31.283475,166.016355 30.908709,165.680851 31.333443))")
            //@ApiImplicitParam(name = "wkt", value = "面WKT", dataType = "String", example = "POLYGON ((165.680851 31.333443,166.383982 31.283475,166.016355 30.908709,165.680851 31.333443))")
            @ApiImplicitParam(name = "wkt", value = "面WKT", dataType = "String", example = "POLYGON ((56.61 33.94,115.04 33.56,114.09 -7.17,52.22 -6.22,56.61 33.94))")
    })
    @GetMapping(value = "/selectByPolygon")
    public ResponseMsg<Object> selectByPolygon(String wkt) {
src/main/java/com/moon/server/entity/data/MetaEntity.java
@@ -70,6 +70,10 @@
    private String bands;
    private String min;
    private String max;
    private String bandType;
    private String ct;
@@ -335,6 +339,22 @@
        this.bands = bands;
    }
    public String getMin() {
        return min;
    }
    public void setMin(String min) {
        this.min = min;
    }
    public String getMax() {
        return max;
    }
    public void setMax(String max) {
        this.max = max;
    }
    public String getBandType() {
        return bandType;
    }
src/main/java/com/moon/server/entity/data/MetaFileEntity.java
@@ -70,6 +70,10 @@
    private String bands;
    private String min;
    private String max;
    private String bandType;
    private String ct;
@@ -314,6 +318,22 @@
        this.bands = bands;
    }
    public String getMin() {
        return min;
    }
    public void setMin(String min) {
        this.min = min;
    }
    public String getMax() {
        return max;
    }
    public void setMax(String max) {
        this.max = max;
    }
    public String getBandType() {
        return bandType;
    }
src/main/java/com/moon/server/service/data/ReadRasterService.java
@@ -15,6 +15,8 @@
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
 * 读取栅格服务
@@ -86,6 +88,8 @@
            mf.setCt(null == colorTable ? null : colorTable.toString());
            // 高程基准
            mf.sethDatum(null);
            // 设置最值
            setMinAndMax(ds, mf);
            // 分辨率
            double[] tr = new double[6];
@@ -175,7 +179,7 @@
     * 获取Dataset的最大点
     */
    private Geometry getMaxPoint(Dataset ds) {
        /**
        /*
         * transform[0] 左上角x坐标
         * transform[1] 东西方向分辨率
         * transform[2] 旋转角度, 0表示图像 "北方朝上"
@@ -217,4 +221,26 @@
        return point;
    }
    /**
     * 设置最值
     * GDALRasterBand::GetHistogram ​​统计直方图
     */
    private void setMinAndMax(Dataset ds, MetaFileEntity mf) {
        List<Double> minList = new ArrayList<>();
        List<Double> maxList = new ArrayList<>();
        for (int i = 1; i <= ds.getRasterCount(); i++) {
            Double[] min = new Double[1];
            Double[] max = new Double[1];
            ds.GetRasterBand(i).GetMinimum(min);
            ds.GetRasterBand(i).GetMaximum(max);
            minList.add(min[0]);
            maxList.add(max[0]);
        }
        mf.setMin(StringHelper.join(minList, ","));
        mf.setMax(StringHelper.join(maxList, ","));
    }
}