平差逻辑编写
This commit is contained in:
+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