13693261870
2024-07-16 a7766f8c1619fde0ea8233fd078205031bab54ef
创建金字塔
已修改4个文件
61 ■■■■■ 文件已修改
pom.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/SimuApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/helper/GdalHelper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/simu/service/WaterService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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);
    }
}
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);
        }
    }
}
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));