平差逻辑编写
This commit is contained in:
Generated
+6
-3
@@ -92,6 +92,7 @@
|
||||
btnStartAdjust.TabIndex = 3;
|
||||
btnStartAdjust.Text = "开始平差";
|
||||
btnStartAdjust.UseVisualStyleBackColor = true;
|
||||
btnStartAdjust.Click += btnStartAdjust_Click;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
@@ -161,7 +162,7 @@
|
||||
//
|
||||
数据输入ToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { 从文件ToolStripMenuItem, 手动输入ToolStripMenuItem });
|
||||
数据输入ToolStripMenuItem.Name = "数据输入ToolStripMenuItem";
|
||||
数据输入ToolStripMenuItem.Size = new Size(218, 34);
|
||||
数据输入ToolStripMenuItem.Size = new Size(270, 34);
|
||||
数据输入ToolStripMenuItem.Text = "数据输入";
|
||||
//
|
||||
// 从文件ToolStripMenuItem
|
||||
@@ -181,14 +182,16 @@
|
||||
// 删除当前数据ToolStripMenuItem
|
||||
//
|
||||
删除当前数据ToolStripMenuItem.Name = "删除当前数据ToolStripMenuItem";
|
||||
删除当前数据ToolStripMenuItem.Size = new Size(218, 34);
|
||||
删除当前数据ToolStripMenuItem.Size = new Size(270, 34);
|
||||
删除当前数据ToolStripMenuItem.Text = "删除当前数据";
|
||||
删除当前数据ToolStripMenuItem.Click += 删除当前数据ToolStripMenuItem_Click;
|
||||
//
|
||||
// 数据检查ToolStripMenuItem
|
||||
//
|
||||
数据检查ToolStripMenuItem.Name = "数据检查ToolStripMenuItem";
|
||||
数据检查ToolStripMenuItem.Size = new Size(218, 34);
|
||||
数据检查ToolStripMenuItem.Size = new Size(270, 34);
|
||||
数据检查ToolStripMenuItem.Text = "数据检查";
|
||||
数据检查ToolStripMenuItem.Click += 数据检查ToolStripMenuItem_Click;
|
||||
//
|
||||
// 开始平差ToolStripMenuItem
|
||||
//
|
||||
|
||||
+128
-7
@@ -46,13 +46,7 @@ namespace kcsj.Forms
|
||||
private void 从文件ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
FileInputForm form = new FileInputForm();
|
||||
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
LogService.AddLog("主窗体已接收文件导入数据。");
|
||||
LogService.AddLog($"已知点数量:{DataStore.KnownPoints.Count}");
|
||||
LogService.AddLog($"观测数据数量:{DataStore.Observations.Count}");
|
||||
}
|
||||
form.ShowDialog();
|
||||
}
|
||||
|
||||
private void 手动输入ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@@ -69,7 +63,45 @@ namespace kcsj.Forms
|
||||
|
||||
private void 开始平差ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!DataStore.HasData)
|
||||
{
|
||||
MessageBox.Show("请先导入或输入已知点和观测数据。");
|
||||
return;
|
||||
}
|
||||
|
||||
LeastSquaresResult result =
|
||||
LeastSquaresAdjustmentService.Adjust(
|
||||
DataStore.KnownPoints,
|
||||
DataStore.Observations);
|
||||
|
||||
MessageBox.Show("间接平差计算完成。");
|
||||
|
||||
// 示例:把未知点结果输出到日志
|
||||
foreach (var item in result.UnknownElevations)
|
||||
{
|
||||
string pointName = item.Key;
|
||||
double elevation = item.Value;
|
||||
double error = result.UnknownElevationErrors[pointName];
|
||||
|
||||
LogService.AddLog(
|
||||
$"{pointName} 平差高程 = {elevation:F4} m,中误差 = ±{error:F4} m");
|
||||
}
|
||||
|
||||
// 示例:输出观测改正数
|
||||
foreach (var obsResult in result.ObservationResults)
|
||||
{
|
||||
LogService.AddLog(
|
||||
$"第{obsResult.Index}段 {obsResult.FromPoint}->{obsResult.ToPoint}:" +
|
||||
$"v = {obsResult.Residual:F6},平差后高差 = {obsResult.AdjustedHeightDiff:F6}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("平差失败:" + ex.Message);
|
||||
LogService.AddLog("平差失败:" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void 查看结果ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
@@ -106,5 +138,94 @@ namespace kcsj.Forms
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
private void btnStartAdjust_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!DataStore.HasData)
|
||||
{
|
||||
MessageBox.Show("请先导入或输入已知点和观测数据。");
|
||||
return;
|
||||
}
|
||||
|
||||
LeastSquaresResult result =
|
||||
LeastSquaresAdjustmentService.Adjust(
|
||||
DataStore.KnownPoints,
|
||||
DataStore.Observations);
|
||||
|
||||
MessageBox.Show("间接平差计算完成。");
|
||||
|
||||
// 示例:把未知点结果输出到日志
|
||||
foreach (var item in result.UnknownElevations)
|
||||
{
|
||||
string pointName = item.Key;
|
||||
double elevation = item.Value;
|
||||
double error = result.UnknownElevationErrors[pointName];
|
||||
|
||||
LogService.AddLog(
|
||||
$"{pointName} 平差高程 = {elevation:F4} m,中误差 = ±{error:F4} m");
|
||||
}
|
||||
|
||||
// 示例:输出观测改正数
|
||||
foreach (var obsResult in result.ObservationResults)
|
||||
{
|
||||
LogService.AddLog(
|
||||
$"第{obsResult.Index}段 {obsResult.FromPoint}->{obsResult.ToPoint}:" +
|
||||
$"v = {obsResult.Residual:F6},平差后高差 = {obsResult.AdjustedHeightDiff:F6}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("平差失败:" + ex.Message);
|
||||
LogService.AddLog("平差失败:" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void 删除当前数据ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult result = MessageBox.Show(
|
||||
"确定要清空当前数据吗?",
|
||||
"二次确认",
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Warning
|
||||
);
|
||||
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
DataStore.Clear();
|
||||
LogService.AddLog("当前数据已清空");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Close();
|
||||
LogService.AddLog("用户取消清空数据");
|
||||
}
|
||||
}
|
||||
|
||||
private void 数据检查ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
DataCheckResult result = DataCheck.Check(DataStore.KnownPoints, DataStore.Observations);
|
||||
|
||||
LogService.AddLog(result.ToLogText());
|
||||
LogService.AddLog(Environment.NewLine);
|
||||
|
||||
if (!result.IsValid)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"数据检查未通过,请查看日志信息。",
|
||||
"数据检查",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Warning);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
MessageBox.Show(
|
||||
"数据检查通过,可以进行平差计算。",
|
||||
"数据检查",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user