package com.se.nsl; 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; import org.gdal.gdalconst.gdalconst; import org.gdal.gdalconst.gdalconstConstants; import org.gdal.ogr.*; import org.junit.Test; import org.springframework.boot.test.context.SpringBootTest; import com.alibaba.fastjson.JSONObject; import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.net.*; import java.nio.ByteBuffer; import java.nio.channels.DatagramChannel; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; 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; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class AppTest { @Resource RegionMapper regionMapper; @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"; org.gdal.ogr.Driver driver = ogr.GetDriverByName("GeoJSON"); if (null == driver) return; DataSource ds = driver.Open(path); if (null == ds) return; List list = new ArrayList<>(); for (int i = 0, c = ds.GetLayerCount(); i < c; i++) { Layer layer = ds.GetLayer(i); for (long j = 0, d = layer.GetFeatureCount(); j < d; j++) { Feature f = layer.GetFeature(j); Geometry g = f.GetGeometryRef(); if (null != g) { // && (g.GetGeometryType() == ogr.wkbPolygon || g.GetGeometryType() == ogr.wkbMultiPolygon) list.add(new Region(f.GetFieldAsString(""), (short) 3, g.ExportToWkt())); } } } if (list.size() > 0) { regionMapper.inserts(list); } ds.delete(); driver.delete(); System.out.println("hello world"); } //@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; 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(); }*/ Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(2025 - 1900, 3, 12, 0, 0, 0)); SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); 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 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"; 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()); } 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()); } }