平面控制网严密平差程序设计 毕业设计
- 格式:doc
- 大小:2.35 MB
- 文档页数:84
一、概述1、课程设计目的通过本次课程设计,对已修课程(控制网平差与程序设计课程)所学内容进行巩固和加深,同时掌握并完成一定工作量的程序设计、文档资料的建立以及给定任务的编程与计算。
另外,也增加对matlab的使用以及程序编译的熟练程度。
2、课程设计任务平面控制网近似坐标推算的程序编译以及相关程序设计和文档资料的建立。
具体任务如下:1)程序编译与调试;2)程序测试文档的编写;3)总体设计框图的制作;4)详细设计A.平面网数据的整合;B.近似坐标计算;极坐标法前方交会法测边交会法后方交会法无定向导线---(1)已知两个点;(2)分离的已知点和方位角C.平差计算坐标;D.精度评定一、PAD图1、程序总体框架图Xyknow=point(1:ed)Xyunknow=point(ed+1,end)Length(xyunknow)>0Way=1Way=0极坐标条件搜索与计算i=xyunknow Way=0Way=2前方交会条件搜索Way=0与计算Way=3 测边交会条件搜索Way=0与计算Way=4后方交会条件搜索Way=0与计算对数组xyknow,xyunknow进行更新Way>0Way=500无定向导线条件搜Way=0索与计算Way=0 近似坐标无法求出!!K=0Def 极坐标条件搜索与计算具有已知方位搜索到K=k+1 角且终点为P所需边长K=1坐标计算Way=1K=0搜索到合适的AB点K=k+1搜索到K=k+1 所需边长K=2坐标计算Way=13、前方交会程序框图K=0Def 搜索满足条件的已知点A,BK=k+1前方交会条件搜索与计算对A,B,P三点进行逆时针排序K=k+1坐标计算K=2Way=2K=0K=0K=1搜索到三条与已知点联测的边Def测边后方交会测边交会条件搜索与计算坐标计算Way=3k=0K=2搜索到两条边但有方向观测信息依据方向信息对A,B,P逆时针排序坐标计算Way=3k=0K=3搜索到两条边且无其它可用信息用户给出三点逆时针顺序坐标计算Way=3K=0搜索满足条件的已知点A,B,CK=k+1后方交会条件D ef对A,B,C三点进行顺时针排序K=k+1搜索与计算危险圆判断K=k+1坐标计算K=3Way=46、无定向导线程序框图以一个已知点为原点建立新坐标系K=0计算新坐标搜索到两个分计算坐标转换参数开的已知点坐标转换Way=5K=1无定向Def以已知方位角为起点条件搜索建立新坐标系与计算计算新坐标搜索到一个K=0已知点和一个已知方位角计算坐标平移参数坐标平移Way=5二、算例1、边角网输入:近似坐标:近似坐标计算结果:平差结果:2、测边网输入:近似坐标:3、大型边角网输入:近似坐标:平差结果:三、总结体会在本次程序设计课程中,本组成员收获良多。
《测绘程序设计()》上机实验报告(Visual C++.Net)班级:测绘0901班学号: 0405090204姓名:代娅琴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;//点名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){}#pragma once#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)) return false;//创建并打开文件对象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);CFileDialog dlgFile(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: 在此添加控件通知处理程序代码U pdateData(TRUE);CFileDialog dlgFile(FALSE,_T("txt"),NULL,OFN_EXPLORER,_T("(Level格式)|*.txt"));if(dlgFile.DoModal()==IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,"");CStdioFile sf;if(!sf.Open(strFileName, CFile::modeCreate|CFile::modeWrite)) return;sf.WriteString(LevleContent);sf.Close();UpdateData(FALSE);}void CIndircLelveDlg::OnBnClickedComputelevel(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);setlocale(LC_ALL,"");double *Qx=new double[LevelComput.m_iUnknownPointCount];double r0;pAdjust(r0,Qx);LevleContent.Format(_T("平差后高程值:\r\n"));CString Temp;for(int i=0;i<LevelComput.m_iUnknownPointCount;i++){Temp.Empty();Temp.Format(_T("%s,%.4f\r\n"),LevelComput.m_pUnknownPoint[i].strID,LevelComput.m_pUnknownPoint[i].H);LevleContent+=Temp;}Temp.Format(_T("单位权中误差:%.1f mm\r\n"),r0*1000);LevleContent+=Temp;LevleContent+=_T("未知点高程中误差(mm):\r\n");for(int i=0;i< LevelComput.m_iUnknownPointCount;i++){Temp.Empty();Temp.Format(_T("%s,%.1f\r\n"),LevelComput.m_pUnknownPoint[i].strName,Qx[i]*1000);LevleContent+=Temp;}UpdateData(false);}void CIndircLelveDlg::OnBnClickedSavelevleresult(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CFileDialog dlgFile(FALSE,_T("txt"),NULL,OFN_EXPLORER,_T("(Level格式)|*.txt"));if(dlgFile.DoModal()==IDCANCEL) return;CString strFileName=dlgFile.GetPathName();setlocale(LC_ALL,"");CStdioFile sf;if(!sf.Open(strFileName, CFile::modeCreate|CFile::modeWrite)) return;sf.WriteString(LevleContent);sf.Close();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. 程序设计的注意事项- 数据安全:确保程序在处理数据时的安全性,防止数据泄露。
- 异常处理:程序应能妥善处理各种异常情况,如数据格式错误、计算溢出等。
实验三利用mat lab程序设计语言完成某工程导线网平差计算实验数据;某工程项目按城市测量规范(CJJ8-99)不设一个二级导线网作为首级平面控制网,主要技术要求为:平均边长200cm,测角中误差±8,导线全长相对闭合差<1/10000,最弱点的点位中误差不得大于5cm,经过测量得到观测数据,设角度为等精度观测值、测角中误差为山=±8秒,鞭长光电测距、测距中误差为m二± Vsmm,根据所学的‘误差理论与测量平差基础'提出一个最佳的平差方案,利用matlab完成该网的严密平差级精度评定计算;平差程序设计思路:1采用间接平差方法,12个点的坐标的平差值作为参数.利用matlab进行坐标反算,求出已知坐标方位角;根据已知图形各观测方向方位角;2计算各待定点的近似坐标,然后反算出近似方位角,近似边. 计算各边坐标方位角改正数系数;3确定角和边的权,角度权Pj=1 ;边长权Ps=100/S;4计算角度和边长的误差方程系数和常数项,列出误差方程系数矩阵 B,算出Nbb=B’ PB,W=B’ Pl,参数改正数 x=inv(Nbb)*W;角度和边长改正数V=Bx-l; 6建立法方程和解算x,计算坐标平差值,精度计算;程序代码以及说明:s10=;s20=;s30=;s40=;s50=;s60=;s70=;s80=;s90=;s100=;s110=;s120=;s130=;s140=; %已知点间距离Xa=;Ya二;Xb=;Yb=;Xc=;Yc=;Xd=;Yd=;Xe=;Ye=;Xf=;Yf=; %已知点坐标值a0=atand((Yb-Ya)/(Xb-Xa))+180;d0=atand((Yd-Yc)/(Xd-Xc));f0=atand((Yf-Ye)/(Xf-Xe))+360; %坐标反算方位角a1=a0+(163+45/60+4/3600)-180a2=a1+(64+58/60+37/3600)-180;a3=a2+(250+18/60+11/3600)-180;a4=a3+(103+57/60+34/3600)-180;a5=d0+(83+8/60+5/3600)+180;a6=a5+(258+54/60+18/3600)-180-360;a7=a6+(249+13/60+17/3600)-180;a8=a7+(207+32/60+34/3600)-180;a9=a8+(169+10/60+30/3600)-180;a10=a9+(98+22/60+4/3600)-180;a12=f0+(111+14/60+23/3600)-180;a13=a12+(79+20/60+18/3600)-180;a14=a13+(268+6/60+4/3600)-180;a15=a14+(180+41/60+18/3600)-180; %推算个点方位角 aa=[a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a12 a13 a14 a15]'X20=Xb+s10*cosd(a1);X30=X20+s20*cosd(a2);X40=X30+s30*cosd(a3);X50a=X40+s40*cosd(a4);X60=Xd+s50*cosd(a5);X70=X60+s60*cosd(a6);X80=X70+s70*cosd(a7);X90=X80+s80*cosd(a8);X100=X90+s90*cosd(a9);X50c=X100+s100*cosd(a10);X130二Xf+s110*cosd(a12);X140=X130+s120*cosd(a13);X150=X140+s130*cosd(a14);X50e=X150+s140*cosd(a15); %各点横坐标近似值X0=[X20 X30 X40 X60 X70 X80 X90 X100 X130 X140 X150 X50a X50c X50e]'Y20=Yb+s10*sind(a1);Y30=Y20+s20*sind(a2);Y40=Y30+s30*sind(a3);Y50a=Y40+s40*sind(a4);Y60=Yd+s50*sind(a5);Y70=Y60+s60*sind(a6);Y80=Y70+s70*sind(a7);Y90=Y80+s80*sind(a8);Y100=Y90+s90*sind(a9);Y50c=Y100+s100*sind(a10);Y130=Yf+s110*sind(a12);Y140=Y130+s120*sind(a13);Y150=Y140+s130*sind(a14);Y50e=Y150+s140*sind(a15); %个点从坐标近似值Y0=[Y20 Y30 Y40 Y60 Y70 Y80 Y90 Y100 Y130 Y140 Y150 Y50a Y50c Y50e]'P=[X0 Y0];X50=(X50a+X50c+X50e)/3Y50=(Y50a+Y50c+Y50e)/3s4二sqrt((Y40-Y50)"2+(X40-X50厂2);si二sqrt((Y100-Y50厂2+(X100-X50厂2);s14二sqrt((Y150-Y50)"2+(X150-X50厂2);A1=[cosd(a1) cosd(a2) cosd(a3) cosd(a4) cos(a5) cosd(a6) cosd(a7) cosd(a8) cosd(a9) cosd(a10) cosd(a12) cosd(a13) cosd(a14) cosd(a15)]';B11=[sind(a1) sind(a2) sind(a3) sind(a4) sin(a5) sind(a6) sind(a7) sind(a8) sind(a9) sind(a10) sind(a12) sind(a13) sind(a14) sind(a15)]';s=blkdiag(s10,s20,s30,s4,s50,s60,s70,s80,s90,s10',s110,s120,s130,s14);a=*inv(s)*B11b=*inv(s)*A1ab4=atand((Y50-Y40)/(X50-X40))+180;ab10=atand((Y50-Y100)/(X50-X100));ab14=atand((Y50-Y150)/(X50-X150))+360;m4=ab4-a3+180;m10=ab10-a9+180;m11=ab4-ab10;m15=ab14-a14+180;m16=ab10-ab14+360;m04=103+57/60+34/3600;m010=98+22/60+4/3600;m011=94+53/60+50/3600;m015=180+41/60+18/3600;m016=ab10-ab14+360;l=[0 0 0 m4-103-57/60-34/3600 0 0 0 0 0 m10-98-22/60-4/3600 m11-94-53/60-50/3600 0 0 0 m15T80-41/60T8/3600m16-103-23/60-8/3600 0 0 0 s40-s4 0 0 0 0 0 s100-s1 0 0 0 s140-s14]';e1=(abs(X20-Xb))/s10;e2=(abs(X30-X20))/s20;e3=(abs(X40-X30))/s30;e4=(abs(X50-X40))/s4;e5=(abs(X60-Xd))/s50;e6= (abs(X70-X60))/s60;e7=(abs(X80-X70))/s70;e8=(abs(X90-X80))/s80;e9=(abs(X100-X90))/s90;e10=(abs(X50-X100))/s1;e11=(abs(X130-Xf))/s110;e12=(abs(X140-X130 ))/s120;e13=(abs(X150-X140))/s130;e14=(abs(X50-X150))/s 14;e=[e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14]' m1=(abs(Y20-Yb))/s10;m2=(abs(Y30-Y20))/s20;m3=(abs(Y40-Y30))/s30;m4=(abs(Y50-Y40))/s4;m5=(abs(Y60-Yd))/s50;m6= (abs(Y70-Y60))/s60;m7=(abs(Y80-Y70))/s70;m8=(abs(Y90-Y80))/s80;m9=(abs(Y100-Y90))/s90;m10=(abs(Y50-Y100))/s1;m11=(abs(Y130-Yf))/s110;m12=(abs(Y140-Y130 ))/s120;m13=(abs(Y150-Y140))/s130;m14=(abs(Y50-Y150))/s 14;m=[m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14]' % 以上为求得误差方程系数B=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0%系数矩阵B0 0 ]P=blkdiag(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,100/s10,100/s 20,100/s30,100/s40,100/s50,100/s60,100/s70,100/s80,100/ s90,100/s100,100/s110,100/s120,100/s130,100/s140); %定义权矩阵Nbb二B'*P*BW=B'*P*l;x=inv(Nbb)*WV=B*x-l;inv(Nbb);Y=V'*P*V;O二sqrt(Y/6)*3600 %精度评定计算结果:平差值坐标X:+003 *Qx1= Qy1= Qx2= Qy2= ……Qx15= Qy15=。
山西水利职业技术学院实习报告题目导线平差的程序设计与实现姓名:孟国娇学号:专业:工程造价1139报告提交日期:山西水利职业技术学院设计任务书学院:土建工程系专业年级:工程造价2011 学生姓名:孟国娇任务下达日期:2012年 2 月20日毕业设计日期:2012年3月12日至2012年6月13日毕业设计题目:导线平差的程序设计与实现毕业设计主要内容和要求:主要内容:(1)测量平差的研究背景及意义;(2)测量平差概述;(3)Excel在单一附和导线近似平差中的应用;(4)Excel在单一附和导线条件平差中的应用;(5)导线网的间接平差理论;(6)导线网平差的结构和函数设计与实现。
设计要求:(1)毕业设计要充分发挥主观能动性,积极思考,主动实践;(2)毕业设计撰写结构要严整,叙述清楚,理论分析适当,数据可靠,研究方法合理,结论正确,论文格式符合规范;(3)研究成果要有一定的实用或参考价值。
院长签字:指导教师签字:摘要随着测绘科学技术的不断发展,在测量数据的处理中产生很多种平差的方法。
在本文中,导线网的近似平差和条件平差的一些简单计算可通过Excel表编制计算公式和编程实现,我们只需在已编好的Excel表中稍作调整和公式修改,并输入已知数据,最终就可得到所需的平差结果,这为测量的内业工作提供了服务和参考;导线网的间接平差程序是利用C++编程实现的,我们需要将导线网的已知数据信息按照特定的规则输入到dat文本中,利用C++程序读取文本数据信息后,对其进行一系列的平差计算,最终获得平差后的结果,并以dat文本的形式输出且保存,这样就可为测量工作提供一定的参考,还能为测绘数据的管理带来帮助。
关键词:导线平差;Excel;C++;程序目录1绪论...............................................................................................................................................1.1研究背景及意义.................................................................................................................1.2国内外研究状况.................................................................................................................1.3本文研究的具体内容.........................................................................................................1.4平差程序相关说明.............................................................................................................1.4.1平差程序计算特点..................................................................................................1.4.2平差程序的基本要求..............................................................................................1.4.3平差程序的结构化设计..........................................................................................1.4.4平差程序模块化......................................................................................................1.4.5平差程序的数据结构.............................................................................................. 2测量平差.......................................................................................................................................2.1测量平差概述.....................................................................................................................2.1.1测量平差..................................................................................................................2.1.2测量平差的函数模型..............................................................................................2.2最小二乘原理.....................................................................................................................2.3条件平差原理.....................................................................................................................2.3.1条件平差的数学模型..............................................................................................2.3.2条件平差原理..........................................................................................................2.3.3条件平差的计算步骤..............................................................................................2.3.4精度评定..................................................................................................................2.4间接平差原理.....................................................................................................................2.4.1间接平差的数学模型..............................................................................................2.4.2间接平差的的一般原理..........................................................................................2.4.3按间接平差法求平差值的计算步骤......................................................................2.4.4精度评定.................................................................................................................. 3Excel在导线平差中的应用.........................................................................................................3.1 Excel在平差中的应用基础...............................................................................................3.1.1 引言.........................................................................................................................3.1.2Excel在平差中的基本应用操作函数...................................................................3.1.3 核心问题的解决及技巧.........................................................................................3.1.4 三角函数在Excel中的处理方法..........................................................................3.1.5 小结.........................................................................................................................3.2Excel在附和导线近似平差中的应用..............................................................................3.2.1 单一附和导线近似平差.........................................................................................3.2.2单一附和导线近似平差实例..................................................................................3.3 Excel在导线网条件平差中的应用...................................................................................3.3.1单一附合导线条件平差..........................................................................................3.3.2边角权的确定及单位权中误差..............................................................................3.3.3单一附和导线条件平差实例.................................................................................. 4导线网的间接平差程序设计与实现 ...........................................................................................4.1矩阵的相关函数.................................................................................................................4.1.1矩阵相乘..................................................................................................................4.1.2矩阵转置..................................................................................................................4.1.3矩阵求逆..................................................................................................................4.1.4矩阵输出..................................................................................................................4.1.5设置实数输出精度..................................................................................................4.2平差中的重要函数.............................................................................................................4.2.1角度制与弧度制的相互转化..................................................................................4.2.2测量正反算函数......................................................................................................4.2.3近似坐标计算..........................................................................................................4.3导线网的平差理论.............................................................................................................4.3.1平差概述..................................................................................................................4.3.2边角网的最小二乘平差..........................................................................................4.4间接平差的结构与函数设计.............................................................................................4.4.1间接平差..................................................................................................................4.4.2结构与函数设计......................................................................................................4.5导线网平差的程序应用.....................................................................................................4.5.1平面网数据的输入格式..........................................................................................4.5.2导线网平差程序应用实例...................................................................................... 5结论与展望 ...................................................................................................................................5.1Excel在导线平差中的应用..............................................................................................5.1.1Excel在导线近似平差中的应用...........................................................................5.1.2Excel在导线网条件平差中的应用.......................................................................5.2C++在导线平差中的应用 .................................................................................................5.3测量平差的展望................................................................................................................ 参考文献........................................................................................................................................... 致谢. (54)1绪论1.1研究背景及意义测量工作是工程施工非常基础、重要的环节,对工程设计、工程施工、工程的验收都发挥着指导性、不可替代的作用。
优秀论文审核通过未经允许切勿外传摘要随着社会的发展,科技的日益更新,矿山联系测量技术也随着发展,各种先进的仪器也应用于矿山测量方面,使得测量的精度和效率都有了很大的提高。
本次联系测量的地方为寺家庄矿,寺家庄矿为单立井矿,服务年限73年,是一个大型国有煤矿。
此次设计的总体结构有:项目概况、地面控制网的测设、矿井联系测量的具体步骤及建立井下控制网。
通过这次毕业设计使得我更加清楚的理解和认识矿山联系测量和矿山测量的理论和实践。
关键字:矿井联系测量定向导入标高近井点巷道剖面图ABSTRACTWith the development of society, technology is increasingly update, mining relation measurement technology also with development, various advanced instruments also used in mine surveying, the measurement precision and efficiency measurement for the temple of the '73, is a large state-owned coal mines. The design of the overall structure: project profiles, ground control nets of measuring set, mine relation measurement of the specific steps and establish underground control nets. Through this graduation design makes me more clearKey words: M ine relation measurement OrientationWell point near Roadway profile目录第一章绪论 (1)第一节毕业设计任务及目的 (1)第二节实习单位简介 (2)第三节毕业设计选题及资料来源 (3)第二章项目概述 (3)第一节项目区概述 (3)第二节项目的任务、内容及要求 (4)一、项目的内容 (4)二、项目的任务 (4)三、项目测量的技术要求 (4)第三节现有资料整理 (5)一、项目区数据的编制依据 (5)二、各项数据的来源 (5)第三章地面控制网的布设 (5)第一节地面控制网的概述 (5)第二节寺家庄矿地面近井点、井口水准基点的布设要求 (6)一、近井点和井口水准基点选点、埋石和造标的基本要求 (6)二、煤矿近井点及井口水准基点测量的精度要求 (7)第三节利用GPS测量近井点 (8)第四章矿井联系测量 (10)第一节概述 (11)一、一井定向 (11)二、导入标高 (11)第二节寺家庄矿主立井定向 (11)一、一井定向前期准备 (11)二、投点 (12)三、连接 (14)四、定向时的安全措施 (17)第三节主立井导入标高 (18)一、导入高程的实质 (18)二、全站仪导入高程的方法 (20)第五章寺家庄矿井下平面及高程控制网的测量 (22)第一节寺家庄矿井下平面控制测量方案及实施 (22)一、特点 (22)二、目的 (23)三、精度 (23)四、井下导线点的设置 (23)五、井下导线控制网布设的步骤 (23)六、井下导线测量的内业 (25)第二节寺家庄矿井下高程控制测量方案及实施 (27)一、概述 (27)二、井下水准测量 (28)三、井下三角高程测量的步骤 (28)四、巷道剖面图测绘 (29)总结与感想 (31)致谢 (32)参考文献 (33)第一章绪论矿山联系测量是在矿山开采的各阶段中,使用测量仪器,采用相应的测量方法,根据矿山开采进度及施工要求进行的测量工作,以保证施工的顺利进行,并为工程竣工及运行管理提供必要的测量资料。
目录摘要 (1)0引言 (1)1整体框架设计 (2)2特殊情况控制网近似坐标推算方法 (4)2.1测边网近似坐标推算 (5)2.2已知点间没有直接观测量的近似坐标推算 (6)3不同类型观测值的定权方法讨论 (7)3.1 按常规方法定权 (7)3.2 根据三角形闭合差定权 (8)3.3 用平差得到的验后中误差来定权 (8)4程序应用算例 (9)4.1 程序验证 (10)4.2 不同定权方法平差结果精度分析 (11)5结束语 (13)参考文献 (14)Abstract (15)测量控制网平差程序设计与实现摘要:根据控制网间接平差的基本原理,基于Visual C++6.0设计和实现了一款控制网平差计算程序GNetAdj,该程序可实现水准网、测角网、测边网、边角网等常规控制网的平差计算与精度评定.重点探讨了特殊情况控制网的近似坐标推算方法,以及不同类型观测值较为合理的定权方法.最后通过一算例验证了程序的正确性.关键词:控制网;方差估计;平差;定权方法;近似坐标推算Survey control net adjustment program design and implementation Abstract:GNetAdj is based on the principles of indirect adjustment,and it is designed by Visual C++6.0.It can realize the adjustment and estimate of precision for level network,triangulation network,trilateration network,triangulateration network and other conventional control networks.Some methods of calculating approximation coord;nates for special control network are discussed,and some methods of fixing the weight of different observations are ana·lyzed.Finally,the program is verified by a case,and the result shows that it has good practical value.Key words:control network;estimation of variance;adjustment;methods of fixing weight;calculation of approximate coordinates0 引言控制网平差计算相当复杂,计算量很大,对于规模较大的控制网必需借助计算机及计算软件才能计算出来.虽然现在大多数的控制网平差软件功能很齐全,使用也比较方便,但有的地方还不够理想,如缺乏对角度观测量的平差,对于已知点之间没有直接观测量的网不能推算坐标;对于边角同测的网,两类观测值仅按常规方法来定权,往往导致先验和验后中误差相差较大,对平差结果产生一定影响.鉴于以上问题,本文将重点讨论特殊情况下控制网的近似坐标推算方法,如单纯测边网、已知点之间没有直接观测值的情况,另外还对不同类观测值的定权方法进行探讨.1整体框架设计图l是GNetAdj的运行界面,程序主要包含的类及其功能如图2所示,其中WangView类显示网的图脉形需要将实际网的坐标转换到程序视图的坐标,在图上通过点击鼠标还能显示待定点的误差椭圆及其参数.图1程序运行界面图2程序涉及的几个重要的类GNetAdj是基于Visual C++6.0设计的多文档应用程序,其菜单栏包含程序的所有功能,除了常规控制网平差计算外,还有坐标转换、交会法计算坐标等功能,工具栏的各个按钮对应各项功能.由于控制网平差涉及大量的计算,而且不同类型的网的属性和计算大致相同,因此构造一个间接平差类,把控制网的大部分属性和计算封装起来.对于控制网平差,通过新建一个文本,编辑已知点坐标和观测数据,或打开已编辑好的数据文本,在菜单栏或工具栏上选择所要平差的类型,在弹出的对话框(见图3)中设置好相关参数,点击“确定”按钮后程序就进行平差计算并显示结果.对话框设置的参数有已知点点数、待定点点数、各类误差及观测值个数等,根据这些参数,程序先读取数据文本中的已知点,接着读取方向或角度观测值,最后读取边长观测值,并存储到相应的变量中.程序读完数据后便开始计算待定点的近似坐标,进而计算权阵、误差方程的系数阵及常数项,计算过程涉及到的矩阵均采用一维数组来存储,通过对矩阵进行转置、相乘、求逆等运算,最后求得坐标改正数.为提高精度,平差计算采用迭代方式,直到改正数收敛为止.最后进行精度评定并输出平差结果.如果读取数据或计算过程出错,程序会中止平差计算,并返回错误信息,好让用户检查哪里有问题结果有文本和图像,前者是待定点的坐标平差值、观测值的平差值、各类中误差等数据,后者是控制网的图形,利用消息映射机制,当光标在待定点附近时,通过点击鼠标左键会显示该点的误差椭圆及其参数,点击右键则取消显示.另外,程序的其它功能通过对话框的形式来操作,在相应的编辑框中输人数据,点击相关按钮,计算结果就显示出来,非常直观明了2特殊情况控制网近似坐标推算方法2.1测边网近似坐标推算虽然GNetAdj采用多种方法(极坐标法、前方交会法、测边交会法)来推算待定点的近似坐标,但如果只根据边长观测数据是不能唯一确定待定点的坐标,因为单靠边长程序判读不了点的位置关系,而能否平差测边网关键就在于此.若程序判断不了,则由用户来判断,如遇到不能确定点的位置时,程序会弹出图4的对话框让用户判断.用户根据实地点的分布或草图就可作出正确判断,这样就能推算坐标并进行平差.为尽量减小用户的判断,对有3个或以上已知点的测边网(如图5所示),GNetAdj先用以下方法来推算坐标:取其中两个已知点M1、M2,三角形M1M2 P中3条边长均知道,可用余弦定理求出三角形中各个内角,再用极坐标法或前方交会法分别按顺时针和逆时针各计算出一个P点可能的坐标,再由这两个坐标分别与第3个已知点M3求距离,哪一个距离与P到M3的距离观测值相接近,就取相应的坐标作为P的近似坐标心J.程序会先检验3个已知点是否在同一条直线上,不在才采用此法.若经此方法推算后还有待定点算不出坐标,将会弹出图4的对话框要求用户作判断.2.2 已知点间没有直接观测量的近似坐标推算有些控制网已知点比较分散,已知点之间没有进行观测,如图6所示的网,只有A、B是已知点,这样就不能直接计算待定点的近似坐标.GNetAdj采用平面相似变换法(四参数法)来解决这个问题.若是测角网,搜索某一观测值得到两个端点,对这两个点模拟一套坐标并设为已知点,其它点均为待定点,计算所有点在模拟坐标系中的坐标,然后根据原来已知点的坐标及其模拟坐标来计算两个坐标系的转换参数(两个平移参数、一个旋转参数和一个缩放参数),利用转换参数将模拟坐标转为实际网的近似坐标.若是边角网,由于推算坐标时可能用到边长观测值,因此程序选择某一观测边的一个端点并赋予模拟坐标,然后假设该边的方位角为0300,用坐标正算可求得另一个端点的坐标,以这两个点作为已知点来推算其它待定点的模拟坐标,然后计算转换参数,最后将模拟坐标转为实际网的近似坐标.3不同类型观测值的定权方法讨论角度和边长的权是一种比例关系,为定权故必须精确知道观测值的中误差,但在平差前这个值是不知道的,只能设法找出它们尽量好的估值来.GNetAdj使用3种方法来确定观测值的先验中误差,并用其来对观测值定权.3.1 按常规方法定权测角中误差m 根据测角仪器的类型和观测测回数,参照相应等级的三角测量精度来决定,测边中误差i s m按测距仪器出厂时的标称精度公式is m =amm+b ×610-×D km 来确定,然后按 220ββm m P = (3—1) 220ii s s m m P = (3—2) 来定权.3.2 根据三角形闭合差定权对于测角网,GNetAdj 先找出网中三角形的个数k ,并计算各三角形的闭合差,若闭合差大于3倍的测角中误差,则终止平差并显示超限信息,供用户检查.如不超限则继续往下计算,若k>20则按三角形闭合差并依菲列罗公式m β=计算测角 中误差。
大型市政工程建造平面控制测量(严密平差)施工工法一、前言大型市政工程建造平面控制测量(严密平差)施工工法是一种针对大型市政工程建造过程中的平面控制测量的施工工法。
通过采取一系列的技术措施和管理方法,确保施工过程中的平面控制测量精度和稳定性,以满足工程设计要求。
二、工法特点1.严密平差:该工法采用严密平差来实现平面控制测量,通过使用高精度的仪器设备和科学准确的测量方法,保证施工过程中的平面数据的准确性。
2.全过程监控:该工法在施工过程中,对平面控制测量进行全过程的监控和管理,确保施工过程中的平面控制测量结果的稳定性和持续性。
3.灵活应用:该工法适用于各种不同的市政工程,包括道路、桥梁、排水系统等,以及不同类型的地形和环境条件。
三、适应范围该工法适用于各种大型市政工程建造过程中的平面控制测量,包括道路、桥梁、排水系统等。
特别适用于对平面控制要求较高的工程,如高速公路、大型桥梁等。
四、工艺原理1.施工工法与实际工程之间的联系:该工法通过分析工程设计要求和实际施工情况,确定平面控制测量的目标和方法。
2.采取的技术措施:在施工过程中,使用高精度的仪器设备进行平面控制测量,并采取数据处理和分析的方法,确保测量结果的准确性和稳定性。
五、施工工艺1.前期准备:包括确定测量基准点和控制点、布置测量仪器设备和测量人员等。
2.测量过程:根据设计图纸要求,进行平面控制测量,包括水平测量、高程测量等。
3.测量数据处理:对测量所得的数据进行处理和分析,生成测量结果和图纸。
六、劳动组织在施工过程中,需要组织专业的测量人员和劳动力,根据工艺要求进行协作和配合。
七、机具设备1.测量仪器设备:包括全站仪、水平仪、高程仪等。
2.数据处理设备:包括计算机、数据处理软件等。
八、质量控制通过对施工过程中的平面控制测量进行全过程的监控和检查,确保测量结果的准确性和稳定性。
九、安全措施在施工过程中,需要注意保护测量仪器设备的安全,避免设备受损或被盗。
毕 业 设 计 [论 文] 题 目: 平面控制网严密平差程序设计 学 院: 测绘工程学院 专 业: 测绘工程 姓 名: 学 号: 061409237 指导老师: 完成时间: 2013年4月22日 2
摘 要: 控制网具有控制全局,限制测量误差累积的作用,是各种测绘工作的依据。控制网包括平面控制网和高程控制网。平面控制网严密平差目的是对平面控制网在测量平差基础理论下对控制网测量数据进行整理、分析、计算及评定控制网精度,进而得到控制点的平面坐标。当前计算机技术高度发达,利用计算机语言并根据控制网间接平差规律设计出严密平差程序并不困难,然而当前市场上的平差程序大多形式雷同,功能比较单一。虽然可以满足基本计算要求,但是在控制网优化分析方面存在形式局限性,没有充分利用间接平差理论成果。本次程序设计基于工程计算和教学实践需要,利用VB可视化编程技术设计出一个能够实现:平面控制网高程控制网严密平差计算;平面控制网的优化研究;坐标系转换;导线计算;并利用Access数据库进行工程数据、坐标数据存数、分析、显示等。为实现变形监测分析进行结构准备。 关键词: 测量平差 控制网 VB程序设计
3
English abstract: Control network has global control, limit the measurement error accumulation effect, is the work of Surveying and mapping on the basis of. Control network including plane control network and elevation control network. Plane control network rigorous adjustment aim of plane control network in the basis of surveying adjustment theory of control network measurement data collation, analysis, calculation and evaluation of accuracy of control network, and then get the plane coordinates of control points. The highly developed computer technology, using computer languages and according to the control network adjustment rules designed rigorous adjustment procedure is not difficult, but the current market adjustment procedures are identical in form, function relatively simple. The adjustment program in market can meet the basic computational requirements, but there are limitations in the form of control network optimization analysis, did not make full use of the indirect adjustment theory. The graduation design of engineering calculation and teaching practice based on the use of VB programming technology, designed to achieve a: plane control network height control network rigorous adjustment calculation; optimization of plane control network; coordinate transformation; traverse calculation; and the use of Access database for engineering data, coordinate data store, analysis, display, in preparation for the implementation of structural deformation monitoring analysis. Key words: Surveying adjustment, Control network, VB program design 4
目 录 摘要………………………………………………………………………………2 英文摘要…………………………………………………………………………3 目录………………………………………………………………………………4 1 前言…………………………………………………………………………5 1.1研究目的和意义 ………………………………………………………5 1.2研究现状 ………………………………… …………………………5 1.3研究内容与方法 ………………………………………………………5 2 编程基础与平差理论 ……………………………………………………6 2.1 Visual Basic 开发系统介绍 ………………………………………6 2.2 Visual Basic 开发界面与程序调试 ………………………………6 2.3 测量平差知识…………………………………………………………7 3 程序设计……………………………………………………………………31 3.1程序设计要求…………………………………………………………31 3.2平差程序的设计步骤…………………………………………………31 3.3选定某种表达式来描述各种算法及程序编写………………………38 3.4.重要模块介绍 ………………………………………………………56 3.5程序调试………………………………………………………………63 4.程序应用……………………………………………………………………65 4.1程序使用说明…………………………………………………………65 4.2控制网算例……………………………………………………………65 4.3程序使用说明书………………………………………………………65 4.4关于间接平差部分理论的验证………………………………………68 4.5关于间接平差定权问题的两点结论…………………………………78 4.6数据研究与教学实践…………………………………………………80 4.7工程数据的存储与Access数据库-…………………………………80 4.8坐标系统转换 ………………………………………………………80 5.总结 ………………………………………………………………………81 参考文献……………………………………………………………………82 致谢…………………………………………………………………………83 5
前 言 经过大学四年的学习和专业实践,我对测绘工程专业中的工程测量学和测量平差知识有了一定的掌握,同时在计算机语言方面学习掌握了VB可视化编程语言。在指导老师的悉心帮助和指导下完成了平面控制网严密平差程序设计,并获得了较好的成果。
1.1研究目的和意义 《平面控制网严密平差程序设计》是根据工程实践和教学需要,针对市场上的平差软件不能显示计算过程、书据输入格式复杂、不易学习使用等缺陷进行设计的。该程序根据测量平差理论知识中间接平差规律化特点,结合VB编程语言,实现平面控制网严密平差过程中的数据输入、平差计算、精度分析等一体化。
1.2研究现状 此外根据间接平差程序特点,实现控制网优化研究,包括对平面控制网型平差结果和误差椭圆进行可视化。以此深入了解间接平差理论知识,并结合工程测量学和控制测量学相关理论,实现了闭合导线、附合导线、无定向导线和之导线的平差计算。以及工程坐标系与建筑坐标系的转换、高斯坐标系换代计算、高斯坐标系和大地坐标系及空间直角坐标系的相互转换等。在Access数据库的使用中扩展了程序的功能,使程序具有了一定的工程管理功能和变形监测数据分析功能等。
1.3研究内容与方法 程序设计完成后,利用该程序对常见的平面控制网的算例进行了测试,验证了间接平差的相关理论知识。并对间接平差的应用用了新的发现,在导线传递计算中,发现间接平差与误差传播率有相同的计算效果,据此可以进行导线误差预计。进而可以在导线型贯通工程中作为严密贯通误差预计的计算工具。 程序设计的数据格式为文本文档,输入形式为标准的点号、已知点位平面坐标、待定点近似坐标、边长、角度、及先验观测误差等形式,具有容易观察学习贴近教学的优秀特点,编程的代码中的矩阵计算模块是测绘专业专用模块,并加以适当修改。程序结构流程是根据间接平差过程特点设计的,分为“网型显示、误差方程、平差计算、精度分析、点位误差椭圆”等。结果输出以Txt文档形式和World文档格式。在特有的数据研究功能中可以对观测数据加上随机误差,以此验证平面控制网型平差规律特点。 坐标系统转换功能模块是根据控制测量学理论共和公式编写的,采用严密的基础数据输入模式,可用性范围包括北京—54坐标系统,西安—80坐标系统,WGS-84坐标系统和任意坐标系统。不同空间直角坐标系通的转换采用布尔萨七参数法计算。因此这项功能可以适合大多数的不同参考椭球的换带计算。