From 115146311d2521fcb3b57c562df0f2a8e9972311 Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期三, 28 五月 2025 11:43:12 +0800 Subject: [PATCH] 根据不同的区域类型选择不同的地形 --- src/main/java/com/se/nsl/service/ResolveService.java | 30 ++++++++++++++++++++++++++++-- 1 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/se/nsl/service/ResolveService.java b/src/main/java/com/se/nsl/service/ResolveService.java index 0ee73a6..475cd87 100644 --- a/src/main/java/com/se/nsl/service/ResolveService.java +++ b/src/main/java/com/se/nsl/service/ResolveService.java @@ -14,6 +14,7 @@ import com.se.nsl.helper.GdalHelper; import com.se.nsl.helper.StringHelper; import com.se.nsl.helper.WebHelper; +import com.se.nsl.utils.AreaType; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.gdal.gdal.Band; @@ -154,6 +155,29 @@ createDir(inPath + File.separator + "velocity"); createDir(config.getOutPath() + File.separator + data.getOutPath()); + Short areaType = simu.getAreaType(); + AreaType at = AreaType.of(areaType); + String terrainTif = config.getSourceDem(); + String landuseTif = config.getSourceLanduse(); + if (at == AreaType.KEY_DITCH) { + File keyDitchDir = new File(config.getKeyDitch()); + String areaName = simu.getAreaName(); + Optional<File> first = Arrays.stream(keyDitchDir.listFiles()).filter(f -> f.getName().equals(areaName)).findFirst(); + if (first.isPresent()) { + File targetTifDir = first.get(); + File[] files = targetTifDir.listFiles(); + for (File file : files) { + String name = file.getName(); + if (name.toLowerCase().contains("dem")) { + terrainTif = file.getAbsolutePath(); + } + if (name.toLowerCase().contains("landuse")) { + landuseTif = file.getAbsolutePath(); + } + } + } + } + Geometry geom = Geometry.CreateFromWkt(simu.getGeom()); if (geom.GetGeometryType() == ogr.wkbMultiPolygon) geom = geom.GetGeometryRef(0); SpatialReference dstSR = GdalHelper.createSpatialReference(config.getEpsg()); @@ -163,12 +187,14 @@ String wkt = geom.ExportToWkt(); String terrainFile = inPath + File.separator + config.getTerrainFile(); - Dataset dsDem = gdal.Open(config.getSourceDem(), gdalconstConstants.GA_ReadOnly); + + Dataset dsDem = gdal.Open(terrainTif, gdalconstConstants.GA_ReadOnly); ComHelper.Resample(dsDem, null, terrainFile, null, wkt, null, null); dsDem.delete(); String landuseFile = inPath + File.separator + config.getLanduseFile(); - Dataset dsLanduse = gdal.Open(config.getSourceLanduse(), gdalconstConstants.GA_ReadOnly); + + Dataset dsLanduse = gdal.Open(landuseTif, gdalconstConstants.GA_ReadOnly); ComHelper.Resample(dsLanduse, null, landuseFile, null, wkt, null, null); dsLanduse.delete(); } -- Gitblit v1.9.3