From a7766f8c1619fde0ea8233fd078205031bab54ef Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 16 七月 2024 17:13:25 +0800 Subject: [PATCH] 创建金字塔 --- src/main/java/com/se/simu/SimuApplication.java | 9 ++++ src/main/java/com/se/simu/helper/GdalHelper.java | 42 +++++++++++++++++++-- src/main/java/com/se/simu/service/WaterService.java | 7 +++ pom.xml | 3 + 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 70e64f7..2f3583f 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,8 @@ <dependency> <groupId>org.gdal</groupId> <artifactId>gdal</artifactId> - <version>3.9.0</version> + <!--<version>3.9.0</version>--> + <version>3.2.0</version> </dependency> </dependencies> diff --git a/src/main/java/com/se/simu/SimuApplication.java b/src/main/java/com/se/simu/SimuApplication.java index 0ce7a55..3d99701 100644 --- a/src/main/java/com/se/simu/SimuApplication.java +++ b/src/main/java/com/se/simu/SimuApplication.java @@ -3,6 +3,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /** * 鍚姩绋嬪簭绫� @@ -11,8 +13,13 @@ * @date 2024-07-16 */ @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}, scanBasePackages = {"com.se.simu"}) -public class SimuApplication { +public class SimuApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SimuApplication.class, args); } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) { + return springApplicationBuilder.sources(SimuApplication.class); + } } diff --git a/src/main/java/com/se/simu/helper/GdalHelper.java b/src/main/java/com/se/simu/helper/GdalHelper.java index 5de0452..5c03481 100644 --- a/src/main/java/com/se/simu/helper/GdalHelper.java +++ b/src/main/java/com/se/simu/helper/GdalHelper.java @@ -1,7 +1,11 @@ package com.se.simu.helper; import lombok.extern.slf4j.Slf4j; +import org.gdal.gdal.Band; +import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; +import org.gdal.gdalconst.gdalconst; +import org.gdal.gdalconst.gdalconstConstants; import org.gdal.ogr.ogr; import java.io.File; @@ -15,6 +19,9 @@ @Slf4j @SuppressWarnings("ALL") public class GdalHelper { + /** + * 鍒濆鍖� + */ public static void init(String gdalPath) { // 鏀寔涓枃璺緞 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES"); @@ -25,10 +32,10 @@ // 閰嶇疆鐜鍙橀噺 if (!StringHelper.isEmpty(gdalPath)) { - gdal.SetConfigOption("GDAL_DATA", gdalPath + File.separator + "gdal-data"); - gdal.SetConfigOption("PROJ_LIB", gdalPath + File.separator + "proj7" + File.separator + "share"); - //System.setProperty("PROJ_LIB", gdalPath + File.separator + "proj7" + File.separator + "share") - gdal.SetConfigOption("GDAL_DRIVER_PATH", gdalPath + File.separator + "gdalplugins"); + gdal.SetConfigOption("GDAL_DATA", gdalPath + "/gdal-data"); + gdal.SetConfigOption("PROJ_LIB", gdalPath + "/proj7/share"); + //System.setProperty("PROJ_LIB", gdalPath + "/proj7/share") + gdal.SetConfigOption("GDAL_DRIVER_PATH", gdalPath + "/gdalplugins"); String path = System.getenv("PATH"); if (!path.contains(gdalPath)) { @@ -40,4 +47,31 @@ gdal.AllRegister(); ogr.RegisterAll(); } + + /** + * 鍒涘缓閲戝瓧濉� + */ + public static void createPyramid(String file) { + try { + File f = new File(file); + if (!f.exists() || f.isDirectory()) { + return; + } + + Dataset ds = gdal.Open(file, gdalconst.GA_ReadOnly); + if (null == ds) { + return; + } + + // 鍒涘缓閲戝瓧濉� + Band band = ds.GetRasterBand(1); + if (0 == band.GetOverviewCount()) { + ds.BuildOverviews("nearest", new int[]{2, 4, 6, 8, 16}, null); + } + + ds.delete(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + } } diff --git a/src/main/java/com/se/simu/service/WaterService.java b/src/main/java/com/se/simu/service/WaterService.java index 04e408c..eceeb3b 100644 --- a/src/main/java/com/se/simu/service/WaterService.java +++ b/src/main/java/com/se/simu/service/WaterService.java @@ -1,6 +1,7 @@ package com.se.simu.service; import com.se.simu.domain.LayerVo; +import com.se.simu.helper.GdalHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -28,6 +29,12 @@ String dataPath; public LayerVo getLayer(String serviceName) { + String file = "D:/simu/test/DEM_M.tif"; + GdalHelper.createPyramid(file); + + String file2 = "D:/simu/test/DOM_M.tif"; + GdalHelper.createPyramid(file2); + LayerVo layer = new LayerVo(); layer.setVer(ver); layer.setDuration(new LayerVo.Duration(1719812810225L, 1719812810225L)); -- Gitblit v1.9.3