摄影测量学空间后交

上传人:z**** 文档编号:113049898 上传时间:2022-06-24 格式:DOC 页数:16 大小:282KB
返回 下载 相关 举报
摄影测量学空间后交_第1页
第1页 / 共16页
摄影测量学空间后交_第2页
第2页 / 共16页
摄影测量学空间后交_第3页
第3页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中南大学本科生课程设计(实践)任务书、设计报告(摄影测量与遥感概论)题目:空间后方交会-前交院系:地球科学与信息物理学院班级:测绘1201班指导老师:邹峥嵘学号:0103120506姓名:杨腊梅二零一四年月一、实验目的通过对数字影像空间后交前交的程序设计实验,要求我们进一步理解和掌握影像外方位元素的有关理论、原理和方法。利用计算机程序设计语言编写摄影测量空间交会软件进行快速确定影响的外方位元素及其精度,然后通过求得的外方位元素求解位置点的地面摄影测量坐标,达到通过摄影测量量测地面地理坐标的目的。二、实验要求1用C、VB、C+或MATLAB语言编写空间后方交会-空间前方交会程序2提交实习报告:程序框图、程序源代码、计算结果、体会计算结果:像点坐标、地面坐标、单位权中误差、外方位元素及其精度完成时间:11月11日前完成三、实验数据占八、号左片右片地面摄影测量坐标系xyxyXYZGCP116.01279.963-73.9378.7065083.2055852.099527.925GCP288.5681.134-5.25278.1845780.025906.365571.549GCP313.362-79.37-79.122-78.8795210.8794258.446461.81GCP482.24-80.027-9.887-80.0895909.2644314.283455.484151.75880.555-39.95378.463214.618-0.231-76.0060.036349.88-0.782-42.201-1.022486.14-1.346-7.706-2.112548.035-79.962-44.438-79.736f=150.000mm,xO=O,y0=0四、实验思路利用后方交会得出两张相片各自的外方位元素1)获取已知数据影响比例尺m,内方位元素x0、yO、f,控制点的地面摄影测量坐标Xtp,Ytp,Ztp2)量测控制点左片和右片的像点坐标x,y3)确定未知数初值XsO,YsO,ZsO,3,屮,K(线元素可用控制点均值代替,角元素可用0初始化),即:XsO=工Xtp,YsO=工Ytp,Zs=m*f443=0,申=0,K=04)计算旋转矩阵R5)利用共线方程逐点计算像点坐标的近似值6)组成误差方程式并法化7)解求外方位元素改正数8)检查迭代是否收敛(改正值是否小于某一特定常数)利用解出的外方位元素进行前方交会1)获取已知数据x0,y0,f,XS1,YS1,ZS1,(p1,31,K1,XS2,YS2,ZS2,p2,32,K22)量测像点坐标x1,y1,x2,y23)由外方位线元素计算基线分量BX,BY,BZ4)由外方位角元素计算像空间辅助坐标X1,Y1,Z1,X2,Y2,Z25)计算点投影系数N1,N26)计算地面坐标XA,YA,ZA五、实验过程程序流程图不满限则重复计算此过程完成空间后方交会求解像片的外方位元素,其中改正数小于限差(0.00003,相当于0.1的角度值)为止。在这个过程中采用迭代的方法,是外方位元素逐渐收敛于理论值,每次迭代所得的改正数都应加到上一次的初始值之中。前方交会函数利用己求得的角元素if算2张像片各门的雄转矩阵丫1V利用己求得的线兀素Xsl,YshZ&l,pO,?wObkOhXs2,Ys2,Zs2,p02,w02,k02,计算基线分:g:Bx=Xs2-Xsl;By=Ys2-Ygl:Bz=Zs2-Zsl:输入像片坐标,利用旋转矩阵求解想空间辅助型标计算点投影系数:N1=(Bx*Z2-Bz*X2)/(X1*Z2-X2*Z1):N2=(Bx*21-Bz*Xl)/(XPZ2-X2*Zr);-1计算地而摄影测:&坐标X=INXir=llys,+v,yi)+(ysi4M*)7Zri-*.V1Z1结束程序程序中的类与其主要成员、主要函数设计ControlPointData类:控制点、未知点的点名、地面摄影测量坐标、左右像片坐标Photo类:左右片的内方位元素、外方位元素及其精度Fileheader类:相片对象、控制点个数、未知点个数、控制点数组、未知点数组Adjustment类:头文件对象、控制点数组、未知点数组、控制点个数、未知点个数、boolLoadData(constCString&strFileName,CString&strData)/读取已矢口函数CString*SplitString(CStringstr,charsplit,int&iSubStrs);/分割函数voidadjustment1(CString&OutData);/后方交会函数voidadjustment2(CString&OutData);/前方交会函数voidSaveData(CString&OutData);/保存结果读取数据文件格式(.txt)elementsofinteriororientation,0,0,150.000GivenControlPoint,4GCP1,16.012,79.963,-73.93,78.706,5083.205,5852.099,527.925GCP2,88.56,81.134,-5.252,78.184,5780.02,5906.365,571.549GCP3,13.362,-79.37,-79.122,-78.879,5210.879,4258.446,461.81GCP4,82.24,-80.027,-9.887,-80.089,5909.264,4314.283,455.484UnKnownPoint,51,51.758,80.555,-39.953,78.4632,14.618,-0.231,-76.006,0.0363,49.88,-0.782,-42.201,-1.0224,86.14,-1.346,-7.706,-2.1125,48.035,-79.962,-44.438,-79.736EndData程序代码ControlPointData.hclassControlPointData:publicCDialogpublic:CStringstrID;/控制点名doublexl,yl,x2,y2;/左片、右片像点坐标doubleXtp,Ytp,Ztp;/地面摄影测量坐标doubleXs,Ys,Zs;/物方空间坐标doubleo;/单位权中误差boolstate;classPhotospublic:intxO,yO,f,m;/内方位元素doubles,k,3,k,Xs1,Xs2,Ys1,Ys2,Zs1,Zs2;/外方位元素doubleo;/单位权中误差doubleoXsl,oXs2,oYsl,oYs2,oZsl,oZs2;doubleo,os,ok,o,os,ok;/协因数Photos(void)x0=0;y0=0;f=0;classfileheaderpublic:Photosphoto;/内方位元素intStationCount;/控制点个数intOriAngleCount;/测站个数intUnKnownPointCount;/待定点个数ControlPointData*StationCoor;/控制点坐标信息ControlPointData*StationCoorJ;/控制点坐标信息ControlPointData*UnKnownPoint;/待定点坐标信息;Adjustment.h#pragmaonce#includeontrolPointData.h#includelocale.h#includemath.h#includeMatrix.hclassAdjustmentpublic:fileheaderheader;/头文件ControlPointData*KnownPoint;/已知点intKnownPointCount;/已知点个数intUnKnownPointCount;/待定点个数public:Adjustment(void);Adjustment(void);public:boolLoadData(constCString&strFileName,CString&strData);/读取已知函数CString*SplitString(CStringstr,charsplit,int&iSubStrs);/分割函数public:voidadjustment1(CString&OutData);/后方交会函数voidadjustment2(CString&OutData);/前方交会函数voidSaveData(CString&OutData);/保存结果;Adjustment.cpp#includeStdAfx.h#includeAdjustment.h#includeontrolPointData.h#includeSpaceresectionandforwardintersection.h#includeSpaceresectionandforwardintersectionDlg.h#includeAdjustment.h#include#includemath.h#includeMatrix.h#definepai3.1415926CString*Adjustment:SplitString(CStringstr,charsplit,int&iSubStrs)/分割函数intiPos=0;/分割符位置intiNums=0;/分割符的总数CStringstrTemp=str;CStringstrRight;/先计算子字符串的数量while(iPos!=T)iPos=strTemp.Find(split);if(iPos=-1)break;strRight二strTemp.Mid(iPos+1,str.GetLength();strTemp=strRight;iNums+;if(iNums=0)/没有找到分割符/子字符串数就是字符串本身iSubStrs=1;returnNULL;/子字符串数组iSubStrs=iNums+1;/子串的数量二分割符数量+1CString*pStrSplit;pStrSplit二newCStringiSubStrs;strTemp=str;CStringstrLeft;for(inti二0;iiNums;i+)iPos=strTemp.Find(split);/左子串strLeft二strTemp.Left(iPos);/右子串strRight二strTemp.Mid(iPos+1,strTemp.GetLength();strTemp=strRight;pStrSpliti二strLeft;pStrSplitiNums=strTemp;returnpStrSplit;boolAdjustment:LoadData(constCString&strFileName,CString&strData)CStdioFilesf;if(!sf.0pen(strFileName,CFile:modeRead)returnfalse;CStringstrLine;intnl;CString*strTmp二NULL;while(strLine!=_T(EndData)/读取文件头sf.ReadString(strLine);strData+二strLine;strData+=_T(rn);if(strLine!=_T(EndData)strTmp=SplitString(strLine,nl);elsebreak;if(strTmpO=elementsofinteriororientation)二_tstof(strTmp1);header.photo.y0=_tstof(strTmp2);header.photo.f=_tstof(strTmp3);elseif(strTmp0=GivenControlPoint)header.StationCount=_ttoi(strTmp1);header.StationCoor=newControlPointDataheader.StationCount;if(strTmp!二NULL)/释放内存deletestrTmp;strTmp二NULL;for(inti=0;iheader.StationCount;i+)sf.ReadString(strLine);strData+二strLine;strData+=_T(rn);strTmp=SplitString(strLine,n1);header.StationCoori.strID二strTmp0;header.StationCoori.x1=_tstof(strTmp1);header.StationCoori.y1=_tstof(strTmp2);header.StationCoori.x2=_tstof(strTmp3);header.StationCoori.y2=_tstof(strTmp4);header.StationCoori.Xtp=_tstof(strTmp5);header.StationCoori.Ytp=_tstof(strTmp6);header.StationCoori.Ztp=_tstof(strTmp7);if(strTmp!二NULL)/释放内存deletestrTmp;strTmp二NULL;elseif(strTmp0=UnKnownPoint)header.UnKnownPointCount=_ttoi(strTmpl);header.UnKnownPoint二newControlPointDataheader.UnKnownPointCount;if(strTmp!二NULL)/释放内存deletestrTmp;strTmp二NULL;for(inti=O;iheader.UnKnownPointCount;i+)sf.ReadString(strLine);strData+二strLine;strData+=_T(rn);strTmp=SplitString(strLine,n1);header.UnKnownPointi.strID=strTmp0;header.UnKnownPointi.x1=_tstof(strTmp1);header.UnKnownPointi.y1=_tstof(strTmp2);header.UnKnownPointi.x2=_tstof(strTmp3);header.UnKnownPointi.y2=_tstof(strTmp4);header.UnKnownPointi.Xtp=0;header.UnKnownPointi.Ytp=0;header.UnKnownPointi.Ztp=0;if(strTmp!二NULL)/释放内存deletestrTmp;strTmp二NULL;if(strTmp!二NULL)/释放内存deletestrTmp;strTmp二NULL;sf.Close();/关闭文件returntrue;constdoublepi=3.1415926;voidAdjustment:adjustmentl(CString&0utData)/单片后交CMatrixB,L,X;B.SetSize(2*header.StationCount,6);/系数阵L.SetSize(2*header.StationCount,1);/常数项阵X.SetSize(6,1);/未知数改正数之和的阵CMatrixR(3,3),Xb(3,1),bb(3,1);/R为旋转矩阵,Xb为X-Xs,Y-Ys,Z-Zs的矩阵,bb为X-,Y-,Z-的矩阵CMatrixDx(6,1),Nbb,Nvv;/Dx为改正数阵header.photo.m=10000;doubleXsO,YsO,ZsO,s,k;/未知数初值/确定未知数初值doublex=0,y=0,z=0;for(inti=O;iheader.StationCount;i+)x+=header.StationCoori.Xtp;y+=header.StationCoori.Ytp;z+=header.StationCoori.Ztp;XsO二x/header.StationCount;YsO二y/header.StationCount;ZsO二header.photo.m*header.photo.f/1000;=0;s=0;k=0;doublen=0;n+;/计算旋转矩阵Rdoublea1,a2,a3,b1,b2,b3,c1,c2,c3;a1=cos()*cos(k)-sin()*sin(s)*sin(k);a2=-cos()*sin(k)-sin()*sin(s)*cos(k);a3=-sin()*cos(s);b1=cos(s)*sin(k);b2=cos(s)*cos(k);b3=-sin(s);c1=sin()*cos(k)+cos()*sin(s)*sin(k);c2=-sin()*sin(k)+cos()*sin(s)*cos(k);c3=cos()*cos(s);R(0,0)=a1;R(0,1)=a2;R(0,2)=a3;R(1,0)=b1;R(1,1)=b2;R(1,2)R(2,0)=c1;R(2,1)=c2;R(2,2)=c3;/计算像点坐标的近似值,构建B,L矩阵for(inti=0;iheader.StationCount;i+)bb(0,0)=al*(header.StationCoori.Xtp-XsO)+bl*(header.StationCoori.Ytp-YsO)+c1*(header.StationCoori.Ztp-ZsO);bb(1,0)=a2*(header.StationCoori.Xtp-XsO)+b2*(header.StationCoori.Ytp-YsO)/单位为m+c2*(header.StationCoori.Ztp-ZsO);bb(2,0)=a3*(header.StationCoori.Xtp-XsO)+b3*(header.StationCoori.Ytp-YsO)+c3*(header.StationCoori.Ztp-ZsO);doublet1二header.StationCoori.x1;/(X-XO)(Y-Y0)的值,单位为mmdoublet2二header.StationCoori.y1;L(2*i,0)=(header.StationCoori.x1+header.photo.f*bb(0,0)/bb(2,0)/1000JL(2*i+1,0)=(header.StationCoori.y1+header.photo.f*bb(1,0)/bb(2,0)/1000;B(2*i,0)=(a1*header.photo.f+a3*t1)/bb(2,0)/1000;B(2*i,1)=(b1*header.photo.f+b3*t1)/bb(2,0)/1000;B(2*i,2)=(c1*header.photo.f+c3*t1)/bb(2,0)/1000;B(2*i,3)=(t2*sin(s)-(t1/header.photo.f*(t1*cos(k)-t2*sin(k)+header.photo.f*cos(k)*cos()/1000;B(2*i,4)=(-header.photo.f*sin(k)-t1/header.photo.f*(t1*sin(k)+12*cos(k)/1000;B(2*i,5)=t2/1000;B(2*i+1,0)=(a2*header.photo.f+a3*t2)/bb(2,0)/1000;B(2*i+1,1)=(b2*header.photo.f+b3*t2)/bb(2,0)/1000;B(2*i+1,2)=(c2*header.photo.f+c3*t2)/bb(2,0)/1000;B(2*i+1,3)=(-t1*sin(s)-(t2/header.photo.f*(t1*cos(K)-t2*sin(k)-header.photo.f*sin(k)*cos(s)/1000;B(2*i+1,4)=(-header.photo.f*cos(K)-t2/header.photo.f*(t1*sin(k)+t2*cos(k)/1000;B(2*i+1,5)=-11/1000;/平差计算Nbb=(B)*B;Nvv=(B)*L;Dx=(Nbb.Inv()*Nvv;Xs0+=Dx(0,0);Ys0+=Dx(l,0);Zs0+=Dx(2,0);+=Dx(3,0);3+=Dx(4,0);k+=Dx(5,0);while(fabs(Dx(0,0)0.001)|(fabs(Dx(1,0)0.001)|(fabs(Dx(2,0)0.001)|(fabs(Dx(3,0)*206265)1)|(fabs(Dx(4,0)*206265)1)|(fabs(Dx(5,0)*206265)二二二ZsO;header.photo.=;header.photo.3=3;header.photo.k=k;CMatrixV=B*Dx-L;CMatrixVt=(V)*V;/改正数转置doublemO=sqrt(Vt(0,0)/(2*header.StationCount-6);CMatrixQ=Nbb.Inv();/协因数阵/求解点位误差header.photo.oXs1=sqrt(Q(0,0)*m0;header.photo.oYs1=sqrt(Q(1,1)*m0;header.photo.oZs1=sqrt(Q(2,2)*m0;header.photo.o=sqrt(Q(3,3)*mO;header.photo.o3=sqrt(Q(4,4)*m0;header.photo.ok=sqrt(Q(5,5)*m0;CStringdata;data.Format(_T(%srn),_T(后方交会成果);OutData+=data;%s%.f),_T(左片),(迭代次数),n);OutData+=rn;data.Format(_T(%sOutData+=data;OutData+=(rnrn);%sdata.Format(_T(%srn%s%s%s%s%srn)._T(左片外方位元素(线元素为m,角元素为度),_T(Xs),_T(Ys),_T(Zs),_T(),(3),(k);OutData+=data;header.photo.Xsl,header.photo.Ysl,header.photo.Zsl,header.photo.data.Format(_T(.4f%.4frnrn),%.4f%.4f%.4f%.4f*180/pai,header.photo.s*180/pai,header.photo.k*180/pai);OutData+=data;data.Format(_T(%srn%s%.3frnrn%s%s%s%s%s%srn),_T(左片精度(线元素精度为m,角元素精度为),_T(单位权中误差mO),mO,_T(oXs),_T(。Ys),_T(oZs),_T(oe),_T(os),_T(oK);OutData+=data;data.Format(_T(%.4f%.4f%.4f%.4f%.4f%.4frn),header.photo.oXs1,header.photo.oYs1,header.photo.oZs1,header.photo.o*180/pai*3600,header.photo.os*206265,header.photo.ok*206265);OutData+=data;OutData+=(rnrn);/计算右片外方位元素/*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*/Xs0二x/header.StationCount;Ys0二y/header.StationCount;Zs0二header.photo.m*header.photo.f/1000;=0;s=0;K=0;n=0;don+;/计算旋转矩阵Rdoublea1,a2,a3,b1,b2,b3,c1,c2,c3;a1=cos()*cos(k)-sin()*sin(s)*sin(k);R(0,0)=a1;a2=-cos()*sin(k)-sin()*sin(s)*cos(k);R(0,1)=a2;a3=-sin()*cos(s);R(0,2)=a3;b1=cos(s)*sin(k);R(1,0)=b1;b2=cos(s)*cos(k);R(1,1)=b2;b3=-sin(s);R(1,2)=b3;c1=sin()*cos(k)+cos()*sin(s)*sin(k);R(2,0)=c1;c2=-sin()*sin(k)+cos()*sin(s)*cos(k);R(2,1)=c2;c3=cos()*cos(s);R(2,2)=c3;/计算像点坐标的近似值,构建B,L矩阵for(inti=0;iheader.StationCount;i+)bb(0,0)=al*(header.StationCoori.Xtp-XsO)+bl*(header.StationCoori.Ytp-YsO)+c1*(header.StationCoori.Ztp-ZsO);bb(l,0)=a2*(header.StationCoori.Xtp-XsO)+b2*(header.StationCoori.Ytp-YsO)/单位为m+c2*(header.StationCoori.Ztp-ZsO);bb(2,0)=a3*(header.StationCoori.Xtp-XsO)+b3*(header.StationCoori.Ytp-YsO)+c3*(header.StationCoori.Ztp-ZsO);doublet1二header.StationCoori.x2;/(X-XO)(YY0)的值,单位为mmdoublet2二header.StationCoori.y2;L(2*i,0)=(header.StationCoori.x2+header.photo.f*bb(0,0)/bb(2,0)/1000L(2*i+1,0)=(header.StationCoori.y2+header.photo.f*bb(1,0)/bb(2,0)/1000;B(2*i,0)=(a1*header.photo.f+a3*t1)/bb(2,0)/1000;B(2*i,1)=(b1*header.photo.f+b3*t1)/bb(2,0)/1000;B(2*i,2)=(c1*header.photo.f+c3*t1)/bb(2,0)/1000;B(2*i,3)=(t2*sin(s)-(t1/header.photo.f*(t1*cos(k)-t2*sin(k)+header.photo.f*cos(k)*cos(s)/1000;B(2*i,4)=(header.photo.f*sin(K)t1/header.photo.f*(t1*sin(k)+t2*cos(k)/1000;B(2*i,5)=t2/1000;B(2*i+1,0)=(a2*header.photo.f+a3*t2)/bb(2,0)/1000;B(2*i+1,1)=(b2*header.photo.f+b3*t2)/bb(2,0)/1000;B(2*i+1,2)=(c2*header.photo.f+c3*t2)/bb(2,0)/1000;B(2*i+1,3)=(-t1*sin(s)-(t2/header.photo.f*(t1*cos(k)t2*sin(k)header.photo.f*sin(k)*cos(s)/1000;B(2*i+l,4)=(-header.photo.f*cos(k)-t2/header.photo.f*(tl*sin(k)+t2*cos(k)/1000;B(2*i+1,5)=-tl/1000;/平差计算Nbb=(B)*B;Nvv=(B)*L;Dx=(Nbb.Inv()*Nvv;Xs0+=Dx(0,0);Ys0+=Dx(1,0);Zs0+=Dx(2,0);+=Dx(3,0);3+=Dx(4,0);k+=Dx(5,0);while(fabs(Dx(0,0)0.001)|(fabs(Dx(1,0)0.001)|(fabs(Dx(2,0)0.001)|(fabs(Dx(3,0)*206265)1)|(fabs(Dx(4,0)*206265)1)|(fabs(Dx(5,0)*206265)二二二ZsO;header.photo.=;header.photo.3=3;header.photo.k=k;V=B*Dx-L;Vt=(V)*V;/改正数转置mO=sqrt(Vt(0,0)/(2*header.StationCount-6);Q=Nbb.Inv();/协因数阵/求解点位误差%s%.f),_T(右片),(迭代次数),n);header.photo.oXs2=sqrt(Q(0,0)*m0;header.photo.oYs2=sqrt(Q(1,1)*m0;header.photo.oZs2=sqrt(Q(2,2)*m0;header.photo.o=sqrt(Q(3,3)*mO;header.photo.o3=sqrt(Q(4,4)*m0;header.photo.ok=sqrt(Q(5,5)*m0;data.Format(_T(%sOutData+=data;OutData+=(rnrn);%sdata.Format(_T(%srn%s%s%s%s%srn)._T(右片外方位元素(线元素为m,角元素为度),_T(Xs),_T(Ys),_T(Zs),_T(),(3),(k);OutData+=data;data.Format(_T(%.4f%.4f%.4f%.4f%.4f%.4frnrn),header.photo.Xs2,header.photo.Ys2,header.photo.Zs2,header.photo.*180/pai,header.photo.s*180/pai,header.photo.k*180/pai);OutData+=data;data.Format(_T(%srn%s%.4f),_T(右片精度(线元素精度为m,角元素精度为),(单位权中误差mO(单位为um),mO);OutData+=data;OutData+=(rnrn);data.Format(_T(%s%s%s%s%s%srn),_T(oXs),_T(oYs),_T(oZs),_T(oe),_T(o3),_T(oK);OutData+=data;data.Format(_T(%.4f%.4f%.4f%.4f%.4f%.4frnrnrn),header.photo.oXs2,header.photo.oYs2,header.photo.oZs2,header.photo.o*180/pai*3600,header.photo.os*206265,header.photo.ok*206265);OutData+=data;voidAdjustment:adjustment2(CString&OutData)/空间前交/由外方位线元素计算基线分量BX,BY,BZdoubleBX二header.photo.Xs2-header.photo.Xs1;doubleBY二header.photo.Ys2-header.photo.Ys1;doubleBZ二header.photo.Zs2-header.photo.Zs1;/计算旋转矩阵RCMatrixR1(3,3),R2(3,3),XYZ1(3,1),XYZ2(3,1);doublea1,a2,a3,b1,b2,b3,c1,c2,c3;a1=cos(header.photo.)*cos(header.photo.k)-sin(header.photo.)*sin(header.photo.s)*sin(header.photo.k);R1(0,0)=a1;a2=-cos(header.photo.)*sin(header.photo.k)-sin(header.photo.)*sin(header.photo.s)*cos(header.photo.k);R1(0,1)=a2;a3=-sin(header.photo.)*cos(header.photo.s);R1(0,2)=a3;b1=cos(header.photo.s)*sin(header.photo.k);R1(1,0)=b1;b2二cos(header.photo.s)*cos(header.photo.k);Rl(l,l)=b2;b3=-sin(header.photo.s);R1(1,2)=b3;c1=sin(header.photo.)*cos(header.photo.k)+cos(header.photo.)*sin(header.photo.s)*sin(header.photo.k);R1(2,0)=c1;c2=-sin(header.photo.)*sin(header.photo.k)+cos(header.photo.)*sin(header.photo.s)*cos(header.photo.k);R1(2,1)=c2;c3=cos(header.photo.)*cos(header.photo.s);R1(2,2)=c3;a1=cos(header.photo.)*cos(header.photo.k)-sin(header.photo.)*sin(header.photo.s)*sin(header.photo.k);R2(0,0)=a1;a2=-cos(header.photo.)*sin(header.photo.k)-sin(header.photo.)*sin(header.photo.s)*cos(header.photo.k);R2(0,1)=a2;a3=-sin(header.photo.)*cos(header.photo.s);R2(0,2)=a3;b1=cos(header.photo.s)*sin(header.photo.k);R2(1,0)=b1;b2=cos(header.photo.s)*cos(header.photo.k);R2(1,1)=b2;b3=-sin(header.photo.s);R2(1,2)=b3;c1=sin(header.photo.)*cos(header.photo.k)+cos(header.photo.)*sin(header.photo.s)*sin(header.photo.k);R2(2,0)=c1;c2=-sin(header.photo.)*sin(header.photo.k)+cos(header.photo.)*sin(header.photo.s)*cos(header.photo.k);R2(2,1)=c2;c3=cos(header.photo.)*cos(header.photo.s);R2(2,2)=c3;CMatrixNEI1(3,1),NEI2(3,1);CStringdata;data.Format(_T(%srn),_T(前方交会成果);OutData+=data;OutData+=rn;data.Format(_T(%srn%s%s%s%srn),_T(未知点),(点名),_T(Xtp/m),_T(Ytp/m),_T(Ztp/m);OutData+=data;OutData+=rn;for(inti=O;iheader.UnKnownPointCount;i+)NEI1(0,0)=header.UnKnownPointi.x1;NEIl(l,0)=header.UnKnownPointi.yl;NEIl(2,0)=-header.photo.f;NEI2(0,0)=header.UnKnownPointi.x2;NEI2(1,0)=header.UnKnownPointi.y2;NEI2(2,0)=-header.photo.f;XYZ1=R1*NEI1;XYZ2=R2*NEI2;doubleN1=(BX*XYZ2(2,0)-BZ*XYZ2(0,0)/(XYZ1(0,0)*XYZ2(2,0)-XYZ1(2,0)*XYZ2(0,0);doubleN2=(BX*XYZ1(2,0)-BZ*XYZ1(0,0)/(XYZ1(0,0)*XYZ2(2,0)-XYZ1(2,0)*XYZ2(0,0);header.UnKnownPointi.Xtp二header.photo.Xs1+N1*XYZ1(0,0);header.UnKnownPointi.Ytp二header.photo.Ys1+N1*XYZ1(1,0);header.UnKnownPointi.Ztp二header.photo.Zs1+N1*XYZ1(2,0);data.Format(_T(%s%.4f%.4f%.4frn),header.UnKnownPointi.strID,header.UnKnownPointi.Xtp,header.UnKnownPointi.Ytp,header.UnKnownPointi.Ztp);OutData+=data;OutData+=rn;/检核点header.StationCoorJ=newControlPointDataheader.StationCount;data.Format(_T(%srn%s%s%s%srn),_T(检核点),_T(点名),_T(Xtp差值/m),_T(Ys差值/m),_T(Zs差值/m);OutData+=data;OutData+=rn;for(inti=O;iheader.StationCount;i+)NEI1(0,0)=header.StationCoori.x1;NEI1(1,0)=header.StationCoori.y1;NEI1(2,0)=-header.photof;NEI2(0,0)=header.StationCoori.x2;NEI2(1,0)=header.StationCoori.y2;NEI2(2,0)=-header.photof;XYZ1=R1*NEI1;XYZ2=R2*NEI2;doubleN1=(BX*XYZ2(2,0)-BZ*XYZ2(0,0)/(XYZ1(0,0)*XYZ2(2,0)-XYZ1(2,0)*XYZ2(0,0);doubleN2=(BX*XYZl(2,0)-BZ*XYZl(0,0)/(XYZl(0,0)*XYZ2(2,0)-XYZl(2,0)*XYZ2(0,0);header.StationCoorJi.Xtp二header.photo.Xs1+N1*XYZ1(0,0);header.StationCoorJi.Ytp二header.photo.Ys1+N1*XYZ1(1,0);header.StationCoorJi.Ztp二header.photo.Zs1+N1*XYZ1(2,0);data.Format(_T(%s%.4f%.4f%.4frn),header.StationCoori.strID,(header.StationCoorJi.Xtp-header.StationCoori.Xtp),(header.StationCoorJi.Ytp-header.StationCoori.Ytp),(header.StationCoorJi.Ztp-header.StationCoori.Ztp);OutData+=data;OutData+=rn;voidAdjustment:SaveData(CString&OutData)/文件保存平差信息CFileDialogdlgfile(FALSE,_T(txt);if(dlgfile.DoModal()=IDCANCEL)return;CStringstrfilename二dlgfile.GetPathName();CStdioFilewfile;wfile.Open(strfilename,CFile:modeWrite|CFile:modeCreate|CFile:modeNoTruncate);wfile.WriteString(OutData);wfile.Close();SpaceresectionandforwardintersectionDlg.cpp#includeontrolPointData.h#includeAdjustment.h#includelocale.h#includemath.h#includeMatrix.hAdjustmentST;voidCSpaceresectionandforwardintersectionDlg:OnBnClickedButton1()/读取文本/TODO:在此添加控件通知处理程序代码CFileDialogdlgFile(TRUE,_T(txt),NULL,OFN_ALLOWMULTISELECT|OFN_EXPLORER,_T(文本文件)|*.txt);if(dlgFile.DoModal()=IDCANCEL)return;CStringstrFileName二dlgFile.GetPathName();setlocale(LC_ALL,);ST.LoadData(strFileName,strData);UpdateData(FALSE);voidCSpaceresectionandforwardintersectionDlg:OnBnClickedButton2()/单片后交/TODO:在此添加控件通知处理程序代码OutData=_T();/清空OutDataST.adjustmentl(OutData);UpdateData(FALSE);voidCSpaceresectionandforwardintersectionDlg:OnBnClickedOk()/空间前交/TODO:在此添加控件通知处理程序代码ST.adjustment2(OutData);UpdateData(FALSE);voidCSpaceresectionandforwardintersectionDlg:OnBnClickedButton3()/保存结果/TODO:在此添加控件通知处理程序代码ST.SaveData(OutData);五、实验结果后方交会成果左片迭代次数5左片外方位元素(线元素为m,角元素为度)XsYsZs申k左片精度(线元素精度为m,角元素精度为)单位权中误差m06.5779orookrokoXsoYsoZso申右片迭代次数5右片外方位元素(线元素为m,角元素为度)XsYsZs申右片精度(线元素精度为m,角元素精度为)单位权中误差mO(单位为um)6.5779oXsoYsoZso申oroOK0.112439.258840.117213.4085前方父会成果未知点点名Xtp/mYtp/mZtp/m15431.48945879.3682549.723325147.38895055.5063485.001035495.78675082.6898506.677345844.17375109.8962528.420055559.94094286.1586463.5233检核点点名Xtp差值/mYs差值/mZs差值/mGCP10.0147-0.08120.0902GCP20.01430.0208-0
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!