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