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<Region> 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<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";
|
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());
|
}
|
}
|