/// <summary> /// 模拟结束事件监听辅助函数 /// </summary> protected void SimulateEndHelper(BaseCa ca) { // 将模拟结果添加到系统中 double[] buffer = ca.BeginBuffer; int width = ca.Width; int height = ca.Height; //var map = GIS.FrameWork.Application.App.Map; // 保存输出结果 var path = Application.StartupPath + @"\log"; if (!Directory.Exists(path)) //如果不存在就创建file文件夹 { Directory.CreateDirectory(path); //创建该文件夹 } var outputPath = path + @"\" + (dateNow.ToString("MMddyyhhmmss")) + (this.uuid++) + ".tif"; OSGeo.GDAL.Driver driverSave = OSGeo.GDAL.Gdal.GetDriverByName("GTiff"); OSGeo.GDAL.Dataset datasetSave = driverSave.Create(outputPath, width, height, 1, OSGeo.GDAL.DataType.GDT_Byte, null); datasetSave.WriteRaster(0, 0, width, height, buffer, width, height, 1, new int[1] { 1 }, 0, 0, 0); datasetSave.SetProjection(ca.projStr); datasetSave.SetGeoTransform(ca.geoTransform); datasetSave.GetRasterBand(1).SetNoDataValue(ca.noDataVal); datasetSave.FlushCache(); datasetSave.Dispose(); driverSave.Dispose(); //// 翻转图像 ? //buffer = InvertImage(buffer, width, height); MessageBox.Show("模拟结束, 输出文件:" + outputPath); //// 新建 GDAL dataset //OSGeo.GDAL.Driver driver = OSGeo.GDAL.Gdal.GetDriverByName("MEM"); //OSGeo.GDAL.Dataset dataset = driver.Create("", width, height, 1, OSGeo.GDAL.DataType.GDT_Float64, null); //dataset.WriteRaster(0, 0, width, height, buffer, width, height, 1, new int[1] { 1 }, 0, 0, 0); //// 将GDAL dataset转化为IRaster数据集 //DotSpatial.Data.IRaster raster = GIS.GDAL.RasterConverter.Gdal2DSRaster(dataset, 1); //raster.Name = "Result"; //map.Layers.Add(raster); }
/// <summary> /// 模拟结束事件监听函数 /// </summary> protected void SimulateEnd(BaseCa ca) { //var lengend = GIS.FrameWork.Application.App.Legend as Legend; //if (lengend.InvokeRequired) //{ // lengend.Invoke(new Action<BaseCa>((ca1) => // { // SimulateEndHelper(ca1); // }), ca); //} //else //{ SimulateEndHelper(ca); //} }