资源简介

这个是摄影测量解析中后方交会求外方位元素的列子,测绘工程的可以参考一下,使用C++语言实现的。

资源截图

代码片段和文件信息

#include “Image.h“
#include 
#include 
#include 

using namespace std;

Image::Image()
{
NumKnowP=0;
sigma0=0.0;
KnPointData.SetSize(11);
XiangDianKno.SetSize(11);
XiangDianJinSi.SetSize(11);
WaiFangConst.SetSize(61);
WaiFangWei.SetSize(61);
WaiFangDX.SetSize(61);
XuanZhuan.SetSize(33);
}

Image::~Image()
{

}
//////////////////////////////////////////////////////////////////////////
//读取源数据
void Image::ReadData(char * path)
{
ifstream input(pathios::in);
if(!input)
{
cerr<<“Cant not open the file: “< exit(1);
}

input>>fLnegth>>NumKnowP;//读取焦距和控制点数目

//根据控制点数目设置矩阵大小
KnPointData.SetSize(NumKnowP3);
XiangDianKno.SetSize(NumKnowP2);
XiangDianJinSi.SetSize(NumKnowP2);
Axishu.SetSize(2*NumKnowP6);
Lconst.SetSize(2*NumKnowP1);

VXiangDian.SetSize(2*NumKnowP1);
for(int j=0;j<2*NumKnowP;j++)
{
VXiangDian(j0)=0.0;
}

//读取控制点数据
for(int i=0;i {
for(int j=0;j<5;j++)
{
if(j<2)
{
input>>XiangDianKno(ij);
}
else
input>>KnPointData(ij-2);
}
}

//读取外方位元素近似值
for(i=0;i<6;i++)
{
input>>WaiFangWei(i0);
}
WaiFangConst=WaiFangWei;
input.close();

}

//////////////////////////////////////////////////////////////////////////
//打印结果
void Image::PrintResult(char *path)
{
ofstream output(pathios::out);
if(!output)
{
cerr<<“cant open the file: “< exit(1);
}

output<<“========观测数据=======\n\n“;
output<<“焦距:“< output<<“控制点数目:“<
output<<“\n\n控制点数据:“< output<
output<<“\n\n控制点像点观测值:\n“;
output<
output<<“\n\n外方位元素初值:\n“;
output<
output<<“\n\n========平差计算结果=======\n\n“;
//  output<<“\n\n外方位元素改正数:\n“;
//  output< output<<“\n外方位元素(从上至下依次为:XsYsZsphiomegakappa):\n“;
output<
output<<“\n\n单位权中误差:\nsigma0=“<

output.close();

cout<<“请查看DATA\\Result.txt“<}

//////////////////////////////////////////////////////////////////////////
//计算旋转矩阵R
void Image::CalXuanZhuan()
{
double phi=WaiFangWei(30);
double ome=WaiFangWei(40);
double ka=WaiFangWei(50);

XuanZhuan(00)=cos(phi)*cos(ka)-sin(phi)*sin(ome)*sin(ka);
XuanZhuan(01)=-cos(phi)*sin(ka)-sin(phi)*sin(ome)*cos(ka);
XuanZhuan(02)=-sin(phi)*cos(ome);
XuanZhuan(10)=cos(ome)*sin(ka);
XuanZhuan(11)=cos(ome)*cos(ka);
XuanZhuan(12)=-sin(ome);
XuanZhuan(20)=sin(phi)*cos(ka)+cos(phi)*sin(ome)*sin(ka);
XuanZhuan(21)=-sin(phi)*sin(ka)+cos(phi)*sin(ome)*cos(ka);
XuanZhuan(22)=cos(phi)*cos(ome);
}

//////////////////////////////////////////////////////////////////////////
//计算像点近似坐标
void Image::CalXiangJinSi()
{
double Xs=WaiFangWei(00);
double Ys=WaiFangWei(10);
double Zs=WaiFangWei(20);

double a1=XuanZhuan(00);
double a2=XuanZhuan(01);
double a3=XuanZhuan(02);
double b1=Xu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        556  2013-05-08 22:47  HouFang\DATA\Result.txt

     文件        277  2013-05-08 18:27  HouFang\DATA\Source.txt

     文件       4545  2013-05-08 14:40  HouFang\HouFang.dsp

     文件        522  2013-05-08 12:32  HouFang\HouFang.dsw

     文件      58368  2013-05-08 22:51  HouFang\HouFang.ncb

     文件      53760  2013-05-08 22:51  HouFang\HouFang.opt

     文件       1303  2013-05-08 22:36  HouFang\HouFang.plg

     文件       6372  2013-05-08 22:34  HouFang\Image.cpp

     文件       1265  2013-05-08 22:26  HouFang\Image.h

     文件      27220  2002-05-26 15:45  HouFang\include\matrix.h

     文件        145  2013-05-08 22:36  HouFang\Main.cpp

     文件        114  2013-05-08 22:54  HouFang\使用说明.txt

     目录          0  2013-05-08 22:51  HouFang\DATA

     目录          0  2013-05-08 22:52  HouFang\include

     目录          0  2013-05-08 22:55  HouFang

----------- ---------  ---------- -----  ----

               154447                    15


评论

共有 条评论