

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace FuHeDaoXian
{
public partial class frmMain : Form
{
CDataRecords dataRecords = new CDataRecords();
public frmMain()
{
InitializeComponent();
}
/// <summary>
/// 初始化表格
/// </summary>
private void InitializeTable(DataTable dataTable)
{
//添加表头
dataTable.Columns.Add("测 站");
dataTable.Columns.Add("目 标");
dataTable.Columns.Add("距离/测站数");
dataTable.Columns.Add("高 差(m)");
dataTable.Columns.Add("高 程");
dataTable.Columns.Add("备 注");
dataGridView1.DataSource = dataTable;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
//表头居中
//dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
//dataGridView1.Columns[i].DefaultCellStyle.Alignment =
// DataGridViewContentAlignment.MiddleCenter;
}
}
//平差计算
private void button1_Click(object sender, EventArgs e)
{
int fh; //高差闭合差
int fhAllow;//允许误差
bool isSuccess;//平差计算是否成功
dataRecords = DateOperator.GetDataFromDataGridView(dataGridView1);
//平差计算
isSuccess = Adjust(dataRecords, out fh, out fhAllow);
//计算后的结果加载到表格中
if (isSuccess)
{
AddResultToDataGridView(dataRecords, dataGridView2, dataGridView3);
string checkMsg = "高差闭合差:";
checkMsg += "±" + fh + "mm\r\n";
checkMsg += "高差闭合差的限差(允许误差): ±" + fhAllow + "mm\r\n";
checkMsg += "因为" + fh + "<" + fhAllow + " 所以,成果合格\r\n";
txtCheckMsg.BackColor = Color.White;
txtCheckMsg.Text = checkMsg;
MessageBox.Show("计算完毕!", "提示");
}
}
程序清单
%-------------------------------
% 水准网平差
%------------------------------
A=sparse(zeros(sd,gd));
for i=1:gd
A(i,be(i))=-1
A(i,en(i))=1
tl(i)=h0(be(i))-h0(en(i))+hd(i)
end
[n,t]=size(A);
r=n-t;
l=tl’;
p=diag(1./dis); %权阵
Delt_X =inv(A'*p*A)*A'*P*l;
h00=h0(nd+1:sd);
h0=h0(1:nd);
Xp=h0+ Delt_X;
V=A* Delt_X -l;
Lp=hd+V;
1-以水准测量观测方程的构成阐述近似高程计算方法
2-以水准测量的观测方程和误差方程的组成阐述误差方程构成的算法
3-说明水准测量观测数据的组织方法
4-阐述水准测量平差计算的过程
5-水准测量平差计算精度评定的内容有哪些?