From 4fab1da943cc36e05c9732e3b510d00137273347 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 17 十月 2024 09:25:45 +0800 Subject: [PATCH] 1 --- src/main/java/com/se/simu/service/ResultService.java | 41 ++++++++++++++++++++++------------------- 1 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/se/simu/service/ResultService.java b/src/main/java/com/se/simu/service/ResultService.java index c98138e..cc15bf4 100644 --- a/src/main/java/com/se/simu/service/ResultService.java +++ b/src/main/java/com/se/simu/service/ResultService.java @@ -3,6 +3,7 @@ import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSON; import com.se.simu.config.PropertiesConfig; +import com.se.simu.domain.dto.BuildingDto; import com.se.simu.domain.dto.ExtensionDto; import com.se.simu.domain.dto.LayerDto; import com.se.simu.domain.dto.ResultDto; @@ -14,7 +15,7 @@ import org.gdal.gdal.WarpOptions; import org.gdal.gdal.gdal; import org.gdal.gdalconst.gdalconst; -import org.gdal.ogr.Geometry; +import org.gdal.ogr.*; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -48,8 +49,7 @@ basePath + config.getBuildingFile(), basePath + config.getWaterPath(), basePath + config.getFlowPath(), - config.getOutPath(), - ""); + config.getOutPath()); LayerDto layer = new LayerDto(config.getVer(), data.getEpsg(), config.getSizes()); process(dto, layer); } @@ -209,28 +209,31 @@ * 寤虹瓚 */ private void copeBuilding(ResultDto dto, LayerDto layer) { - Dataset ds = null; + Driver driver = null; + DataSource dataSource = null; + Layer shpLayer = null; try { - ds = gdal.Open(dto.getBuildingFile(), gdalconst.GA_ReadOnly); - if (null == ds || 0 == ds.getRasterCount()) return; + driver = ogr.GetDriverByName("ESRI shapefile"); + if (null == driver) return; - for (int[] sizes : layer.getTerrain().getSize()) { - String tif = dto.getTemp() + File.separator + "building_" + sizes[0] + "_" + sizes[1] + ".tif"; - Resample(ds, tif, sizes[0], sizes[1], layer); - if (!new File(tif).exists()) continue; + dataSource = driver.Open(dto.getBuildingFile()); + if (null == dataSource) return; - Dataset dataset = gdal.Open(tif, gdalconst.GA_ReadOnly); - if (null == dataset || 0 == dataset.getRasterCount()) return; + shpLayer = dataSource.GetLayer(0); + if (shpLayer.GetFeatureCount() < 1) return; - float[] buffer = new float[sizes[0] * sizes[1]]; - //dataset.GetRasterBand(1).ReadRaster(0, 0, sizes[0], sizes[1], buffer, sizes[0], sizes[1], 0, 0); - dataset.GetRasterBand(1).ReadRaster(0, 0, sizes[0], sizes[1], buffer); - dto.getBuildings().put(sizes[0] + "_" + sizes[1], buffer); + do { + Feature f = shpLayer.GetNextFeature(); + if (null == f) break; - dataset.delete(); - } + String id = f.GetFieldAsString(config.getBuildingKey()); + BuildingDto building = new BuildingDto(id, f.GetGeometryRef()); + dto.getBuildingList().add(building); + } while (true); } finally { - if (null != ds) ds.delete(); + if (null != shpLayer) shpLayer.delete(); + if (null != dataSource) dataSource.delete(); + if (null != driver) driver.delete(); } } -- Gitblit v1.9.3