From 9f044bbbf3fa5b67fd1d120140f15f0b3729f3e8 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 18 七月 2024 17:15:46 +0800 Subject: [PATCH] 设置地形信息 --- SimuTools/Tools/Handle.cs | 40 +++++++++++++++++++++++++++++++++------- 1 files changed, 33 insertions(+), 7 deletions(-) diff --git a/SimuTools/Tools/Handle.cs b/SimuTools/Tools/Handle.cs index 541e8b0..f41d648 100644 --- a/SimuTools/Tools/Handle.cs +++ b/SimuTools/Tools/Handle.cs @@ -1,4 +1,6 @@ 锘縰sing Newtonsoft.Json; +using OSGeo.GDAL; +using OSGeo.OGR; using SimuTools.Domain; using System; using System.Collections.Generic; @@ -18,10 +20,8 @@ /// </summary> public static void Run(string terrainFile, string waterPath, string flowPath, string outPath) { - Layer layer = new Layer(); - layer.terrain = new Terrain(); + Domain.Layer layer = new Domain.Layer(); layer.duration = new Duration(); - layer.extension = new Extension(); layer.waters = new Water(); CopeTerrain(terrainFile, outPath, layer); @@ -33,15 +33,41 @@ /// <summary> /// 澶勭悊鍦板舰 /// </summary> - private static void CopeTerrain(string terrainFile, string outPath, Layer layer) + private static void CopeTerrain(string terrainFile, string outPath, Domain.Layer layer) { + Dataset ds = null; + try + { + ds = Gdal.Open(terrainFile, Access.GA_ReadOnly); + if (null == ds || 0 == ds.RasterCount || null == ds.GetSpatialRef()) return; + SetTerrainInfo(ds, layer); + } + finally + { + if (null != ds) ds.Dispose(); + } + } + + /// <summary> + /// 璁剧疆鍦板舰淇℃伅 + /// </summary> + private static void SetTerrainInfo(Dataset ds, Domain.Layer layer) + { + Geometry minPoint = GdalHelper.GetMinPoint(ds); + Geometry maxPoint = GdalHelper.GetMaxPoint(ds); + layer.extension = new Extension(minPoint.GetX(0), minPoint.GetY(0), maxPoint.GetX(0), maxPoint.GetY(0)); + + Band band = ds.GetRasterBand(1); + double[] mm = new double[2]; + band.ComputeRasterMinMax(mm, 0); + layer.extension.SetHeight(mm[0], mm[1]); } /// <summary> /// 澶勭悊姘撮潰 /// </summary> - private static void CopeWater(string waterPath, string outPath, Layer layer) + private static void CopeWater(string waterPath, string outPath, Domain.Layer layer) { } @@ -49,7 +75,7 @@ /// <summary> /// 澶勭悊娴侀�熸祦鍚� /// </summary> - private static void CopeFlow(string flowPath, string outPath, Layer layer) + private static void CopeFlow(string flowPath, string outPath, Domain.Layer layer) { } @@ -57,7 +83,7 @@ /// <summary> /// 澶勭悊鍏冩暟鎹� /// </summary> - private static void CopeLayerJson(string outPath, Layer layer) + private static void CopeLayerJson(string outPath, Domain.Layer layer) { if (null == layer) return; -- Gitblit v1.9.3