水准网条件平差程序设计毕业论文
水准网平差报告范文
水准网平差报告范文一、引言水准网是工程测量中非常重要的基础设施,用于测量地面高程的变化情况。
水准网平差是对水准测量数据进行处理和分析,得出精确的高程数值。
本报告旨在介绍对水准网进行的平差工作,并总结平差结果的精度和可靠性。
二、平差方法本次水准网平差采用了最小二乘法进行处理。
首先,根据测量数据建立观测方程,然后利用最小二乘法求解误差方程,得出平差结果。
为了提高平差结果的可靠性,还进行了粗差检查和精度评定。
三、数据处理据调查的水准测量数据包括起始点、中间点和终点的高程数值,并附带观测误差。
根据测量原理和方法,建立起始点到中间点,以及中间点到终点的观测方程。
根据最小二乘法原理,得到误差方程,并运用数值计算方法求解平差结果。
四、平差结果经过数据处理,得到了水准网各点的平差值。
其中,起始点高程为100.00m,通过平差计算得到平差值为99.80m;中间点高程为90.00m,通过平差计算得到平差值为89.65m;终点高程为80.00m,通过平差计算得到平差值为79.90m。
平差结果精度评定表明,各点高程平差值的相对精度在0.01m范围内,满足工程要求。
五、精度评定为了验证平差结果的精度和可靠性,对平差后的观测值进行了精度评定。
采用精度评定公式计算出观测值的标准差,并与测量数据中的观测误差进行比较。
结果表明,平差后的观测值标准差与观测误差值基本一致,验证了平差结果的精度和可靠性。
六、结论通过最小二乘法进行水准网平差,得到了高程的精确数值,满足了工程要求。
经过精度评定,验证了平差结果的精度和可靠性。
本报告的平差结果可作为后续工程的高程标准值使用。
七、建议为了进一步提高水准网平差的精度和可靠性,建议在测量过程中增加观测次数,提高数据的质量和准确性。
同时,对于异常数据和粗差要加强检查,在数据处理时予以排除,以减小误差对平差结果的影响。
建议在平差结果中注明精度评定的方法和结果,以提高平差结果的可信度和可靠性。
并提醒在使用平差结果时注意其精度范围,避免误差传递对工程的影响。
浅议自由网平差与程序设计
V=AX.L .
√
12 假设检 验 的原理 与公 式 .
两期变形点坐标值之差异 , 并不一定反 映点 位的
变 动 , 也可 能 是测 量 误 差 引起 的。 为 了探 明 这 些 差 它 异主要 是误差 干 扰还 是 变 形 造成 的位 移 , 要 进 行 位 需
附加 的最 小范 数条 件 :
X x2=ri an 两期 观 测 数 据 结 果 表1 图 1 水 准 路 线 图
M =N控一NnN Nl 2
Mm ( = MM) 一
O= 一 2 l Ⅳ 4 Ⅳ
Ol=
= ( — Ⅳ N: )
其中( M)为 M M 一 M的广义逆矩阵, 得到方程解如下:
信。
13 拟 稳平差 的原 理与公 式 .
式中 R N a = ( )= < ,a 为奇异阵, ( a) R A tu N a 其凯利 逆不存在 , 得不到唯一解 。秩亏数 d “ t = 一 等于控制 网 的必要起算个数 , 对于水准 网, 必要一个点 的起算高 程, 所以 d 1 = 。本例采用 M tr ae 9 2 ie yr 7 年发表的附 tm 1
中 图分 类 号 :2 7 P0
文 献 标 识 码 : B
浅议 自由网平差与程 序设计
壬娟 , 王东
( 南通市现代测绘工程 院 , 江苏 南通
网平差计算过程 , 并用实例进行水 准测量数据平差处理。
关键词 : 自由 网 平 差 ; 亏 自由 网平 差 ; 稳 平 差 ; B 秩 拟 V
Q x N a S ~一 S x =( a + S ) S
网, 各期都进行 固定基准或拟稳基准的经典平差, 但要 对基准的稳定性进行假设检验。对于后一类型的监测 网, 一般先按重心基准进行秩亏 自由网平差 , 通过观测 数据统计检验分析 , 找出网中相对稳定点 , 用拟稳平差 对监测点的位移进行分析。 设某水准观测 数为 n 必要观测数为 t控制 网中 , ,
高程控制网平差
i
i
i
h h V 改厕厕短的改正数, 代入上式,得:
i
i
i
V1 V2 V3 V4 W 0
W H A h1 h2 h3 h4 H B
1.附合水准路线的条件数和条件方程式组成
观测值5个,待定水准点2 个,所以条件有3个,可 以列出3个条件方程:
h1
H B h1 h2 H A 0
V 1 V 3 V 2 W a 0 V 2 V 4 V 6 W b 0 V 4 V 5 V 3 W c 0
(二)观测值权的确定:
1.各水准路线都进行了往返观测,每公里水准路线的观测中误差为 ,
则m:i
R mi2
1 4n
n i
2 i
i
式中,为测往返测高程不符值,以mm为单位;R为测段长度,以km为单位;n
H A h2 h3 h5 H D 0
H B h1 h3 h4 H C 0
一般以1个已知点为起点,其它已知点为终点,所构成的附合 水准路线为已知点数减1,这样可以列出的条件方程式为已知 水准点个数减1.
2.闭合水准路线的条件数和条件方程式的组成
从一个水准点出发,经过若干水准测段,又回到该 水准点,这样的水准路线称为闭合水准路线。
V 1 V 7 V 8 W b 0
V 2 V 8 V 7 W c 0
V 3 V 5 V 8 W d 0
V 4 V 6 V 5 W e 0
2.闭合水准路线的条件数和条件方程式的组 成
图(c)是四边形状水准网,网中有4个待定点,没有已知点, 在平差计算时,只能确定个待定水准点之间的相互关系,如 果确定一个水准点的高程,就可以确定其他点的高程。因此, 该网的必要观测是3个,观测值总数是6个,又3个多余观测, 可以列出3个条件方程。为了让所列立的条件方程式互相独 立,没个条件方程都要求有一个其他方程没有用到的观测值, 即:
基于MATLAB的水准网平差程序设计与实现
AP A—A pAo f 1 … + ln1 】 o +A pAl- 4 A 一P-A 一
A P =A pl+Af 1 +… +A l l l I o o f P1 p 一f
加入法方程系数矩 阵可逆 , 可得 :
X=一A A) A l ( P 一 p
—
2 最小二乘平差的计 算步骤 . 5 () 文件读取 已知 高程 和观测数据 ;2未知点近似高程计算 ; ) 1 从 ( ) ( 组 3 成法方 程式 ; ) 程系数 阵求 逆 ; ) 平差值计算 ; ) V及单 ( 法方 4 ( 高程 5 ( 残差 6 位 中误差 计算 ; ) 后成果( 平差值 、 (最 7 高程 高差平 差值及它们 的中误 差) 计算及输 出。
基 孑 MA L T AB昀水准 网 蓥程序设计与实项
郑 州市规 划勘 测设 计研 究 院 陈永 星
[ 摘
王
蕾
ቤተ መጻሕፍቲ ባይዱ ;
要] 本文首先讨论 了MA L B在测量平差 中的应 用现状 与在 国内外的研 究动 态, TA 对基 于间接平差的水准 网算 法进行 了分析 , 在
水准网 程序设计
X= X。+ 8 x
24精度估计 . 单位权 中误差为 :
=
其 中 , 为观 测值编 号 ; k h 是观测 高差 ; u 是观测 值 的平 差改正 数 , 叫残差 .,表示 高差两端点 的编号( 也 i 1j 即点号) z 3 分别表示观 ; 、 j 2 测 高差起 点和终点 的高程平差值 , 即平 差中的未知数 。实际平差 时还
±
J
要 引人 参数近似值 , 设 、 为 五 、 } _ 的近似值 , 、 , z 妇 为平差值 与 近似值 的差 , 也叫改 正数 , I= , z + 即z z十 而= ? , 入误差 代
水准网平差程序设计
程序设计中的关键问题
数据处理
如何高效地读取和处理大规模数据, 避免内存占用过多或计算效率低下。
算法优化
如何优化算法以提高程序的运行效率, 减少计算时间和资源消耗。
可扩展性
如何设计程序结构,使其具有良好的 可扩展性,便于未来功能扩展和维护。
健壮性
如何提高程序的健壮性,使其能够处 理异常情况,避免因数据错误或异常 输入导致程序崩溃。
05
程序测试与验证
测试环境与测试数据
测试环境
选择合适的硬件和软件环境,确保测试结果的准确性和可靠性。
测试数据
准备充足的水准网平差数据,包括已知的控制点数据和待处理的观测数据,以覆盖各种实际情况。
测试结果分析
精度分析
01
对测试结果进行精度分析,包括闭合差、中误差等指标,评估
程序的精度水平。
效率分析
06
总结与展望
工作总结
完成了水准网平差程序设 计的需求调研和分析,明 确了程序设计的目的和功 能要求。
实现了水准网平差程序的 基本功能,包括数据导入、 平差计算、结果输出等。
ABCD
完成了程序设计方案的制 定,包括算法选择、数据 结构设计和界面设计等。
对程序进行了全面的测试 和调试,确保程序的稳定 性和正确性。
水准网平差程序设计
• 引言 • 水准网平差基础 • 水准网平差程序设计 • 水准网平差程序实现 • 程序测试与验证 • 总结与展望
目录
01
引言
目的和背景
目的
水准网平差程序设计的主要目的是对水准网进行精度分析和优化,以提高测量 数据的准确性和可靠性。
背景
随着测量技术的发展,水准网在各种工程领域中得到了广泛应用,如建筑、水 利和交通等。然而,由于测量过程中存在误差,需要对水准网进行平差处理, 以消除或减小误差的影响。
水准网的条件平差
目录目录 (1)观测误差 (2)摘要: (2)关键词: (2)引言 (3)1水准测量 (4)1.1水准测量的原理 (4)1.2水准网 (5)2条件平差 (6)2.1衡量精度的指标 (6)2.2条件平差的原理 (8)3水准网的平差 (14)3.1必要观测与多余观测 (14)3.2条件方程 (14)3.3条件平差法方程式 (14)3.4条件平差的精度评定 (15)3.5水准网的条件平差 (18)致 (21)参考文献 (21)观测误差—由观测者、外界环境引起的偶然误差学生: xxx 指导教师:xxx摘要:对一系列带有偶然误差的观测值,采用合理的的方法消除它们间的不符值,得出未知量的最可靠值;以及评定测量成果的精度。
关键词:偶然误差;观测值;精度引言测量工作中,要确定地面点的空间位置,就必须进行高程测量,确定地面点的高程。
几何水准测量是高程测量中最基本、最精密的一种方法。
通过测量仪器,工具等任何手段获得的以数字形式表示的空间信息,即观测量。
然而,测量是一个有变化的过程,受仪器、观测值、外界环境因素的影响,观测的结果与客观上存在的一个能反映其真正大小的数值,即真值(理论值),有一定的差异。
可以说在测量中产生误差是不可避免的。
所以,观测值不能准确得到,在测量上称这种差异为观测误差。
根据其对观测结果影响的性质,可将误差分为系统误差和偶然误差两种。
前者可以通过在观测过程中采取一定的措施和在观测结果中加入改正数,消除或减弱它的影响,使其达到忽略不计的程度。
但是,观测结果中,不可避免地包含了后者,它是不可消除的,但可以选择较好的观测条件或采用适当的数据处理方法减弱它。
现在我们要讨论的就是采用适当的数据处理方法来减弱其对水准测量中的影响。
1 水准测量1.1水准测量的原理1.1.1 水准测量的基本原理水准测量是利用水准仪提供的水平视线在水准尺上读数,直接测定店面上两点的高差,然后根据已知点高程及测得的高差来推算待定点的高程。
水准网的条件平差
云南旅游职业学院专科毕业(设计)论文目录目录 (1)观测误差 (2)摘要: (2)关键词: (2)引言 (3)1水准测量 (4)1.1水准测量的原理 (4)1.2水准网 (5)2条件平差 (6)2.1衡量精度的指标 (6)2.2条件平差的原理 (8)3水准网的平差 (13)3.1必要观测与多余观测 (14)3.2条件方程 (14)3.3条件平差法方程式 (14)3.4条件平差的精度评定 (15)3.5水准网的条件平差 (18)致谢 (21)参考文献 (21)1云南旅游职业学院专科毕业(设计)论文观测误差—由观测者、外界环境引起的偶然误差学生: xxx 指导教师:xxx摘要:对一系列带有偶然误差的观测值,采用合理的的方法消除它们间的不符值,得出未知量的最可靠值;以及评定测量成果的精度。
关键词:偶然误差;观测值;精度2云南旅游职业学院专科毕业(设计)论文引言测量工作中,要确定地面点的空间位置,就必须进行高程测量,确定地面点的高程。
几何水准测量是高程测量中最基本、最精密的一种方法。
通过测量仪器,工具等任何手段获得的以数字形式表示的空间信息,即观测量。
然而,测量是一个有变化的过程,受仪器、观测值、外界环境因素的影响,观测的结果与客观上存在的一个能反映其真正大小的数值,即真值(理论值),有一定的差异。
可以说在测量中产生误差是不可避免的。
所以,观测值不能准确得到,在测量上称这种差异为观测误差。
根据其对观测结果影响的性质,可将误差分为系统误差和偶然误差两种。
前者可以通过在观测过程中采取一定的措施和在观测结果中加入改正数,消除或减弱它的影响,使其达到忽略不计的程度。
但是,观测结果中,不可避免地包含了后者,它是不可消除的,但可以选择较好的观测条件或采用适当的数据处理方法减弱它。
现在我们要讨论的就是采用适当的数据处理方法来减弱其对水准测量中的影响。
3云南旅游职业学院专科毕业(设计)论文41 水准测量1.1 水准测量的原理1.1.1 水准测量的基本原理水准测量是利用水准仪提供的水平视线在水准尺上读数,直接测定店面上两点的高差,然后根据已知点高程及测得的高差来推算待定点的高程。
水准网间接平差程序设计
水准网间接平差程序设计水准网间接平差是测量水准网中各测站的高程值,通过观测值的处理,进行计算来消除观测误差,得到准确的高程数据。
在进行水准网间接平差程序设计时,需要考虑观测值的处理方法、具体的计算步骤、误差的传递和消除等因素。
下面将详细介绍水准网间接平差程序设计的内容。
首先,在水准网间接平差的程序设计中,需要对观测值进行处理。
观测值的处理包括检查观测数据的精度、合理性及完整性,并进行数据的筛选和滤波处理。
在这一步骤中,需要使用适当的统计方法对观测数据进行筛选,剔除异常值和明显错误的数据,保留符合要求的观测值。
接下来,在进行水准网间接平差计算之前,需要对网络进行拟合,拟合过程即将观测值与已知高程值进行比较,并进行拟合计算得到误差。
网络拟合可以使用最小二乘法进行计算,即通过最小化观测值与已知高程值的差的平方和,来求得最优拟合结果。
然后,进行水准网的平差计算。
平差计算是根据测站之间的观测关系,通过一系列的计算公式,将所有观测值联立起来,并通过方程组进行求解,得到最终的平差结果。
在这个过程中,需要进行传递误差的计算,即通过误差传递公式计算各点高程值的精度,以评估平差结果的可靠性。
最后,在完成水准网间接平差计算之后,需要对平差结果进行检查和评估。
检查结果是否符合工程要求和精度要求,评估平差的可靠性。
如果结果不符合要求,需要重新进行观测值的处理和计算。
在进行水准网间接平差程序设计时,还需要注意以下几点:1.数据的输入与输出:程序需要提供方便的数据输入和输出方式,以便用户输入观测数据,并输出平差结果。
同时,需要考虑数据的存储和传输方式,确保数据的安全和完整性。
2.程序的可扩展性:设计程序时应考虑未来可能的数据规模扩大和功能的增加。
通过模块化设计和灵活的架构,使程序能够方便地扩展和添加新的功能。
3.用户友好性:程序应提供简单易用的操作界面,提供友好的用户交互方式。
用户应能够方便地输入观测数据和设置计算参数,并能够直观地查看和分析计算结果。
测绘程序设计—实验八 水准网平差程序设计报告
《测绘程序设计》上机实验报告(Visual C++.Net)班级:测绘0901班学号: 04姓名:代娅琴2012年4月29日实验八平差程序设计基础一、实验目的巩固过程的定义与调用巩固类的创建与使用巩固间接平差模型及平差计算掌握平差程序设计的基本技巧与步骤二、实验内容水准网平差程序设计。
设计一个水准网平差的程序,要求数据从文件中读取,计算部分与界面无关。
1.水准网间接平差模型:2.计算示例:近似高程计算:3.水准网平差计算一般步骤(1)读取观测数据和已知数据;(2)计算未知点高程近似值;(3)列高差观测值误差方程;(4)根据水准路线长度计算高差观测值的权;(5)组成法方程;(6)解法方程,求得未知点高程改正数及平差后高程值;(7)求高差观测值残差及平差后高差观测值;(8)精度评定;(9)输出平差结果。
4.水准网高程近似值计算算法5.输入数据格式示例实验代码:#pragma onceclass LevelControlPoint{public:LevelControlPoint(void);~LevelControlPoint(void);public:CString strName;trName=pstrData[0];m_pKnownPoint[i].strID=pstrData[0];m_pKnownPoint[i].H=_tstof(pstrData[1]);m_pKnownPoint[i].flag=1;trName=pstrData[i];m_pUnknownPoint[i].strID=pstrData[i];m_pUnknownPoint[i].H=0;lag=0;pBackObj=SearchPointUsingID(pstrData[0]);pFrontObj=SearchPointUsingI D(pstrData[1]);ObsValue=_tstof(pstrData[2]);ist=_tstof(pstrData[3]);trID==ID){return &m_pKnownPoint[i];}}return NULL;}trID==ID){return &m_pUnknownPoint[i];}}return NULL;}LevelControlPoint* AdjustLevel::SearchPointUsingID(CString ID){LevelControlPoint* cp;cp=SearchKnownPointUsingID(ID);if(cp==NULL)cp=SearchUnknownPointUsingID(ID);return cp;}void AdjustLevel::ApproHeignt(void)lag!=1){pFrontObj->strID==m_pUnknownPoint[i].strID)&& m_pDhObs[j].cpBackObj->flag==1 ){ =m_pDhObs[i].cpBackObj->H - m_pDhObs[i].ObsValue;*/m_pUnknownPoint[i].H=m_pDhObs[j].cpBackObj->H + m_pDhObs[j].HObsValue;m_pUnknownPoint[i].flag=1;break;}}if(m_pUnknownPoint[i].flag!=1)pBackObj->strID==m_pUnknownPoint[i].strID)&& m_pDhObs[j].cpFrontObj->flag==1 ){ =m_pDhObs[j].cpFrontObj->H-m_pDhObs[j].HObsValue;/* m_pUnknownPoint[i].H=m_pDhObs[i].cpFrontObj->H+m_pDhObs[i].ObsValue;*/ m_pUnknownPoint[i].flag=1;break;}}}}if(i==m_iUnknownPointCount-1)lag!=1)ist);p(i,i)=value;}return p;}void AdjustLevel::FormErrorEquation(CMatrix &B, CMatrix &L){(m_iDhObsCount,m_iUnknownPointCount);(m_iDhObsCount,1);for(int i=0;i<m_iDhObsCount;i++)pBackObj->strID);tmpFront=SearchPointUsingID(m_pDhObs[i].cpFrontObj->strID);trID==tmpBack->strID)trID==tmpFront->strID)bsValue-(m_pDhObs[i].cpBackObj->H-m_pDhObs[i].cpFrontO bj->H);*/L(i,0)=m_pDhObs[i].HObsValue-(m_pDhObs[i].cpFrontObj->H - m_pDhObs[i].cpBackObj->H);(_T("%.3f"),L(i,0));L(i,0)=_tstof(tmp);L(i,0)=L(i,0)*1000;+=x(i,0);xt"));xt"));if()==IDCANCEL) return;CString strFileName=();setlocale(LC_ALL,"");CStdioFile sf;if(!(strFileName, CFile::modeCreate|CFile::modeWrite)) return;(LevleContent);();UpdateData(FALSE);}void CIndircLelveDlg::OnBnClickedComputelevel(){f\r\n"), [i].strID,[i].H);LevleContent+=Temp;}(_T("单位权中误差:%.1f mm\r\n"),r0*1000);LevleContent+=Temp;LevleContent+=_T("未知点高程中误差(mm):\r\n");for(int i=0;i< ;i++){();(_T("%s,%.1f\r\n"),[i].strName,Qx[i]*1000);LevleContent+=Temp;}UpdateData(false);}void CIndircLelveDlg::OnBnClickedSavelevleresult(){xt"));if()==IDCANCEL) return;CString strFileName=();setlocale(LC_ALL,"");CStdioFile sf;if(!(strFileName, CFile::modeCreate|CFile::modeWrite)) return;(LevleContent);();UpdateData(FALSE);}三、实验结果打开文件数据:平差结果:四、实验心得这从实验是我们测绘程序设计的最后一次实验,虽然这个学期我们做了好几次相关的实验,但是我却发现自己学的东西也越来越模糊,感觉很多内容都不理解。
水准网平差程序设计
水准网平差程序设计水准测量是现今城市测量工作中测定高程和对建筑物进行变形观测常用的测量方法。
水准网平差的目的在于依据最小二乘原理,消除观测之间的矛盾和不符值,进而求出点的最后高程及评定精度,编制相应的计算程序,实现水准网的自动平差,才能提高计算效率,然而近似高程的自动推算、闭合差的计算、以及误差方程、法方程的列立解算是程序设计的重点和难点。
标签:水准网平差;高程;程序设计1 数据库的建立1.1 建立建网信息表格建网信息表用于保存建网信息。
1.2 建立观测高差录入表格记录高差和高差起点终点点号和两点之间的距离。
1.3建立已知高程录入表格记录高程用于以后计算。
1.4建立平差成果表用于记录和输出结果。
2 应用软件用户界面的设计本程序共设计了五个窗体,分别为主窗体,建网信息输入窗体,测量高差输入窗体,已知高程输入窗体,平差计算结果显示窗体。
其中主窗体是程序的启动窗体,所有窗体都从主窗体界面弹出。
建网信息输入窗体用于输入项目名称,测量单位,负责人,测量范围,备注信息,并于数据库连接。
测量高差输入窗体用于输入高差观测值和路线长度,并和数据库连接。
已知高程输入窗体用于输入已知高程,并连接数据库。
平差计算结果显示窗体聚集了大部分的算法,包括待定点高程计算,误差方程和法方程的列立,法方程的运算等等,并通过DataGrid控件输出。
3 程序算法的基本思想及部分代码3.1 高程控制网间接平差的步骤(1)计算待定点的近似高程X=(x1,x2 …)T;(2)列出误差方程;(3)组成法方程;(4)解算法方程,求得dX=(dx1,dx2 …)T;(5)求得平差后的高程X=X+dX;(6)精度评定。
3.2 网形的编号及部分变量的定义3.2.1 网形编号为了使编程更加方便,首先约定各高程点编号由小到大按自然数的顺序编码,不可重复也不可缺少。
已知点优先于待定点,靠近已知点的待定点编号要尽量小。
3.2.2 部分变量定义Option Base 1Public IKP As Integer’已知点点个数;Public IUP As Integer’未知点点个数;Public IQ As Integer’总点个数;Public IOH As Integer’高差观测数;Public IZ As Integer’必要观测数。
水准网平差程序设计
水准网平差程序设计水准网平差是测绘工程中的一项重要工作,它涉及到对水准测量数据进行处理,以达到测量精度的要求。
水准网平差程序设计通常需要考虑以下几个方面:1. 程序设计的目的和意义水准网平差程序设计的主要目的是通过计算机软件对水准测量数据进行自动化处理,提高数据处理的效率和准确性。
这对于大型工程测量、城市基础设施建设、土地管理等领域具有重要意义。
2. 程序设计的基本要求- 准确性:程序需要能够准确地处理水准测量数据,减少人为误差。
- 稳定性:程序在运行过程中应具有较高的稳定性,避免因系统崩溃等原因导致数据丢失。
- 用户友好性:程序应具备良好的用户界面,使得非专业用户也能方便地使用。
- 扩展性:程序设计应考虑未来可能的功能扩展,以适应不断变化的测量需求。
3. 程序设计的理论基础水准网平差程序设计的理论基础主要包括:- 水准测量原理:了解水准测量的基本原理,包括视线高、转点高、已知点高程等概念。
- 误差理论:掌握测量误差的来源、分类及其对测量结果的影响。
- 最小二乘法:水准网平差通常采用最小二乘法进行数据处理,需要理解其数学原理和应用方法。
4. 程序设计的关键技术- 数据输入:设计高效的数据输入界面,支持多种数据格式的导入。
- 数据处理:实现数据的自动校验、筛选和处理功能。
- 平差计算:编写平差计算算法,包括闭合差计算、误差分配等。
- 结果输出:设计结果输出模块,支持多种输出格式,如文本、图表等。
5. 程序设计的实现步骤1. 需求分析:明确程序设计的目标和用户需求。
2. 系统设计:设计程序的整体架构,包括模块划分、数据流等。
3. 编码实现:根据设计文档进行编码,实现各个功能模块。
4. 测试验证:对程序进行测试,确保其准确性和稳定性。
5. 用户手册编写:编写用户手册,指导用户如何使用程序。
6. 程序设计的注意事项- 数据安全:确保程序在处理数据时的安全性,防止数据泄露。
- 异常处理:程序应能妥善处理各种异常情况,如数据格式错误、计算溢出等。
实验一 利用平差易软件和程序设计语言完成水准网平差
实验一利用平差易软件和程序设计语言完成水准网平差一、实验目的1.掌握水准平差的基本原理。
2.掌握程序语言设计的基础。
3. 掌握平差易软件的基本功能。
4. 能够独立完成水准网观测数据的平差处理过程二、实验数据如图1所示水准网,有1个已知点,4个未知点,8个测段。
各已知数据及观测值见下表1,已知点高程H1=98m 。
图1表1.高差观测值(m)(3)求各待定点的高程;2号点、3号点、4号点的高程中误差。
三、控制网平差报告[控制网概况]1.本成果为按[平面]网处理的平差成果计算软件:南方平差易2002网名:xj 计算日期:2016/6/29 13:36观测人:xujiang 记录人:xujaing计算者:xujaing 测量单位:m备注:20144159高程控制网等级:等外水准2.控制网中:方向方位平距XY点待定8 5固定每公里高差中误差= 20.11 (mm)[距离观测成果表]测站照准距离(m) 改正数(m) 平差后值(m) 方位角(dms) 1 5 1380.0000 0.0000 1380.0000 360.0000003 1420.0000 0.0000 1420.0000 360.0000002 1810.0000 0.0000 1810.0000 360.0000002 3 940.0000 0.0000 940.0000 360.0000004 1760.0000 0.0000 1760.0000 360.0000003 4 1400.0000 0.0000 1400.0000 360.0000005 990.0000 0.0000 990.0000 360.000000 4 5 1350.0000 0.0000 1350.0000 360.000000[高差观测成果表]测站照准高差(m) 改正数(m) 平差后值(m) 备注1 5 3.1020 -0.0174 3.08463 3.5200 0.0335 3.55352 2.5420 -0.0199 2.52212 3 1.0340 -0.0025 1.03154 -1.5540 -0.0147 -1.56873 4 -2.6110 0.0108 -2.60025 -0.4820 0.0131 -0.46894 5 2.1320 -0.0008 2.1312[平面点位误差表]点名长轴(m) 短轴(m) 长轴方位dms 点位中误差m高程中误差m2 0.01813 0.01614 0.02015 0.0171[控制点成果表]点名X(m) Y(m) H(m) 备注1 0.0000 0.0000 98.0000 固定点2 0.0000 0.0000 100.54203 0.0000 0.0000 101.52004 0.0000 0.0000 98.98805 0.0000 0.0000 101.1020。
水准 网 平 差 报 告
几何条件:闭合水准
路径:[10-12-1-1299-1309-11]
高差闭合差=8.0(mm),限差=11.0(mm)
路线长度=0.834(km)
几何条件:闭合水准
路径:[2-9-10-12-1]
高差闭合差=-7.0(mm),限差=11.6(mm)
路线长度=0.928(km)
几何条件:闭合水准
路径:[7-8-3-2-9]
高差闭合差=-7.0(mm),限差=11.2(mm)
路线长度=0.872(km)
几何条件:闭合水准
路径:[5-6-7-8-3-4]
高差闭合差=4.0(mm),限差=11.9(mm)
路线长度=0.980(km)
[方向观测成果表]
测站
照准
方向值(dms)
改正数(s)
平差后值(dms)
9
0.0065
1591.7864
7
0.0013
1.1653
0.0077
1592.9517
9
0.0065
1591.7864
2
-0.0046
-1.1426
0.0066
1590.6438
9
0.0065
1591.7864
10
0.0017
-1.0643
0.0052
1590.7221
10
0.0052
1590.7221
备注
1309
11
0.000000
1309
1299
172.054600
-619546.00
360.000000
1299
1309
0.000000
1299
基于VB环境下水准网平差程序设计研究
则 如果有 托个观 测值 , 总的误 差方 程 为 : 则
T r
一
^
Tr
一
T
/ r 、
分别 是 已知 观 测 数 据 输 人 、 测 数 据 信 息 提 取 、 观 未 知点 近 似 高 程 计 算 、 差 方 程 系数 矩 阵 A 和 L 生 误
成、 求解 未知参 数值 。
“
式 中
下水准 网平差程序设计研究
未知点平差后的高程最或然值 。
1 3
2 1 已知数 据输 入和 观测 数据 信 息提取 . 已知数 据按 照 一 定 的格 式 编辑 在 文本 文 档 中 , 按 行读 取到 程 序 中 , 据 输 入 后 , 序 首 先 对 已知 数 程
其 中为 每 段 高 差 的水 平 距 离
。
因 此 只要 确 定
出矩 阵 A 和矩 阵 L 就 可求 出高 程改 正值 , 而求 出 进
如果 , 点都 为未 知点 , 两 则误 差 方程 为 :
未 知点 高程 的最 或然值 。
+ 一 一 + £
,
() 2 水 准网间接平差程 序设计思路 4
高差 组成 的 误 差 方 程 的 系 数 组 成 矩 阵 A。矩 阵 L
2
A
C
3 5 .2
1 . 42
中 的元 素 则 为 相 应 的终 点 近 似 高 程 或 减 去 起 点 的 相应 近似 高程 或 已知 高程 以及 观测 高差 的值 。
2 4 求解未 知 点高程 改正值 .
3
4
5
A
B
B
浅议同一水准网条件平差与间接平差处理之异同
浅议同一水准网条件平差与间接平差处理之异同马自军【摘要】测量平差是据最小二秉法原理,正确地消除各观测值之间的矛盾,合理分配误差,以求出观测值的最或是值并评定测量成果的精度.据不同条件下的测量问题,测量平差的方法也不尽相同.本论述试图以某水准网为例,分别采用条件平差、间接平差对各观测值最或是值进行计算,揭示两种平差方法对同一问题处理过程及结果之异同,以便引导学生在以后的测量工作中针对具体观测条件对平差方法有准确、灵活的选定.【期刊名称】《甘肃科技纵横》【年(卷),期】2011(040)003【总页数】3页(P161-162,181)【关键词】条件平差;间接平差;最或是值【作者】马自军【作者单位】兰州铁路技师学院,甘肃兰州730050【正文语种】中文如图1所示某闭合环水准网,A点是已知高程点:HA=153.768m(假设无误差),各点间的高差观测值分别为:h1=11.105m,h2=-5.728m,h3=-2.090m,h4=-13.215m,h5=16.857m,h6=-3.622m各水准路线长度分别为s1=3.4km,s2=4.0km,s3=3.8km,s4=5.0km,s5=5.3km,s6=5.5km现分别采用条件平差和间接平差计算B、C、D点高程最或是值。
图1 闭合环水准网1 条件平差条件平差是据各观测值改正数应满足的几何条件方程,采用最小二乘法原理消除因多余观测而产生的不符值从而求得各观测值的最或是值的平差方法。
(1)已知:n=6,t=3则r=n-t=3,选定1km观测高差为单位权观测值。
(2)设有:n个观测值为:L1、L 2……L n平差值为:L 1/、L2/ ……L n/相应的权为:P1、P2……Pn条件方程的常数项为:a0、b0……r0观测值的改正数为:v1、v2......vn条件方程的闭合差为:wa、wb……wr则:各条件方程系数=各观测值:条件方程改正数:条件方程闭合差:条件方程常数项:据得条件方程为:(3)依上述各条件方程据:得法方程:据:令则法方程为:NK+W=0由:K=N-1W解得:ka=0.433 kb=-2.336 kc=-1.783(4)通过改正数方程计算各测段高差改正数:由或:vi=1′pi(aika+bikb+cikc)得:v1=10mm v2=-2mm v3=-8mmv4=2mm v5=-12mm v6=-10mm(5)计算各测段高差最或是值:由:hi′=hi+vih1′=h1+v1=+11.115m h2′=h2+v2=-5.730mh3′=h3+v3=-2.098m h4′=h4+v4=-13.213mh5′=h5+v5=+16.845m h6′=h6+v6=-3.632m (6)把各测段高差最或是值hi/分别代人闭合环检核: H1′-h3′+h4′=0H1′-h2′-h5′=0H2′-h3′-h6′=0结论:各测段高差最或是值计算无误。
测绘程序设计—实验八 水准网平差程序设计报告
《测绘程序设计()》之袁州冬雪创作上机实验陈述(Visual C++.Net)班级:测绘0901班学号: 0405090204姓名:代娅琴2012年4月29日实验八平差程序设计基础一、实验目标•巩固过程的定义与调用•巩固类的创建与使用•巩固间接平差模子及平差计算•掌握平差程序设计的基本技巧与步调二、实验内容水准网平差程序设计.设计一个水准网平差的程序,要求数据从文件中读取,计算部分与界面无关.1.水准网间接平差模子:2.计算示例:近似高程计算:3.水准网平差计算一般步调(1)读取观测数据和已知数据;(2)计算未知点高程近似值;(3)列高差观测值误差方程;(4)根据水准道路长度计算高差观测值的权;(5)组成法方程;(6)解法方程,求得未知点高程改正数及平差后高程值;(7)求高差观测值残差及平差后高差观测值;(8)精度评定;(9)输出平差成果.4.水准网高程近似值计算算法5.输入数据格式示例实验代码:#pragmaonceclass LevelControlPoint{public:LevelControlPoint(void);~LevelControlPoint(void);public:CString strName;//点名CString strID;//点号float H;bool flag;//标识表记标帜是否已经计算出近似高程值,若计算出则为,否则为};class CDhObs{public:CDhObs(void);~CDhObs(void);public:LevelControlPoint* cpBackObj;//后视点LevelControlPoint* cpFrontObj;//前视点double ObsValue;//高差值double Dist;//测站的间隔};#include"StdAfx.h"#include"LevelControlPoint.h"LevelControlPoint::LevelControlPoint(void){strName=_T("");strID=_T("");H=0;flag=0;}LevelControlPoint::~LevelControlPoint(void){}CDhObs::CDhObs(void){}CDhObs::~CDhObs(void){}#pragmaonce#include"LevelControlPoint.h"#include"Matrix.h"class AdjustLevel{public:AdjustLevel(void);~AdjustLevel(void);public:LevelControlPoint* m_pKnownPoint;//已知点数组int m_iKnownPointCount;//已知点个数LevelControlPoint* m_pUnknownPoint;//未知点数组int m_iUnknownPointCount;//未知点个数CDhObs* m_pDhObs;//高差观测值数组int m_iDhObsCount;//高差观测值个数public:void SetKnownPointSize(int size);//创建大小为size的已知点数组void SetUnkonwnPointSize(int size);//创建大小为size的未知点数组void SetDhObsSize(int size);//创建大小为size的观测值数组bool LoadObsData(const CString& strFile);//读入观测文件CString* SplitString(CString str, char split, int& iSubStrs);void ApproHeignt(void);//计算近似值private:LevelControlPoint* SearchKnownPointUsingID(CString ID);LevelControlPoint* SearchUnknownPointUsingID(CString ID);LevelControlPoint* SearchPointUsingID(CString ID);CMatrix LevleWeight(void);//计算权矩阵public:void FormErrorEquation(CMatrix &B, CMatrix &L);//组成误差方程void EquationCompute(CMatrix &x);//计算法方程void Accuracy_Assessment(double &r0,CMatrix &Qxx);//精度评定void CompAdjust(double &r0,CMatrix Qx[]);};#include"StdAfx.h"#include"AdjustLevel.h"#include<locale.h>#include"LevelControlPoint.h"#include"math.h"AdjustLevel::AdjustLevel(void){m_pKnownPoint=NULL;//已知点数组m_iKnownPointCount=0;//已知点个数m_pUnknownPoint=NULL;//未知点数组m_iUnknownPointCount=0;//未知点个数m_pDhObs=NULL;//高差观测值数组m_iDhObsCount=0;//高差观测值个数}AdjustLevel::~AdjustLevel(void){if(m_pKnownPoint!=NULL){delete[] m_pKnownPoint;m_pKnownPoint=NULL;}if(m_pUnknownPoint!=NULL){delete[] m_pUnknownPoint;m_pUnknownPoint=NULL;}if(m_pDhObs!=NULL){delete[] m_pDhObs;m_pDhObs=NULL;}}void AdjustLevel::SetKnownPointSize(int size){m_pKnownPoint=new LevelControlPoint[size];//创建动态指针m_iKnownPointCount=size;}void AdjustLevel::SetUnkonwnPointSize(int size){m_pUnknownPoint=new LevelControlPoint[size];m_iUnknownPointCount=size;}void AdjustLevel::SetDhObsSize(int size){m_pDhObs=new CDhObs[size];m_iDhObsCount=size;//高差观测值个数}bool AdjustLevel::LoadObsData(const CString& strFile){CStdioFile sf;if(!sf.Open(strFile,CFile::modeRead)) returnfalse;//创建并打开文件对象CString strLine;bool bEOF=sf.ReadString(strLine);//读取第一行,即已知点的数目SetKnownPointSize(_ttoi(strLine));//根据已知点的数目,创建已知点数组;int n=0;for(int i=0;i<m_iKnownPointCount;i++)//读取已知点的点名和高程值{sf.ReadString(strLine);CString *pstrData=SplitString(strLine,',',n);m_pKnownPoint[i].strName=pstrData[0];m_pKnownPoint[i].strID=pstrData[0];m_pKnownPoint[i].H=_tstof(pstrData[1]);m_pKnownPoint[i].flag=1;//已知点不必平差,故将其的flag设置为delete[] pstrData;pstrData=NULL;}sf.ReadString(strLine);//读取未知点的个数SetUnkonwnPointSize(_ttoi(strLine));//根据未知点的个数创建未知点数组sf.ReadString(strLine);//读取未知点的点名CString *pstrData=SplitString(strLine,',',n);for(int i=0;i<m_iUnknownPointCount;i++)//将未知点的点名放入未知点数组{m_pUnknownPoint[i].strName=pstrData[i];m_pUnknownPoint[i].strID=pstrData[i];m_pUnknownPoint[i].H=0;//未知点的高程值设置为m_pUnknownPoint[i].flag=0;//还没有求得近似高程,故其flag设置为}if(pstrData!=NULL){delete[] pstrData;pstrData=NULL;}sf.ReadString(strLine);//读取观测值的个数SetDhObsSize(_ttoi(strLine));//依照观测值的大小,创建观测值数组for(int i=0;i<m_iDhObsCount;i++)//分行读取观测值的数据,将其存入观测值数组{sf.ReadString(strLine);CString *pstrData=SplitString(strLine,',',n);m_pDhObs[i].cpBackObj=SearchPointUsingID(pstrData[0]);//后视点m_pDhObs[i].cpFrontObj=SearchPointUsingID(pstrData[1]);//前视点m_pDhObs[i].HObsValue=_tstof(pstrData[2]);//高差观测值m_pDhObs[i].Dist=_tstof(pstrData[3]);//间隔观测值delete[] pstrData;pstrData=NULL;}sf.Close();return 1;}CString* AdjustLevel::SplitString(CString str, char split, int& iSubStrs){int iPos = 0; //分割符位置int iNums = 0; //分割符的总数CString strTemp = str;CString strRight;//先计算子字符串的数量while (iPos != -1){iPos = strTemp.Find(split);if (iPos == -1){break;}strRight = strTemp.Mid(iPos + 1, str.GetLength()); strTemp = strRight;iNums++;}if (iNums == 0) //没有找到分割符{//子字符串数就是字符串自己iSubStrs = 1;return NULL;}//子字符串数组iSubStrs = iNums + 1; //子串的数量= 分割符数量+ 1CString* pStrSplit;pStrSplit = new CString[iSubStrs];strTemp = str;CString strLeft;for (int i = 0; i < iNums; i++){iPos = strTemp.Find(split);//左子串strLeft = strTemp.Left(iPos);//右子串strRight = strTemp.Mid(iPos + 1, strTemp.GetLength()); strTemp = strRight;pStrSplit[i] = strLeft;}pStrSplit[iNums] = strTemp;return pStrSplit;}//LevelControlPoint*AdjustLevel::SearchKnownPointUsingID(CString ID){for(int i=0;i<m_iKnownPointCount;i++){if(m_pKnownPoint[i].strID==ID){return &m_pKnownPoint[i];}}return NULL;}//LevelControlPoint*AdjustLevel::SearchUnknownPointUsingID(CString ID){for(int i=0;i<m_iUnknownPointCount;i++){if(m_pUnknownPoint[i].strID==ID){return &m_pUnknownPoint[i];}}return NULL;}LevelControlPoint* AdjustLevel::SearchPointUsingID(CString ID) {LevelControlPoint* cp;cp=SearchKnownPointUsingID(ID);if(cp==NULL)cp=SearchUnknownPointUsingID(ID);return cp;}void AdjustLevel::ApproHeignt(void)//用于计算高程近似值的函数{for(int i=0;i<m_iUnknownPointCount;i++)//计算未知点高程值{if(m_pUnknownPoint[i].flag!=1){//先在未知点作为观测值的前视点的情况for(int j=0;j<m_iDhObsCount;j++)//从观测数组里找与未知点有关联的点{//如果观测值的前视点是未知点且其后视点已经有高程值if((m_pDhObs[j].cpFrontObj->strID==m_pUnknownPoint[i].strID)&& m_pDhObs[j].cpBackObj->flag==1 ){//前视点=后视点-高差/*m_pUnknownPoint[i].H=m_pDhObs[i].cpBackObj->H -m_pDhObs[i].ObsValue;*/m_pUnknownPoint[i].H=m_pDhObs[j].cpBackObj->H +m_pDhObs[j].HObsValue;m_pUnknownPoint[i].flag=1;break;}}if(m_pUnknownPoint[i].flag!=1)//如果颠末上一步调未知点仍没有计算出近似值{for(int j=0;j<m_iDhObsCount;j++)//从观测数组里找与未知点有关联的点{//如果观测值的后视点是未知点且其前视点已经有高程值if((m_pDhObs[j].cpBackObj->strID==m_pUnknownPoint[i].strID)&& m_pDhObs[j].cpFrontObj->flag==1 ){ //后视点=前视点+高差m_pUnknownPoint[i].H=m_pDhObs[j].cpFrontObj->H-m_pDhObs[j].HObsValue;/* m_pUnknownPoint[i].H=m_pDhObs[i].cpFrontObj->H+m_pDhObs[i].ObsValue;*/m_pUnknownPoint[i].flag=1;break;}}}}if(i==m_iUnknownPointCount-1)//如果已经计算到最后一个未知点{for(int a=0;a<m_iUnknownPointCount;a++){if(m_pUnknownPoint[i].flag!=1)//只要有一个未知点的近似高程直没有计算{ //则要重新停止上面的步调直到所有的未知点的近似高程值都计算出i=-1;break;}}}}}CMatrix AdjustLevel::LevleWeight(void){CMatrix p(m_iDhObsCount,m_iDhObsCount);p.Unit();double value;for(int i=0;i<m_iDhObsCount;i++){value=(1.0/m_pDhObs[i].Dist);p(i,i)=value;}return p;}void AdjustLevel::FormErrorEquation(CMatrix &B, CMatrix &L) {B.SetSize(m_iDhObsCount,m_iUnknownPointCount);L.SetSize(m_iDhObsCount,1);for(int i=0;i<m_iDhObsCount;i++)//建立B系数阵{LevelControlPoint *tmpBack=NULL,*tmpFront=NULL;tmpBack=SearchPointUsingID(m_pDhObs[i].cpBackObj->strID);tmpFront=SearchPointUsingID(m_pDhObs[i].cpFrontObj->strID);//找到与第i个观测值有关的未知点tmpBack->strID;for(int j=0;j<m_iUnknownPointCount;j++){if(m_pUnknownPoint[j].strID==tmpBack->strID)//如果是后视点则前面的系数为-1{ B(i,j)=-1;continue;}if(m_pUnknownPoint[j].strID==tmpFront->strID)//如果是前视点则前面的系数为{B(i,j)=1;}}}//建立L矩阵CString tmp;for(int i=0;i<m_iDhObsCount;i++){//l=高差观测值-(后视近似值-前视近似值)/*L(i,0)=m_pDhObs[i].ObsValue-(m_pDhObs[i].cpBackObj->H-m_pDhObs[i].cpFrontObj->H);*/L(i,0)=m_pDhObs[i].HObsValue-(m_pDhObs[i].cpFrontObj->H - m_pDhObs[i].cpBackObj->H);tmp.Format(_T("%.3f"),L(i,0));L(i,0)=_tstof(tmp);L(i,0)=L(i,0)*1000;//将单位化为mm}}void AdjustLevel::EquationCompute(CMatrix &x)//计算法方程CMatrix P,B,l;P=LevleWeight(); //P为权矩阵FormErrorEquation(B,l);ApproHeignt();CMatrix BT(m_iUnknownPointCount,m_iDhObsCount);BT=~B; //B的转置矩阵CMatrix NBB(m_iUnknownPointCount,m_iUnknownPointCount);NBB=BT*P*B;CMatrix NBBl=NBB.Inv();x=NBBl*BT*P*l;for(int i=0;i<m_iUnknownPointCount;i++){m_pUnknownPoint[i].H+=x(i,0);//未知点高程值=近似值+改正数}}void AdjustLevel::Accuracy_Assessment(double &r0,CMatrix&Qxx)//精度评定{CMatrix B,l,P,x;P=LevleWeight(); //P为权矩阵FormErrorEquation(B,l);EquationCompute(x);CMatrix v(m_iDhObsCount,1);v=B*x-l;CMatrix vT(1,m_iDhObsCount);vT=~v;CMatrix r/*(1,l)*/;r=vT*P*v;r0=sqrt(r(0,0)/(m_iDhObsCount-m_iUnknownPointCount));//单位权中误差Qxx.SetSize(m_iUnknownPointCount,m_iUnknownPointCount);CMatrix BT(m_iUnknownPointCount,m_iDhObsCount);BT=~B;CMatrix NBB(m_iUnknownPointCount,m_iUnknownPointCount);NBB=BT*P*B;Qxx=NBB.Inv();void AdjustLevel::CompAdjust(double &r0,CMatrix Qx[]){ApproHeignt();//计算未知点的近似高程值而且存入数组CMatrix P(m_iDhObsCount,m_iDhObsCount);P=LevleWeight();//p为权矩阵CMatrix B,L;CMatrix x,Qxx;FormErrorEquation(B,L);//组成误差方程,B为系数矩阵,l为常数项EquationCompute(x);//计算法方程Accuracy_Assessment(r0,Qxx);//精度评定for(int i=0;i<m_iUnknownPointCount;i++)//未知点高程中误差{Qx[i]=sqrt(Qxx(i,i))*r0;}}#include"Matrix.h"#include"locale.h"#include"LevelControlPoint.h"#include"AdjustLevel.h"AdjustLevel LevelComput;CString* SplitString(CString str, char split, int& iSubStrs) {int iPos = 0; //分割符位置int iNums = 0; //分割符的总数CString strTemp = str;CString strRight;//先计算子字符串的数量while (iPos != -1){iPos = strTemp.Find(split);if (iPos == -1){break;}strRight = strTemp.Mid(iPos + 1, str.GetLength());strTemp = strRight;iNums++;}if (iNums == 0) //没有找到分割符{//子字符串数就是字符串自己iSubStrs = 1;return NULL;}//子字符串数组iSubStrs = iNums + 1; //子串的数量= 分割符数量+ 1CString* pStrSplit;pStrSplit = new CString[iSubStrs];strTemp = str;CString strLeft;for (int i = 0; i < iNums; i++){iPos = strTemp.Find(split);//左子串strLeft = strTemp.Left(iPos);//右子串strRight = strTemp.Mid(iPos + 1, strTemp.GetLength()); strTemp = strRight;pStrSplit[i] = strLeft;}pStrSplit[iNums] = strTemp;return pStrSplit;}void CIndircLelveDlg::OnBnClickedOpendatafile(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CFileDialogdlgFile(TRUE,_T("txt"),NULL,OFN_ALLOWMULTISELECT|OFN_EXPLORER, _T("(文本文件)|*.txt"));//创建文件对话框if(dlgFile.DoModal()==IDCANCEL) return;//如果选择取消按钮则返回CString strFileName=dlgFile.GetPathName();//打开获取文件文件名setlocale(LC_ALL,""); //设置语言环境CStdioFile sf;if(!sf.Open(strFileName, CFile::modeRead)) return;InputContent.Empty();//清空字符串str_openContent中的内容CString strLine;BOOL bEOF=sf.ReadString(strLine);//读取第一行数据while(bEOF)//开端读取顶点数据{bEOF=sf.ReadString(strLine);if(bEOF)InputContent+=strLine+_T("\r\n");}sf.Close();UpdateData(FALSE);}void CIndircLelveDlg::OnBnClickedSavedata(){// TODO: 在此添加控件通知处理程序代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科生毕业设计说明书(毕业论文)题目:水准网条件平差程序设计学生姓名:房新明学号:1072143138专业:测绘工程班级:测绘10-1班指导教师:郭义水准网条件平差程序设计摘要近年来,随着我国经济的快速发展,国家大力于投资各种铁路建设和公路建设,测绘工程的运用也越来越突出。
以水准网布设的高程控制网在各类工程中随处可见。
但观测到的数据存在着各种各样的误差,这就需要我们通过简易平差或严密平差来对数据进行处理,从而使数据能够达到工程的预期精度。
本文主要研究如何解决绘图软件行业标准的网络数据处理问题。
从水准网的结构,平差基本原理、调整模型,基本方程及其解,并对法方程组成,求解,平差值的计算及其精度评定作了介绍。
和Visual studio6.0编程软件的利用,利用C语言是程序设计的相干事情。
在今后的测量工作中,可结合实际平差方案进行平差计算。
关键词:平差模型;精度评定;程序设计Leveling Network Adjustment Program DesignAbstractIn recent years, with China's rapid economic development, the state vigorously investment in all kinds of railway construction and road construction, the use of mapping project is also more and more prominent. In order to control the network level network in various engineering in everywhere. But the observed data exist various error, this needs us through simple adjustment or rigorous adjustment for data processing, so that data to achieve the desired precision engineering.This paper mainly studies how to solve the problem of mapping software industry standard network data processing. From the structure adjustment of leveling network, the basic principle, adjustment model, basic equation and its solution, and the composition of the solution of equations, adjustment calculation and precision evaluation, gross error elimination are introduced as well. And the use of Visual Studio6.0 programming software, using C programming language is related to program design. The measurement work in the future, can be combined with the actual adjustment adjustment calculation.Key words: adjustment model;the accuracy assessment;program design目录摘要 (I)Abstract .......................................................................................................................... I I 第一章绪论 (1)1.1研究背景及意义 (1)1.2国内外研究现状 (2)1.3本文研究的具体内容 (2)第二章条件平差数学模型 (3)2.1条件平差模型 (3)2.1.2测角网条件方程 (6)2.1.3测边网条件方程 (8)2.1.4以坐标为观测值的条件方程 (11)2.2精度评定 (13)2.3条件平差的计算步骤 (17)第三章水准网的设计 (18)3.1水准测量 (18)3.1.1水准网的基本概念 (18)3.2水准网的布设 (19)3.2.1国家水准网的布设 (19)3.2.2水准网的布设要求 (20)第四章C语言介绍 (21)4.1C语言的基本概念 (21)4.2C语言的介绍 (22)4.2.1C语言的特点 (22)第五章程序设计 (24)5.1水准网条件平差和测角网条件平差实例 (24)5.1.1水准网条件平差 (24)5.1.2测角网条件平差 (27)5.2程序代码 (32)参考文献 (57)附录A:外文文献 (58)附录B:中文译文 (70)致谢 (76)第一章绪论1.1研究背景及意义施工测量工作是非常基本的,重要环节。
对于建设工程的验收,项目具有指导性的,是不可替代的作用。
测绘科学与技术广泛的应用于地图制图学与数字数据生产、城乡规划与发展、资源勘查与开发、交通运输、水利建设、国土资源调查、环境监测、科学实验、灾害监测与预报、抢险救灾和国防建设等主要领域,为国民经济建设和国家建设提供基础的空间位置信息和必要的图件资料。
因此,重视测绘行业,以增加建设项目,同时有助于测绘行业增加的需求,可以带来测绘行业快速的发展。
科学技术的成长给测绘带来了新的成长机遇,尤其是GPS技术的成长给测绘领域带来了革命性的功效,已经替代了许多传统的测量方法。
相比传统的测量方法,其测量的精度提高了很多。
无论科学技术发展到如何的程度,其测量的精度有多高,但是其处理数据的方法和过程一般是不会变得。
对于不同的测量任务,我们需要布设相应的控制网来满足其精度需求,平面控制网、高程控制网、GPS控制网都属于测量控制网。
各高程控制点、水准路线一起放入水准路线网络,相邻的水准点之间的高度差经由水准测量算出,还应该考虑到有关地球因素的影响,例如地球外部引力,地球自身的非均质性。
对所测高差进行改正,尔后经过统一的严密平差,确定出网中各水准点的高程。
测量任务的最主要的方面是控制网的精度,野外数据的采集能否满足工程建设的具体要求,平差数据的处理尤为重要,并且是指导现场测量作业的关键。
尤其是计算机技术的日益发展和以及矩阵代数、概率论等数学方面知识在严密平差中的运用,使测量平差的理论更加完善,使测量平差从经典平差理论到现在的近代平差理论,推动了测量平差理论知识的发展,使经典平差理论的数学模型得到了扩展,提出了一些近代平差数据处理的新方法,如果相关平差,秩亏平差方法,后验估计的随机模型,有偏估计等。
近年来,导线的平差程序出现很多,这些程序都有其优点和缺点。
近期开发的平差程序有了很大的成长和进步,智能化自动化解算水平在稳步提高,功能在日趋完善,但或多或少的存在着些问题,功能仍然需要进一步的提升。
利用现代科学技术手段结合测量数据处理的专业知识,编写新的水准网条件平差软件,实现水准网条件平差的自动化和快捷化,大大提高工作上的效率,降低了数据处理人员对平差专业知识的依赖,同时也为测绘工作者带来了极大的方便。
1.2国内外研究现状测绘行业软件的成长是紧跟着计算机编程技术的成长的,测量的数据处理已不再人工化,而是向智能化和数字化成长,而相应的测量类软件不足为奇。
通过调查和市场研究,国内外大型测绘仪器公司都研发了测绘领域的相应的数据处理软件,对一些科研实力雄厚较强的大学和测绘单位都有适合自己的一套软件以及一些用于实际生产的数据处理软件,但不同的软件功能不同,且质量不一,基本只能满足测量生产任务的需要,但对于一些比较深层次的数据处理功能并不能很好的完成,或者有错误的,不合理的地方,如各种各样的问题,如数据输入复杂,功能不完善,软件界面友好的缺乏,而且软件开发商不是测量数据处理的专业人士,专业水平是值得商榷的,平差算法的具体使用不明确,平差计算精度是令人怀疑的,而且各个平差程序的平差结果都是不一样的。
目前应用使用最普遍的平差软件南方平差易、清华三维、科傻适普数据处理软件是目前应用的最普遍的平差软件,但这些软件或多或少的存在着一些问题。
国外的平差软件数量比较巨大,涵盖内容广泛,但是软件的操作不易被掌握,对于国内用户的现实需求并不是很适用,国外软件的使用和测量数据处理的具体流程,和国内的解决方式也有很大的差异,专门针对国内的测量控制网平差软件市场上目前还没有。
1.3本文研究的具体内容结合现有的理论,本文对平整算法的软件设计与实现研究,包括:(1)数据结构的分析和描述;(2)平差数据数学模型;(3)最小二乘平差,自由网平差,拟稳平差,其数学算法的计算机实现方法;(4)水准网的布设;(5)平差结果的图形显示。
第二章 条件平差数学模型测量数据的函数模型一般分为几何模型和物理模型或几何、物理综合模型。
属于几何模型的有水准网、测角网、边角网、GPS 控制网、测边网等所建立的控制网数。
与时间相关,考虑速度,加速度,位移,应变和测量的描述和未知的模型之间的关系,为物理模型。
函数模型为线性模型和非线性模型的两种。
测量平差通常是基于线性模型。
测量平差通常是基于线性模型的。
当函数模型为非线性函数时,总是用泰勒公式将其转化成线性函数。
2.1 条件平差模型当水准网采用条件平差进行计算时,需要知道部分已知高程的水准点,需要知道相邻水准点间的距离和高差。
有了这些的基本条件以后,根据题目就可以确定出条件方程的必要观测数,从而可以确定出条件方程的多余观测数即可列出条件方程的个数。
2.1.1 平差原理在测量工作中,为了发现错误和提高测量结果的准确性,经常有多余的观察,从而产生平差问题,如果一个几何模型中有r 个多余观测,就产生r 个条件方程,以条件方程为函数模型的平差方法,就是条件平差。
条件平差的数学模型为0A W ∆+=(2-1)随机模型为22100nnnnnnD Q P δδ-==(2-2)条件方程个数等于多余观测数r ,n 为观测值总个数,t 为必要观测数,存在关系: r n t =-(2-3)由于r t <,从(2-1)式并不可以算出∆的唯一解,但可按最小二乘原理(min T V PV =),可以求出∆的最可能值V ,从而可以计算出观测值L 的最可能值ˆL (又称平差值)ˆLL V =+ (2-4)将(2-1)式中的∆改写成其估值(最或然值)V ,条件方程变为1110rn n r r AV W +=(2-5)条件平差是为了满足r 个条件方程的状态求解条件下的最小二乘法(V T PV = min )的V 值,也就是数学中计算函数的极值。