资源简介
这个是摄影测量解析中后方交会求外方位元素的列子,测绘工程的可以参考一下,使用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
评论
共有 条评论