wuww
2025-04-21 ab6d5c7ee8d247ba4c6f36b9e31583b0d2c6ed04
修改单元测试方法
已修改5个文件
253 ■■■■■ 文件已修改
pom.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/controller/TestController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/helper/GdalHelper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/service/TestService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/se/nsl/AppTest.java 167 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -120,7 +120,8 @@
            <artifactId>gdal</artifactId>
            <version>3.5.0</version>
            <!--<version>3.10.0</version>
            <scope>system</scope>
            <version>3.10.1</version>-->
            <!--<scope>system</scope>
            <systemPath>${project.basedir}/libs/gdal.jar</systemPath>-->
        </dependency>
        <!--rainfall-->
src/main/java/com/se/nsl/controller/TestController.java
@@ -20,7 +20,13 @@
import javax.annotation.Resource;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Api(tags = "Test")
@@ -235,4 +241,73 @@
        return success(list.size() > 0 ? regionMapper.inserts(list) : 0);
    }
    @ApiOperation(value = "testDepthFiles <")
    @GetMapping("/testDepthFiles")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "oldPath", value = "输入路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago"),
            @ApiImplicitParam(name = "newPath", value = "开始时间", dataType = "Integer", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth"),
            @ApiImplicitParam(name = "year", value = "年", dataType = "Integer", paramType = "query", example = "2025"),
            @ApiImplicitParam(name = "month", value = "月", dataType = "Integer", paramType = "query", example = "4"),
            @ApiImplicitParam(name = "day", value = "日", dataType = "Integer", paramType = "query", example = "21")
    })
    public R<Object> testDepthFiles(String oldPath, String newPath, Integer year, Integer month, Integer day) {
        try {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date(year - 1900, month - 1, day, 0, 0, 0));
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            for (File file : new File(oldPath).listFiles()) {
                if (!file.exists() || !file.isDirectory()) continue;
                File tif = new File(oldPath + "\\" + file.getName() + "\\depth.tif");
                if (!tif.exists() || tif.isDirectory()) continue;
                /*int second = Integer.parseInt(fileName);
                calendar.set(Calendar.SECOND, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.HOUR, 0);
                calendar.add(Calendar.SECOND, second);*/
                calendar.add(Calendar.SECOND, 1);
                String newName = df.format(calendar.getTime());
                String newFile = newPath + File.separator + newName + ".tif";
                System.out.println(newFile);
                tif.renameTo(new File(newFile));
                file.delete();
            }
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @ApiOperation(value = "testTifFiles <")
    @GetMapping("/testTifFiles")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "oldPath", value = "输入路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth"),
            @ApiImplicitParam(name = "newPath", value = "开始时间", dataType = "Integer", paramType = "query", example = "D:\\other\\simu\\uwsolver\\chicago\\depth2"),
            @ApiImplicitParam(name = "step", value = "步长", dataType = "Integer", paramType = "query", example = "20")
    })
    public R<Object> testTifFiles(String oldPath, String newPath, Integer step) {
        try {
            File[] files = new File(oldPath).listFiles();
            for (int i = 0, c = files.length; i < c; i += step) {
                File file = files[i];
                if (!file.exists() || !file.isFile() || !file.getName().endsWith(".tif")) continue;
                String newFile = newPath + File.separator + file.getName();
                System.out.println(newFile);
                file.renameTo(new File(newFile));
                //Files.copy(file.toPath(), Paths.get(newFile), StandardCopyOption.REPLACE_EXISTING);
                file.delete();
            }
            return success("ok");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
}
src/main/java/com/se/nsl/helper/GdalHelper.java
@@ -32,9 +32,9 @@
        // 配置环境变量
        if (!StringHelper.isEmpty(gdalPath)) {
            if (WebHelper.isWin()) {
                gdal.SetConfigOption("GDAL_HOME", gdalPath);
                gdal.SetConfigOption("GDAL_DATA", gdalPath + "/gdal-data");
                gdal.SetConfigOption("PROJ_LIB", gdalPath + "/proj7/share");
                //System.setProperty("PROJ_LIB", gdalPath + "/proj7/share")
                gdal.SetConfigOption("PROJ_LIB", gdalPath + "/projlib"); ///proj7/share
                gdal.SetConfigOption("GDAL_DRIVER_PATH", gdalPath + "/gdalplugins");
                String path = System.getenv("PATH");
src/main/java/com/se/nsl/service/TestService.java
@@ -323,8 +323,8 @@
                    if (buffer[offset] + ts[offset] > maxHeight) {
                        g = b = 255;
                    } else {
                        //int val = (int) ((buffer[offset] + ts[offset] - minHeight) / differ * 65535);
                        int val = (int) (buffer[offset] / differ * 65535);
                        int val = (int) ((buffer[offset] + ts[offset] - minHeight) / differ * 65535);
                        //int val = (int) (buffer[offset] / differ * 65535);
                        g = val / 256;
                        b = val % 256;
                    }
src/test/java/com/se/nsl/AppTest.java
@@ -3,7 +3,6 @@
import com.se.nsl.domain.po.Region;
import com.se.nsl.helper.GdalHelper;
import com.se.nsl.mapper.RegionMapper;
import javafx.scene.input.DataFormat;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
@@ -39,6 +38,67 @@
    RegionMapper regionMapper;
    @Test
    public void test() {
        //procDepthFiles();
        System.out.println("> test ----------------------");
        readZarr();
    }
    private void procDepthFiles() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date(2025 - 1900, 4 - 1, 21, 0, 0, 0));
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        String oldPath = "D:\\other\\simu\\uwsolver\\chicago";
        String newPath = "D:\\other\\simu\\uwsolver\\chicago\\depth";
        for (File file : new File(oldPath).listFiles()) {
            if (!file.exists() || !file.isDirectory()) continue;
            File tif = new File(oldPath + "\\" + file.getName() + "\\depth.tif");
            if (!tif.exists() || tif.isDirectory()) continue;
            //String fileName = file.getName().replace("2025041200", "").replace(".tif", "");
            /*int second = Integer.parseInt(fileName);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR, 0);
            calendar.add(Calendar.SECOND, second);*/
            calendar.add(Calendar.SECOND, 1);
            String newName = df.format(calendar.getTime());
            String newFile = newPath + File.separator + newName + ".tif";
            System.out.println(newFile);
            tif.renameTo(new File(newFile));
            file.delete();
        }
    }
    //@Test
    public void collectPngToList() {
        System.out.println("------------------------------------------- start");
        int size = 1024;
        String outputPath = "D:\\other\\simu\\out\\20250412\\waters";
        List<String> list = new ArrayList<>();
        for (File file : new File(outputPath).listFiles()) {
            if (!file.exists() || file.isFile()) continue;
            File pngFile = new File(file.getPath() + File.separator + size + "_" + size + ".png");
            if (!pngFile.exists() || pngFile.isDirectory()) continue;
            list.add("file '" + pngFile.getPath().replace("\\", "/") + "'");
            System.out.println(list.get(list.size() - 1));
        }
        Path path = Paths.get(outputPath + File.separator + "list.txt");
        try {
            Files.write(path, list, StandardCharsets.UTF_8);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("------------------------------------------- end");
    }
    //@Test
    public void insertRegion() {
        GdalHelper.init("D:\\soft\\release-1928-x64-dev\\release-1928-x64\\bin");
        String path = "D:\\Documents\\WeChat Files\\wxid_llap8o5q8rm521\\FileStorage\\File\\2025-04\\孙胡沟geometry.json";
@@ -72,100 +132,39 @@
    }
    //@Test
    public void procDepthFiles() {
        String path = "D:\\other\\simu\\uwsolver\\20250412\\depth";
        /*for (File file : new File(path).listFiles()) {
            if (!file.exists() || !file.isDirectory()) continue;
    public void readZarr() {
        //GdalHelper.init("D:\\soft\\release-1928-x64-dev\\release-1928-x64\\bin");
        //GdalHelper.init("C:\\Program Files\\GDAL");
            File tif = new File(path + "\\" + file.getName() + "\\depth.tif");
            if (!tif.exists() || tif.isDirectory()) continue;
            File newFile = new File(path + "\\2025041200" + file.getName() + ".tif");
            System.out.println(newFile.getPath());
            tif.renameTo(newFile);
            file.delete();
        /*try {
            System.setProperty("java.library.path", "C:\\Program Files\\GDAL");
            java.lang.reflect.Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
            fieldSysPath.setAccessible(true);
            fieldSysPath.set(null, null);
            //System.load("C:\\Program Files\\GDAL\\gdaljni.dll");
        } catch (Exception e) {
            e.printStackTrace();
        }*/
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date(2025 - 1900, 3, 12, 0, 0, 0));
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        gdal.AllRegister();
        System.out.println("GDAL Initialized. Version: " + gdal.VersionInfo("RELEASE_NAME"));
        String oldPath = "D:\\other\\simu\\uwsolver\\20250412\\depth-old";
        String newPath = "D:\\other\\simu\\uwsolver\\20250412\\depth";
        for (File file : new File(oldPath).listFiles()) {
            String fileName = file.getName().replace("2025041200", "").replace(".tif", "");
            int second = Integer.parseInt(fileName);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR, 0);
            calendar.add(Calendar.SECOND, second);
            String newName = df.format(calendar.getTime());
            String newFile = newPath + File.separator + newName + ".tif";
            System.out.println(newFile);
            file.renameTo(new File(newFile));
        }
    }
    //@Test
    public void collectPngToList() {
        System.out.println("------------------------------------------- start");
        int size = 1024;
        String outputPath = "D:\\other\\simu\\out\\20250412\\waters";
        List<String> list = new ArrayList<>();
        for (File file : new File(outputPath).listFiles()) {
            if (!file.exists() || file.isFile()) continue;
            File pngFile = new File(file.getPath() + File.separator + size + "_" + size + ".png");
            if (!pngFile.exists() || pngFile.isDirectory()) continue;
            list.add("file '" + pngFile.getPath().replace("\\", "/") + "'");
            System.out.println(list.get(list.size() - 1));
        }
        Path path = Paths.get(outputPath + File.separator + "list.txt");
        try {
            Files.write(path, list, StandardCharsets.UTF_8);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("------------------------------------------- end");
    }
    //@Test
    public void readZarr() throws Exception {
        GdalHelper.init("D:\\soft\\release-1928-x64-dev\\release-1928-x64\\bin");
        String zarrPath = "D:\\other\\simu\\CudaUWSolver.zarr";
        String zarrPath = "D:\\other\\simu\\out\\out.zarr"; // "D:\\other\\simu\\out\\CudaUWSolver.zarr";
        Dataset ds = null;
        try {
            Driver driver = gdal.GetDriverByName("Zarr");
            ds = gdal.Open(zarrPath, gdalconst.GA_ReadOnly);
            if (null == ds || ds.getRasterCount() < 1) return;
            System.out.println(ds.getRasterCount());
            if (null == ds || ds.getRasterCount() < 1) {
                System.err.println("Could not open input dataset: " + zarrPath);
                return;
            }
            System.out.println("Successfully opened...");
            System.out.println("Driver: " + ds.GetDriver().getShortName() + "/" + ds.GetDriver().getLongName());
            System.out.println("Size: " + ds.getRasterXSize() + "x" + ds.getRasterYSize() + "x" + ds.getRasterCount());
        } finally {
            if (null != ds) ds.delete();
        }
    }
    //@Test
    public void readZarr2() throws Exception {
        String zarrInputPath = "D:\\other\\simu\\out\\out.zarr";
        gdal.AllRegister();
        System.out.println("GDAL Initialized. Version: " + gdal.VersionInfo("RELEASE_NAME"));
        Dataset inputDataset = gdal.Open(zarrInputPath, gdalconst.GA_ReadOnly);
        if (inputDataset == null) {
            System.err.println("Could not open input dataset: " + zarrInputPath);
            return;
        }
        System.out.println("Successfully opened");
        System.out.println(
                "Driver: " + inputDataset.GetDriver().getShortName() + "/" + inputDataset.GetDriver().getLongName());
        System.out.println("Size: " + inputDataset.getRasterXSize() + "x" + inputDataset.getRasterYSize() + "x"
                + inputDataset.getRasterCount());
    }
}