using SimuTools.Domain;
|
using SimuTools.Tools;
|
using System;
|
using System.Diagnostics;
|
using System.IO;
|
using System.Windows.Forms;
|
|
namespace SimuTools
|
{
|
public partial class FrmMain : Form
|
{
|
public FrmMain()
|
{
|
InitializeComponent();
|
}
|
|
private void FrmMain_Load(object sender, EventArgs e)
|
{
|
LogOut.Info("启动程序...");
|
try
|
{
|
GdalHelper gdal = GdalHelper.Instance;
|
LogOut.Info("> 初始化GDAL完成 <");
|
}
|
catch (Exception ex)
|
{
|
LogOut.Error(ex.StackTrace);
|
ShowErr("GDAL初始化出错:" + ex.Message);
|
}
|
}
|
|
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
LogOut.Info("关闭程序...");
|
}
|
|
private void btnTerrainPath_Click(object sender, EventArgs e)
|
{
|
selectFile(this.txtTerrainPath);
|
}
|
|
private void btnBuildingPath_Click(object sender, EventArgs e)
|
{
|
selectFile(this.txtBuildingPath);
|
}
|
|
private void selectFile(TextBox tb)
|
{
|
OpenFileDialog dialog = new OpenFileDialog();
|
dialog.Filter = "Tif files(*.tif)|*.tif|Tiff files (*.tiff)|*.tiff";
|
dialog.RestoreDirectory = true;
|
|
string path = tb.Text.Trim();
|
if (File.Exists(path))
|
{
|
dialog.InitialDirectory = Path.GetDirectoryName(path);
|
}
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
{
|
tb.Text = dialog.FileName;
|
}
|
}
|
|
private void btnWaterPath_Click(object sender, EventArgs e)
|
{
|
selectFolder(this.txtWaterPath, "水面");
|
}
|
|
private void btnFlowPath_Click(object sender, EventArgs e)
|
{
|
selectFolder(this.txtFlowPath, "流速");
|
}
|
|
private void btnOutPath_Click(object sender, EventArgs e)
|
{
|
selectFolder(this.txtOutPath, "输出");
|
}
|
|
private void selectFolder(TextBox tb, string title)
|
{
|
using (FolderBrowserDialog dialog = new FolderBrowserDialog())
|
{
|
string path = tb.Text.Trim();
|
if (Directory.Exists(path))
|
{
|
dialog.SelectedPath = path;
|
}
|
|
dialog.Description = "请选择" + title + "目录...";
|
if (dialog.ShowDialog() == DialogResult.OK)
|
{
|
tb.Text = dialog.SelectedPath;
|
}
|
}
|
}
|
|
private void btnRun_Click(object sender, EventArgs e)
|
{
|
string serviceName = this.txtServiceName.Text.Trim();
|
string terrainFile = this.txtTerrainPath.Text.Trim();
|
string buildingFile = this.txtBuildingPath.Text.Trim();
|
string waterPath = this.txtWaterPath.Text.Trim();
|
string flowPath = this.txtFlowPath.Text.Trim();
|
string outPath = this.txtOutPath.Text.Trim();
|
|
if (string.IsNullOrEmpty(serviceName))
|
{
|
ShowErr("服务名称,要求必填!");
|
return;
|
}
|
if (!File.Exists(terrainFile) || !File.Exists(buildingFile))
|
{
|
ShowErr("地形和建筑文件,要求必须存在!");
|
return;
|
}
|
if (!Directory.Exists(waterPath) || !Directory.Exists(flowPath) || !Directory.Exists(outPath))
|
{
|
ShowErr("水面、流速和输出目录,要求必须存在!");
|
return;
|
}
|
|
try
|
{
|
this.btnRun.Enabled = false;
|
LogOut.Info("开始运行 >>");
|
|
Stopwatch stopWatch = new Stopwatch();
|
stopWatch.Start();
|
Tools.Handle.Run(new Args(serviceName, terrainFile, buildingFile, waterPath, flowPath, outPath));
|
stopWatch.Stop();
|
|
this.btnRun.Enabled = true;
|
LogOut.Info("运行结束 <<");
|
MessageBox.Show("运行结束!\n耗时:" + GetSeconds(stopWatch.ElapsedMilliseconds) + " 秒", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
}
|
catch (Exception ex)
|
{
|
this.btnRun.Enabled = true;
|
LogOut.Error(ex.StackTrace);
|
ShowErr("运行出错:" + ex.Message);
|
}
|
}
|
|
private void ShowErr(string message)
|
{
|
MessageBox.Show(message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
}
|
|
private string GetSeconds(long milliseconds)
|
{
|
return (milliseconds / 1000.0).ToString();
|
}
|
}
|
}
|