From 0a70f99e51b0ea0c83288213e3b1f7904d78ede0 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期四, 18 七月 2024 17:52:46 +0800 Subject: [PATCH] 创建PNG --- SimuTools/Tools/Handle.cs | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 46 insertions(+), 7 deletions(-) diff --git a/SimuTools/Tools/Handle.cs b/SimuTools/Tools/Handle.cs index 541e8b0..da4768d 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,9 @@ /// </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.terrain = new Terrain(); layer.waters = new Water(); CopeTerrain(terrainFile, outPath, layer); @@ -33,15 +34,53 @@ /// <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); + CreateTerrainPng(ds, layer, outPath); + } + 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 CreateTerrainPng(Dataset ds, Domain.Layer layer, string outPath) + { + foreach (int[] sizes in layer.terrain.size) + { + + } } /// <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 +88,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 +96,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