From 97b1a4298a3ba502c63e433db294e7e904be15f4 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期六, 16 九月 2023 08:30:33 +0800
Subject: [PATCH] 元数据添加最值

---
 src/main/java/com/moon/server/entity/data/MetaFileEntity.java               |   20 ++++++++++
 src/main/java/com/moon/server/entity/data/MetaEntity.java                   |   20 ++++++++++
 src/main/java/com/moon/server/service/data/ReadRasterService.java           |   28 +++++++++++++
 src/main/java/com/moon/server/controller/data/RasterAnalysisController.java |    3 +
 4 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java b/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
index c5b3f69..c866f6d 100644
--- a/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
+++ b/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
@@ -91,7 +91,8 @@
     @SysLog()
     @ApiOperation(value = "鏌ヨ闈㈠垎鏋�")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "wkt", value = "闈KT", dataType = "String", example = "POLYGON ((165.680851 31.333443,166.383982 31.283475,166.016355 30.908709,165.680851 31.333443))")
+            //@ApiImplicitParam(name = "wkt", value = "闈KT", dataType = "String", example = "POLYGON ((165.680851 31.333443,166.383982 31.283475,166.016355 30.908709,165.680851 31.333443))")
+            @ApiImplicitParam(name = "wkt", value = "闈KT", 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) {
diff --git a/src/main/java/com/moon/server/entity/data/MetaEntity.java b/src/main/java/com/moon/server/entity/data/MetaEntity.java
index 3e46f70..a127b86 100644
--- a/src/main/java/com/moon/server/entity/data/MetaEntity.java
+++ b/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;
     }
diff --git a/src/main/java/com/moon/server/entity/data/MetaFileEntity.java b/src/main/java/com/moon/server/entity/data/MetaFileEntity.java
index bc16782..c5e1986 100644
--- a/src/main/java/com/moon/server/entity/data/MetaFileEntity.java
+++ b/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;
     }
diff --git a/src/main/java/com/moon/server/service/data/ReadRasterService.java b/src/main/java/com/moon/server/service/data/ReadRasterService.java
index 5202c78..2f1ffaf 100644
--- a/src/main/java/com/moon/server/service/data/ReadRasterService.java
+++ b/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] 宸︿笂瑙抶鍧愭爣
          * 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, ","));
+    }
 }

--
Gitblit v1.9.3