ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:121.54KB ,
资源ID:5951488      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5951488.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(间接平差基础大作业.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

间接平差基础大作业.docx

1、间接平差基础大作业测量平差基础间接平差法报告书 姓名: 学号:日期:2016 指导老师:目录1) 平差原理.22) 平差过程.3 2.1平差流程.3 2.2平差相关代码.33) 平差结果(要求以表格形式表达;注意单位统一及有效位数的取位).254) 结论.295) 课程设计的体会及建议.306) 参考文献.311)平差原理2)平差过程 2.1平差流程 .读取观测数据与已知点坐标数据(包括一些数据的精度); .计算未知点近似坐标; .建立角度与边长误差方程; .计算角度观测值误差方程的系数和常数项; .计算边长观测值误差方程的系数和常数项; .组成误差方程,得到系数阵和常数阵; .定权,得到权矩

2、阵; .组成并解算法方程; .计算观测值的平差值及其方差协方差阵DLL与坐标平差值(Xi,Yi)及其方差协方差阵DXX;.精度评定(单位权中误差,点位中误差,边长相对中误差)。2.2平差相关代码:#include StdAfx.h#include SingleTraverse.h#include CommonSurveyFunctions.h#include math.h#include CSingleTraverse:CSingleTraverse(short TraverseType,short AngleType) m_nType=TraverseType; m_nAngleType=A

3、ngleType; if(m_nType=1)/附合导线,4个已知点 m_pKnownPoint=new CControlPoint4;/已知点数组 m_iKnownPointCount=4;/已知点个数 else if(m_nType=2|m_nType=3)/闭合导线与无定向导线,2个已知点 m_pKnownPoint=new CControlPoint2;/已知点数组 m_iKnownPointCount=2;/已知点个数 else if(m_nType=4)/支导线 m_pKnownPoint=new CControlPoint;/已知点数组 m_iKnownPointCount=1;

4、/已知点个数 else m_pKnownPoint=NULL; /已知点数组 m_iKnownPointCount=0; /已知点个数 m_pUnknownPoint=NULL;/未知点数组 m_iUnknownPointCount=0; /未知点个数 m_pAngleObs=NULL; /角度观测值数组 m_iAngleObsCount=0; /角度观测值个数 m_pDistObs=NULL; /距离观测值数组 m_iDistObsCount=0; /距离观测值个数CSingleTraverse:CSingleTraverse(void) /释放动态数组内存 if(m_pUnknownPoi

5、nt!=NULL) delete m_pUnknownPoint; m_pUnknownPoint=NULL; if(m_pKnownPoint!=NULL) delete m_pKnownPoint; m_pKnownPoint=NULL; if(m_pAngleObs!=NULL) delete m_pAngleObs; m_pAngleObs=NULL; if(m_pDistObs!=NULL) delete m_pDistObs; m_pDistObs=NULL; /根据单导线类型,设置已知点个数和数组void CSingleTraverse:SetKnownPointSize(sho

6、rt nType) m_nType=nType; if(m_nType=1)/附合导线,4个已知点 m_pKnownPoint=new CControlPoint4;/已知点数组 m_iKnownPointCount=4;/已知点个数 else if(m_nType=2|m_nType=3)/闭合导线与无定向导线,2个已知点 m_pKnownPoint=new CControlPoint2;/已知点数组 m_iKnownPointCount=2;/已知点个数 else if(m_nType=4)/支导线 m_pKnownPoint=new CControlPoint;/已知点数组 m_iKno

7、wnPointCount=1;/已知点个数 else m_pKnownPoint=NULL; /已知点数组 m_iKnownPointCount=0; /已知点个数 /设置未知点个数,根据导线类型计算出角度与距离观测值个数/注意:调用该函数后,原有数据被删除void CSingleTraverse:SetUnknownPointSize(int size) if(m_pUnknownPoint!=NULL) delete m_pUnknownPoint; m_pUnknownPoint=NULL; if(m_pAngleObs!=NULL) delete m_pAngleObs; m_pAng

8、leObs=NULL; if(m_pDistObs!=NULL) delete m_pDistObs; m_pDistObs=NULL; m_iUnknownPointCount=size; m_pUnknownPoint=new CControlPointsize; if(m_nType=1|m_nType=2)/闭合导线或附合导线 m_pAngleObs=new CAngleObssize+2; m_iAngleObsCount=size+2; m_pDistObs=new CDistObssize+1; m_iDistObsCount=size+1; else if(m_nType=3)

9、/无定向导线 m_pAngleObs=new CAngleObssize; m_iAngleObsCount=size; m_pDistObs=new CDistObssize+1; m_iDistObsCount=size+1; else/支导线 m_pAngleObs=new CAngleObssize; m_iAngleObsCount=size; m_pDistObs=new CDistObssize; m_iDistObsCount=size; /对已知点数组中的第pos点赋值,pos从0开始bool CSingleTraverse:SetKnownPoint(int pos,con

10、st CControlPoint& CP) if(pos=m_iKnownPointCount) return false; m_pKnownPointpos=CP; return true;/对未知点数组中的第pos点赋值,pos从0开始bool CSingleTraverse:SetUnKnownPoint(int pos,const CControlPoint& CP) if(pos=m_iUnknownPointCount) return false; m_pUnknownPointpos=CP; return true;/对角度观测数组中的第pos个观测值赋值,pos从0开始bool

11、 CSingleTraverse:SetAngleObs(int pos, const CAngleObs& AngObs) if(pos=m_iAngleObsCount) return false; m_pAngleObspos=AngObs; return true;/对距离观测数组中的第pos个观测值赋值,pos从0开始bool CSingleTraverse:SetDistObs(int pos, const CDistObs& DistObs) if(pos=m_iDistObsCount) return false; m_pDistObspos=DistObs; return t

12、rue;/已知两个控制点,求P1-P2的方位角CAngle CSingleTraverse:Azi(const CControlPoint& P1, const CControlPoint& P2) CAngle angAzi; angAzi(RAD)=Azimuth(P1.X,P1.Y,P2.X,P2.Y); return angAzi;/已知两个控制点,求P1-P2的距离double CSingleTraverse:HDist(const CControlPoint& P1, const CControlPoint& P2) return Dist(P1.X,P1.Y,P2.X,P2.Y)

13、;/计算角度闭合差CAngle CSingleTraverse:ComAngleClosedError(void) CAngle angClosedError;/闭合差角度对象 /* A(i+1)=A(i)+左角180 A(i+1)=A(i)-右角180 如果大于360度还要减360*/ if (m_nType = 1) /附合导线 CAngle StartBearing;/起始方位角 CAngle EndBearing;/终点附合方位角 StartBearing = Azi(m_pKnownPoint0,m_pKnownPoint1); EndBearing = Azi(m_pKnownPo

14、int2,m_pKnownPoint3); /沿导线路线递推终止边的方位角 for(int i=0;i 360) StartBearing(DEG) = StartBearing(DEG) - 360; else if (StartBearing(DEG) 0) StartBearing(DEG) = StartBearing(DEG) + 360; angClosedError= StartBearing- EndBearing; else if (m_nType = 2)/闭合导线 CAngle angSum(0,DEG); /第一个角为连接角,不参与闭合差计算与角度分配 for( int

15、 i = 1;im_iAngleObsCount;i+) angSum= angSum+ m_pAngleObsi.ObsValue ; angClosedError(DEG)= angSum(DEG) - (m_iAngleObsCount - 2) * 180; return angClosedError;/分配角度闭合差void CSingleTraverse:DistributeAngleError(const CAngle& AngleError) if(m_nType= 1) /附合导线 for(int i=0;im_iAngleObsCount;i+) m_pAngleObsi.

16、ObsValue(DEG) = m_pAngleObsi.ObsValue(DEG) - (AngleError(DEG) / m_iAngleObsCount); else if( m_nType= 2)/闭合导线 /第一个角为连接角,不参与闭合差计算与角度分配 for(int i=1;im_iAngleObsCount;i+) m_pAngleObsi.ObsValue(DEG) = m_pAngleObsi.ObsValue(DEG) - (AngleError(DEG) / (m_iAngleObsCount-1); /近似坐标推算及坐标闭合差计算/注意:fx,fy以引用的方式调用,把

17、闭合差传递出来void CSingleTraverse:CoorClosedError(double& fx, double& fy) double dx, dy; if(m_nType= 1|m_nType= 2)/附合导线或闭合导线 CAngle StartBearing;/起始方位角 StartBearing = Azi(m_pKnownPoint0,m_pKnownPoint1); /沿导线路线递推终止边的方位角 for(int i=0;i 360) StartBearing(DEG) = StartBearing(DEG) - 360; else if (StartBearing(D

18、EG) X+ dx - m_pAngleObsi.cpEndObj-X; fy = m_pAngleObsi.cpStation-Y+ dy - m_pAngleObsi.cpEndObj-Y; else/计算未知点近似坐标 m_pAngleObsi.cpEndObj-X = m_pAngleObsi.cpStation-X + dx; m_pAngleObsi.cpEndObj-Y = m_pAngleObsi.cpStation-Y + dy; /分配坐标闭合差,得到简易平差结果void CSingleTraverse:DistributeCoorError(const double& f

19、x, const double& fy) /导线全长 double dTotalLength = 0; for(int i=0;im_iDistObsCount;i+) dTotalLength=dTotalLength+m_pDistObsi.dDist; /分配坐标闭合差,注意:是坐标增量按比例分配,反号分配 double dx=0, dy=0; for(int i=0;iX=m_pDistObsi.cpEnd-X-dx; m_pDistObsi.cpEnd-Y=m_pDistObsi.cpEnd-Y-dy; /简易平差计算主程序void CSingleTraverse:SimpleAdj

20、ust(const CString& strFileName) CAngle AngleError; AngleError = ComAngleClosedError();/计算角度闭合差 DistributeAngleError(AngleError);/分配角度闭合差 double fx, fy, fD, K; CoorClosedError(fx, fy);/近似坐标推算及坐标闭合差计算 DistributeCoorError(fx, fy);/分配坐标闭合差 /相对误差计算 fD = sqrt(fx * fx + fy * fy); /导线全长 double dTotalLength

21、= 0; for(int i=0;im_iDistObsCount;i+) dTotalLength=dTotalLength+m_pDistObsi.dDist; K = fD / dTotalLength; /开始输出简易平差的结果 CStdioFile SF; CString strLine; setlocale(LC_ALL,); if(!SF.Open(strFileName, CFile:modeCreate|CFile:modeWrite) return; /开始写数据 SF.WriteString(_T(单导线近似平差结果n); strLine.Format(_T(导线类型:%

22、dn),m_nType); SF.WriteString(strLine); /写已知点数据 strLine.Format(_T(已知点个数:%dn),m_iKnownPointCount); SF.WriteString(strLine); for(int i=0;im_iKnownPointCount;i+) strLine.Format(_T(%s,%s,%.4f,%.4f,%.4fn), m_pKnownPointi.strName,m_pKnownPointi.strID, m_pKnownPointi.X,m_pKnownPointi.Y,m_pKnownPointi.H); SF

23、.WriteString(strLine); /写未知点平差后数据 /写未知点数据 strLine.Format(_T(未知点个数:%dn),m_iUnknownPointCount); SF.WriteString(strLine); for(int i=0;im_iUnknownPointCount;i+) strLine.Format(_T(%s,%s,%.4f,%.4f,%.4fn), m_pUnknownPointi.strName,m_pUnknownPointi.strID, m_pUnknownPointi.X,m_pUnknownPointi.Y,m_pUnknownPoin

24、ti.H); SF.WriteString(strLine); /写角度闭合差 strLine.Format(_T(角度闭合差:%.1f秒n角度闭合差限差为:%.1f秒n), AngleError(DEG) * 3600,40 * sqrt(double (m_iAngleObsCount); SF.WriteString(strLine); /写坐标闭合差 strLine.Format(_T(坐标闭合差:fx=%.2fcm fy=%.2fcmn),fx,fy); SF.WriteString(strLine); /写边长观测精度 strLine.Format(_T(边长观测精度:1/%d),int(1.0/K); SF.WriteString(strLine); SF.Close();/字符串分割函数CStr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1