搜档网
当前位置:搜档网 › 前方后方空间交会实验报告

前方后方空间交会实验报告

前方后方空间交会实验报告
前方后方空间交会实验报告

中南大学

本科生课程设计(实践)任务书、设计报告 (摄影测量与遥感概论)

题目空间后方-前方交会

学生姓名

指导教师邹峥嵘

学院地球科学与信息物理学院

专业班级测绘0902班

学生学号

一、实验目的

通过对数字影像空间后交前交的程序设计实验,要求我们进一步理解和掌握影像外方位元素的有关理论、原理和方法。利用计算机程序设计语言编写摄影测量空间交会软件进行快速确定影像的外方位元素及其精度,然后通过求得的外方位元素求解未知点的地面摄影测量坐标,达到通过摄影测量量测地面地理数据的目的。

二、实验要求

用C、VB或者Matlab编写空间后方交会-前方交会计算机程序。 提交实验报告:程序框图,程序源代码、计算结果及体会。

计算结果:地面点坐标、外方位元素及精度。

完成时间:2011年11月17日。

三、实验数据

f=150.000mm,x0=0,y0=0

四、实验思路

利用后方交会得出两张像片各自的外方位元素

1)获取已知数据:从摄影资料中插曲像片比例尺、平均航高、内

方位元素以及控制点的地面摄影测量坐标及对应的像点坐标。

2)确定未知数的初始值:在竖直摄影的情况下,胶原素的初始值

为0,线元素其中Zs=m*f+,Xs=,Ys=。

3)计算旋转矩阵R。

4)逐点计算像点坐标的近似值:利用共线方程。

5)组成误差方程并法化。

6)解求外方位元素。

7)检查计算是否收敛。

利用解求出的外方位元素进行前方交会

1)用各自像片的角元素计算出左右像片的旋转矩阵R1和R2。

2)根据左右像片的外方位元素计算摄影基线分量Bx,By,Bz。

3)逐点计算像点的空间辅助坐标。

4) 计算投影系数。

5) 计算未知点的地面摄影测量坐标。

6) 重复以上步骤完成所有点的地面坐标的计算。

五、 实验过程

程序流程框图

不满足限差则重复计算

程序中的主要函数设计

子函数(矩阵求积multiply,计算函数Resection,矩阵转置transpose,矩阵求逆inMerse1,输出函数shuchu,左片的外方位元素求解函数zuobian。右片的外方位元素求解函数youbian。)

程序源代码

#include "stdio.h"

#include "math.h"

double Xs1,Xs2,Ys1,Ys2,Zs1,Zs2,p01,p02,w01,w02,k01,k02;

//求矩阵a的转置矩阵b,a为m行、n列

void transpose(double *a, double *b, int m, int n);

//矩阵a乘以矩阵b,结果存储在c中,a为m×n大小,b为n×l大小

void multiply(double *a, double *b, double *c, int m, int n, int l);

//求矩阵a的逆

int inMerse1(double *a, int n);

//输出m行、n列的矩阵a

void shuchu(double *a, int m, int n);

//计算并输出左片的外方位元素

void zuobian();

//计算并输出右片的外方位元素

void youbian();

void zuobian()

{

FILE *fp = NULL;

FILE *fp1 = NULL;

if((fp=fopen("F:\image.txt","r")) == NULL)

{

printf("Open file error!");

return;

}

if((fp1=fopen("F:\ground.txt","r")) == NULL)

{

printf("Open file error!");

return;

}

//像点坐标和地面点坐标

double imagecontrol[4][2]={0.0};

double groundcontrol[4][3]={0.0};

//摄影比例尺分母

double m = 9943;

double f=0.15;

long i,j,k;

for(i=0; i<4; i++)

{

for(j=0; j<2; j++)

{

fscanf(fp, "%lf", &imagecontrol[i][j]);

imagecontrol[i][j] /= 1000.0;

}

for(k=0; k<3; k++)

{

fscanf(fp1, "%lf", &groundcontrol[i][k]);

}

}

fclose(fp);

fclose(fp1);

//计算外方位元素初始值

for( i=0;i<4;i++)

{

Xs1+=groundcontrol[i][0];

Ys1+=groundcontrol[i][1];

Zs1+=groundcontrol[i][2];

}

Xs1/=4.0;

Ys1/=4.0;

Zs1/=4.0;

Zs1+=m*f;

double R[3][3]={0.0};

double L3=0.0,L1=0.0,L2=0.0;

double L[8][1]={0.0},x=0.0,y=0.0;

double A[8][6]={0.0},A T[6][8]={0.0},ATA[6][6]={0.0},B[6][8]={0.0};

double V[6][1]={0.0};

int n=0;

do

{

//计算旋转矩阵

R[0][0]=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01);

R[0][1]=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);

R[0][2]=(-1)*sin(p01)*cos(w01);

R[1][0]=cos(w01)*sin(k01);

R[1][1]=cos(w01)*cos(k01);

R[1][2]=(-1)*sin(w01);

R[2][0]=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);

R[2][1]=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);

R[2][2]=cos(p01)*cos(w01);

for(i=0,j=0;j<4;i+=2,j++)

{

//计算像点坐标的近似值

L1=R[0][0]*(groundcontrol[j][0]-Xs1)+R[1][0]*(groundcontrol[j][1]-Ys1)+R[2][0]*(ground control[j][2]-Zs1);

L2=R[0][1]*(groundcontrol[j][0]-Xs1)+R[1][1]*(groundcontrol[j][1]-Ys1)+R[2][1]*(ground control[j][2]-Zs1);

L3=R[0][2]*(groundcontrol[j][0]-Xs1)+R[1][2]*(groundcontrol[j][1]-Ys1)+R[2][2]*(ground control[j][2]-Zs1);

x=(-1)*f*L1/L3;

y=(-1)*f*L2/L3;

//计算常数项

L[2*j][0]=imagecontrol[j][0]-x;

L[2*j+1][0]=imagecontrol[j][1]-y;

//计算系数矩阵

A[i][0]=(R[0][0]*f+R[0][2]*imagecontrol[j][0])/L3;

A[i][1]=(R[1][0]*f+R[1][2]*imagecontrol[j][0])/L3;

A[i][2]=(R[2][0]*f+R[2][2]*imagecontrol[j][0])/L3;

A[i][3]=imagecontrol[j][1]*sin(w01)-((imagecontrol[j][0]/f)*(imagecontrol[j][0]*cos(k01)-i magecontrol[j][1]*sin(k01))+f*cos(k01))*cos(w01);

A[i][4]=(-1)*f*sin(k01)-(imagecontrol[j][0]/f)*(imagecontrol[j][0]*sin(k01)+imagecontrol[j] [1]*cos(k01));

A[i][5]=imagecontrol[j][1];

A[i+1][0]=(R[0][1]*f+R[0][2]*imagecontrol[j][1])/L3;

A[i+1][1]=(R[1][1]*f+R[1][2]*imagecontrol[j][1])/L3;

A[i+1][2]=(R[2][1]*f+R[2][2]*imagecontrol[j][1])/L3;

A[i+1][3]=(-1)*imagecontrol[j][0]*sin(w01)-((imagecontrol[j][1]/f)*(imagecontrol[j][0]*cos (k01)-imagecontrol[j][1]*sin(k01))-f*sin(k01))*cos(w01);

A[i+1][4]=(-1)*f*cos(k01)-(imagecontrol[j][1]/f)*(imagecontrol[j][0]*sin(k01)+imagecontro l[j][1]*cos(k01));

A[i+1][5]=(-1)*imagecontrol[j][0];

}

transpose(&A[0][0],&AT[0][0],8,6);

multiply(&AT[0][0],&A[0][0],&ATA[0][0],6,8,6);

inMerse1(*ATA,6);

multiply(&ATA[0][0],&AT[0][0],&B[0][0],6,6,8);

multiply(&B[0][0],&L[0][0],&V[0][0],6,8,1);

Xs1+=V[0][0];

Ys1+=V[1][0];

Zs1+=V[2][0];

p01+=V[3][0];

w01+=V[4][0];

k01+=V[5][0];

n++;

}while(fabs(V[3][0])>=0.00001||fabs(V[4][0])>=0.00001||fabs(V[5][0])>=0.00001);

R[0][0]=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01);

R[0][1]=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);

R[0][2]=(-1)*sin(p01)*cos(w01);

R[1][0]=cos(w01)*sin(k01);

R[1][1]=cos(w01)*cos(k01);

R[1][2]=(-1)*sin(w01);

R[2][0]=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);

R[2][1]=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);

R[2][2]=cos(p01)*cos(w01);

//进行未知数的精度评定

double A V[8][1],X[8][1],XT[1][8],XTX[1][1],mo,D[6][6],mi[6];

multiply(&A[0][0],&V[0][0],&A V[0][0],8,6,1);

for(i=0;i<8;i++)

X[i][0]=A V[i][0]-L[i][0];

transpose(&X[0][0],&XT[0][0],8,1);

multiply(&XT[0][0],&X[0][0],&XTX[0][0],1,8,1);

mo=XTX[0][0]/2;

for(i=0;i<6;i++)

for(j=0;j<6;j++)

D[i][j]=mo*ATA[i][j];

for(i=0;i<6;i++)

{

mi[i]=sqrt(D[i][i]);

}

printf("左片结果为:\n\n");

printf("旋转矩阵R为:\n");

shuchu(&R[0][0],3,3);

printf("外方为元素为:\n");

printf("Xs1=%lf\n",Xs1);

printf("Ys1=%lf\n",Ys1);

printf("Zs1=%lf\n",Zs1);

printf("p01=%lf\n",p01);

printf("w01=%lf\n",w01);

printf("k01=%lf\n",k01);

printf("各外方位元素精度为:\n");

printf("m1=%lf\nm2=%lf\nm3=%lf\nm4=%lf\nm5=%lf\nm6=%lf\n",mi[0],mi[1],mi[2],mi[3],mi[ 4],mi[5]);

printf("迭代次数为:%d\n\n\n\n",n);

fclose(fp);

}

void youbian()

{

FILE *fp = NULL;

FILE *fp1 = NULL;

if((fp=fopen("F:\image2.txt","r")) == NULL)

{

printf("Open file error!");

return;

}

if((fp1=fopen("F:\ground.txt","r")) == NULL)

{

printf("Open file error!");

return;

}

//像点坐标和地面点坐标

double imagecontrol[4][2]={0.0};

double groundcontrol[4][3]={0.0};

//摄影比例尺分母

double m = 10177;

double f=0.15;

long i,j,k;

for(i=0; i<4; i++)

{

for(j=0; j<2; j++)

{

fscanf(fp, "%lf", &imagecontrol[i][j]);

imagecontrol[i][j] /= 1000.0;

}

for(k=0; k<3; k++)

{

fscanf(fp1, "%lf", &groundcontrol[i][k]);

}

}

fclose(fp);

fclose(fp1);

//计算外方位元素初始值

for( i=0;i<4;i++)

{

Xs2+=groundcontrol[i][0];

Ys2+=groundcontrol[i][1];

Zs2+=groundcontrol[i][2];

}

Xs2/=4.0;

Ys2/=4.0;

Zs2/=4.0;

Zs2+=m*f;

double R[3][3]={0.0};

double L3=0.0,L1=0.0,L2=0.0;

double L[8][1]={0.0},x=0.0,y=0.0;

double A[8][6]={0.0},A T[6][8]={0.0},ATA[6][6]={0.0},B[6][8]={0.0};

double V[6][1]={0.0};

int n=0;

do

{

R[0][0]=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);

R[0][1]=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);

R[0][2]=(-1)*sin(p02)*cos(w02);

R[1][0]=cos(w02)*sin(k02);

R[1][1]=cos(w02)*cos(k02);

R[1][2]=(-1)*sin(w02);

R[2][0]=sin(p02)*cos(k02)+cos(p02)*sin(w02)*sin(k02);

R[2][1]=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);

R[2][2]=cos(p02)*cos(w02);

for(i=0,j=0;j<4;i+=2,j++)

{

//计算像点坐标的近似值

L1=R[0][0]*(groundcontrol[j][0]-Xs2)+R[1][0]*(groundcontrol[j][1]-Ys2)+R[2][0]*(ground control[j][2]-Zs2);

L2=R[0][1]*(groundcontrol[j][0]-Xs2)+R[1][1]*(groundcontrol[j][1]-Ys2)+R[2][1]*(ground control[j][2]-Zs2);

L3=R[0][2]*(groundcontrol[j][0]-Xs2)+R[1][2]*(groundcontrol[j][1]-Ys2)+R[2][2]*(ground control[j][2]-Zs2);

x=(-1)*f*L1/L3;

y=(-1)*f*L2/L3;

//计算常数项矩阵

L[2*j][0]=imagecontrol[j][0]-x;

L[2*j+1][0]=imagecontrol[j][1]-y;

//计算系数矩阵

A[i][0]=(R[0][0]*f+R[0][2]*imagecontrol[j][0])/L3;

A[i][1]=(R[1][0]*f+R[1][2]*imagecontrol[j][0])/L3;

A[i][2]=(R[2][0]*f+R[2][2]*imagecontrol[j][0])/L3;

A[i][3]=imagecontrol[j][1]*sin(w02)-((imagecontrol[j][0]/f)*(imagecontrol[j][0]*cos(k02)-i magecontrol[j][1]*sin(k02))+f*cos(k02))*cos(w02);

A[i][4]=(-1)*f*sin(k02)-(imagecontrol[j][0]/f)*(imagecontrol[j][0]*sin(k02)+imagecontrol[j] [1]*cos(k02));

A[i][5]=imagecontrol[j][1];

A[i+1][0]=(R[0][1]*f+R[0][2]*imagecontrol[j][1])/L3;

A[i+1][1]=(R[1][1]*f+R[1][2]*imagecontrol[j][1])/L3;

A[i+1][2]=(R[2][1]*f+R[2][2]*imagecontrol[j][1])/L3;

A[i+1][3]=(-1)*imagecontrol[j][0]*sin(w02)-((imagecontrol[j][1]/f)*(imagecontrol[j][0]*cos (k02)-imagecontrol[j][1]*sin(k02))-f*sin(k02))*cos(w02);

A[i+1][4]=(-1)*f*cos(k02)-(imagecontrol[j][1]/f)*(imagecontrol[j][0]*sin(k02)+imagecontro l[j][1]*cos(k02));

A[i+1][5]=(-1)*imagecontrol[j][0];

}

transpose(&A[0][0],&AT[0][0],8,6);

multiply(&AT[0][0],&A[0][0],&ATA[0][0],6,8,6);

inMerse1(*ATA,6);

multiply(&ATA[0][0],&AT[0][0],&B[0][0],6,6,8);

multiply(&B[0][0],&L[0][0],&V[0][0],6,8,1);

Xs2+=V[0][0];

Ys2+=V[1][0];

Zs2+=V[2][0];

p02+=V[3][0];

w02+=V[4][0];

k02+=V[5][0];

n++;

}while(fabs(V[3][0])>=0.00001||fabs(V[4][0])>=0.00001||fabs(V[5][0])>=0.00001);

R[0][0]=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);

R[0][1]=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);

R[0][2]=(-1)*sin(p02)*cos(w02);

R[1][0]=cos(w02)*sin(k02);

R[1][1]=cos(w02)*cos(k02);

R[1][2]=(-1)*sin(w02);

R[2][0]=sin(p02)*cos(k02)+cos(p02)*sin(w02)*sin(k02);

R[2][1]=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);

R[2][2]=cos(p02)*cos(w02);

//进行未知数的精度评定

double A V[8][1],X[8][1],XT[1][8],XTX[1][1],mo,D[6][6],mi[6];

multiply(&A[0][0],&V[0][0],&A V[0][0],8,6,1);

for(i=0;i<8;i++)

X[i][0]=A V[i][0]-L[i][0];

transpose(&X[0][0],&XT[0][0],8,1);

multiply(&XT[0][0],&X[0][0],&XTX[0][0],1,8,1);

mo=XTX[0][0]/2;

for(i=0;i<6;i++)

for(j=0;j<6;j++)

D[i][j]=mo*ATA[i][j];

for(i=0;i<6;i++)

{

mi[i]=sqrt(D[i][i]);

}

printf("右片结果为:\n\n");

printf("旋转矩阵R为:\n");

shuchu(&R[0][0],3,3);

printf("外方为元素为:\n");

printf("Xs2=%lf\n",Xs2);

printf("Ys2=%lf\n",Ys2);

printf("Zs2=%lf\n",Zs2);

printf("p02=%lf\n",p02);

printf("w02=%lf\n",w02);

printf("k02=%lf\n",k02);

printf("各外方位元素精度为:\n");

printf("m1=%lf\nm2=%lf\nm3=%lf\nm4=%lf\nm5=%lf\nm6=%lf\n",mi[0],mi[1],mi[2],mi[3],mi[ 4],mi[5]);

printf("迭代次数为:%d\n",n);

fclose(fp);

}

//求矩阵a的转置矩阵b,a为m行、n列

void transpose(double *a, double *b, int m, int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

b[j*m+i] = a[i*n+j];

}

}

}

//矩阵a乘以矩阵b,结果存储在c中,a为m×n大小,b为n×l大小

void multiply(double *a, double *b, double *c, int m, int n, int l)

{

int i,j,k;

double t;

for(i=0;i

{

for(j=0;j

{

t=0;

for(k=0;k

{

t += a[i*n+k]*b[k*l+j];

}

c[i*l+j]=t;

}

}

}

//求矩阵a的逆

int inMerse1(double *a, int n)

{

int *is, *js, i, j, k, l, u, M;

double d,p;

is = new int[n];

js = new int[n];

for(k=0; k<=n-1; k++)

{

d=0.0;

for(i=k; i<=n-1; i++)

{

for(j=k; j<=n-1; j++)

{

l=i*n+j; p=fabs(a[l]);

if (p>d) { d=p; is[k]=i; js[k]=j;}

}

}

if(d+1.0==1.0)

{

delete []is;

delete []js;

printf("Error, not inMerse!\n");

return 0;

}

if(is[k] != k)

for(j=0; j<=n-1; j++)

{

u=k*n+j;

M=is[k]*n+j;

p=a[u];

a[u]=a[M];

a[M]=p;

}

if(js[k]!=k)

for(i=0; i<=n-1; i++)

{

u=i*n+k;

M=i*n+js[k];

p=a[u];

a[u]=a[M];

a[M]=p;

}

l=k*n+k;

a[l]=1.0/a[l];

for(j=0; j<=n-1; j++)

if(j!=k)

{

u=k*n+j; a[u]=a[u]*a[l];

}

for(i=0; i<=n-1; i++)

if(i!=k)

for(j=0; j<=n-1; j++)

if(j!=k)

{

u=i*n+j;

a[u]=a[u]-a[i*n+k]*a[k*n+j];

}

for(i=0; i<=n-1; i++)

if(i!=k)

{

u=i*n+k;

a[u]=-a[u]*a[l];

}

}

for(k=n-1; k>=0; k--)

{

if (js[k]!=k)

{

for(j=0; j<=n-1; j++)

{

u=k*n+j; M=js[k]*n+j;

p=a[u]; a[u]=a[M]; a[M]=p;

}

}

if(is[k]!=k)

{

for(i=0; i<=n-1; i++)

{

u=i*n+k; M=i*n+is[k];

p=a[u]; a[u]=a[M]; a[M]=p;

}

}

}

delete []is;

delete []js;

return 1;

}

//输出m行、n列的矩阵a

void shuchu(double *a, int m, int n)

{

int i,j;

for(i=0;i

{

for(j=0;j

{

printf("%9lf ",a[i*n+j]);

}

printf("\n");

}

}

void main()

{

zuobian();

youbian();

double a11,a12,a13,a21,a22,a23,b11,b12,b13,b21,b22,b23,c11,c12,c13,c21,c22,c23;

double x1,y1,x2,y2,X1,Y1,Z1,X2,Y2,Z2,N1,N2,Xt,Yt,Zt,Bx,By,Bz;

double f=0.15;

scanf("x1=%lf,y1=%lf,x2=%lf,y2=%lf",&x1,&y1,&x2,&y2);

//scanf("y1=%lf",&y1);

//printf("x2=");

//scanf("x2=%lf",&x2);

//旋转矩阵

a11=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01);

a12=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);

a13=(-1)*sin(p01)*cos(w01);

a21=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);

a22=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);

a23=(-1)*sin(p02)*cos(w02);

b11=cos(w01)*sin(k01);

b12=cos(w01)*cos(k01);

b13=(-1)*sin(w01);

b21=cos(w02)*sin(k02);

b22=cos(w02)*cos(k02);

b23=(-1)*sin(w02);

c11=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);

c12=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);

c13=cos(p01)*cos(w01);

c21=sin(p02)*cos(k02)+cos(p02)*sin(w02)*sin(k02);

c22=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);

c23=cos(p02)*cos(w02);

//计算各待定点的像空间辅助坐标

X1=a11*x1/1000+a12*y1/1000-a13*f;

Y1=b11*x1/1000+b12*y1/1000-b13*f;

Z1=c11*x1/1000+c12*y1/1000-c13*f;

X2=a21*x2/1000+a22*y2/1000-a23*f;

Y2=b21*x2/1000+b22*y2/1000-b23*f;

Z2=c21*x2/1000+c22*y2/1000-c23*f;

//计算摄影基线分量

Bx=Xs2-Xs1;

By=Ys2-Ys1;

Bz=Zs2-Zs1;

//计算点投影系数

N1=(Bx*Z2-Bz*X2)/(X1*Z2-X2*Z1);

N2=(Bx*Z1-Bz*X1)/(X1*Z2-X2*Z1);

//计算待定点的地面摄影测量坐标

Xt=((N1*X1+Xs1)+(N2*X2+Xs2))/2;

Yt=((N1*Y1+Ys1)+(N2*Y2+Ys2))/2;

Zt=((N1*Z1+Zs1)+(N2*Z2+Zs2))/2-1500;

printf("Xt=%lf\nYt=%lf\nZt=%lf\n",Xt,Yt,Zt);

}

实验结果

空间后方交会的解算

空间后方交会的解算 一. 空间后方交会的目的 摄影测量主要利用摄影的方法获取地面的信息,主要是是点位信息,属性信息,因此要对此进行空间定位和建模,并首先确定模型的参数,这就是空间后方交会的目的,用以求出模型外方位元素。 二. 空间后方交会的原理 空间后方交会的原理是共线方程。 共线方程是依据相似三角形原理给出的,其形式如下 111333222333()()() ()()() ()()()()()()A S A S A S A S A S A S A S A S A S A S A S A S a X X b Y Y c Z Z x f a X X a Y Y a Z Z a X X b Y Y c Z Z y f a X X a Y Y a Z Z -+-+-=--+-+--+-+-=--+-+- 上式成为中心投影的构线方程, 我们可以根据几个已知点,来计算方程的参数,一般需要六个方程,或者要三个点,为提高精度,可存在多余观测,然后利用最小二乘求其最小二乘解。 将公式利用泰勒公式线性化,取至一次项,得到其系数矩阵A ;引入改正数(残差)V ,则可将其写成矩阵形式: V AX L =- 其中 111333222333[,]()()()()()()()()()()()()()()T x y A S A S A S x A S A S A S A S A S A S y A S A S A S L l l a X X b Y Y c Z Z l x x x f a X X a Y Y a Z Z a X X b Y Y c Z Z l y y y f a X X a Y Y a Z Z =-+-+-=-=+-+-+--+-+-=-=+-+-+- 则1()T T X A A A L -= X 为外方位元素的近似改正数, 由于采用泰勒展开取至一次项,为减少误差,要将的出的值作为近似值进行迭代,知道小于规定的误差 三. 空间后方交会解算过程 1. 已知条件 近似垂直摄影

空间后方交会编程实习报告

空间后方交会编程实习报告 一实习目的 用程序设计语言(Visual C++或者C语言)编写一个完整的单片空间后方交会程序,通过对提供的试验数据进行计算,输出像片的外方位元素并评定精度。本实验的目的在于让学生深入理解单片空间后方交会的原理,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。通过上机调试程序加强动手能力的培养,通过对实验结果的分析,增强学生综合运用所学知识解决实际问题的能力。 二实习内容 利用一定数量的地面控制点,根据共线条件方程求解像片外方位元素。 三实习数据 已知航摄仪的内方位元素:f k =153.24mm,x =y =0.0mm,摄影比例尺为1:50000; 4个地面控制点的地面坐标及其对应像点的像片坐标: 四实习原理 如果我们知道每幅影像的6个外方位元素,就能确定被摄物体与航摄影像的关系。因此,如何获取影像的外方位元素,一直是摄影测量工作者所探讨的问题。可采取的方法有:利用雷达、全球定位系统(GPS)、惯性导航系统(INS)以及星相摄影机来获取影像的外方位元素;也可以利用影像覆盖范围内一定数量的控制点的空间坐标与摄影坐标,根据共线条件方程,反求该影像的外方位元素,这种方法称为单幅影像的空间后方交会。 单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,t,w,k。 五实习流程 (1)获取已知数据。从摄影资料中查取影像比例尺1/m,平均摄影距离(航空摄影的航高、内方位元素x0,y0,f;获取控制点的空间坐标Xt,Yt,Zt。 (2)量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。 (3)确定未知数的初始值。单像空间后方交会必须给出待定参数的初始值,在竖直航空摄影且地面控制点大体对称分布的情况下,可按如下方法确定初始值:

单像空间后方交会和双像解析空间后方-前方交会的算法程序实现

单像空间后方交会和双像解析空间后方-前 方交会的算法程序实现 遥感科学与技术 摘要:如果已知每张像片的6个外方位元素,就能确定被摄物体与航摄像片的关系。因此,利用单像空间后方交会的方法,可以迅速的算出每张像片的6个外方位元素。而前方交会的计算,可以算出像片上点对应于地面点的三维坐标。基于这两点,利用计算机强大的运算能力,可以代替人脑快速的完成复杂的计算过程。 关键词:后方交会,前方交会,外方位元素,C++编程 0.引言: 单张像片空间后方交会是摄影测量基本问题之一,是由若干控制点及其相应像点坐标求解摄站参数(X S,Y S,ZS,ψ、ω、κ)。单像空间后方交会主要有三种方法:基于共线条件方程的平差解法、角锥法、基于直接线性变换的解法。而本文将介绍第一种方法,基于共线条件方程反求象片的外方位元素。 而空间前方交会先以单张像片为单位进行空间后方交会,分别求出两张像片的外方位元素,再根据待定点的一对像点坐标,用空间前方交会的方法求解待定点的地面坐标。可以说,这种求解地面点的坐标的方法是以单张像片空间后方交会为基础的,因此,单张像片空间后方交会成为解决这两个问题以及算法程序实现的关键。

1.单像空间后方交会的算法程序实现: (1)空间后方交会的基本原理:对于遥感影像,如何获取像片的外方位元素,一直是摄影测量工作者探讨的问题,其方法有:利用雷达(Radar)、全球定位系统(GPS)、惯性导航系统(I N S)以及星像摄影机来获取像片的外方位元素;也可以利用一定数量的地面控制点,根据共线方程,反求像片的外方位元素,这种方法称为单像空间后方交会(如图1所示)。 图中,地面坐标X i、Yi、Zi和对应的像点坐标x i、yi是已知的,外方位元素XS、Y S、ZS(摄站点坐标),ψ、ω、κ(像片姿态角)是待求的。 (2)空间后方交会数学模型:空间后方交会的数学模型是共线方程, 即中心投影的构像方程: 式中X、Y、Z是地面某点在地面摄影测量坐标系中的坐标,x,y是该地面点在像片上的构像点的像片坐标,对 于空间后方交会而言它们是已知的,还有主距f是已知的。而9个方向余弦a 1,a 2,a3;b1,b 2,b 3;c 1,c2,c 3是未知的,具体表达式可以取

摄影测量学__考前知识点整理

摄影比例尺:摄影比例尺越大,像片地面的分辨率越高,有利于影像的解译与提高成图精度 摄影航高:相对航高:绝对航高: 摄影测量生产对摄影资料的基本要求:影像的色调、像片倾角(摄影机主光轴与铅垂线的夹 角,α= 0 时为最理想的情形)像片重叠:航向重叠:同一航线内相邻像片应有一定的影 像重叠;旁向重叠:相邻航线也应有一定的重叠;航线弯曲:一条航线内各张像片的像主点 连线不在一条直线上;像片旋角:相邻两像片的主点的连线与像片沿航线方向的两框标连线 之间的夹角;像片旋角过大会减小立体相对的有效观察范围 中心投影:所有投射线或其延长线都通过一个固定点的投影 阴位:投影中心位于物和像之间。(距摄影中心f ) 阳位:投影中心位于物和像同侧。(距摄影中心f ) 像方坐标系:像平面坐标系(像主点o 为原点) 像空间坐标系(x 、y 、-f) 像空间辅助坐标系S-uvw 物方坐标系:地面测量坐标系T-XYZ (高斯平面坐标+高程)左手系 地面摄影测量坐标系D-XYZ 内方位元素: x 0,y 0,f 作用: 1、像点的框标坐标系向像空间坐标系的改化; 2、确定摄影光束的形状; 外方位元素:确定摄影光束在摄影瞬间的空间位置和姿态的参数 线元素(X S ,Y S ,Z S ) 角元素(航向倾角?、 旁向倾角ω、 像片旋角κ) 共线条件方程(摄影中心、像点、地面点) 像点位移:因像片倾斜引起的像点位移 同摄站同主距的倾斜像片和水平像片沿等比线重 合时,地面点在倾斜像片上的像点与相应水平像片上像点之间的直线移位 像点位于等比线上,无像片倾斜引起的像点位移 等比线上部的像点的像片倾斜误差方向向着等角点 等比线下部的像点的像片倾斜误差方向背向等角点 (1) 当 时, ,即等比线上的点不会因像片倾斜产生像点位移 (2)当 ,像点位移朝向等角点(一、二像限) (3)当 ,像点位移背向等角点(三、四像限) (4)当 时,主纵线上点的位移最大 像片纠正:因像片倾斜产生的影像变形改正 因地面起伏引起的像点位移(投影差):当地面有起伏时,高于或低于所选定的基准面 的地面点的像点,与该地面点在基准面上的垂直投影点的像点之间的直线移位 地形起伏像点位移的符号与该点的高差符号相同,像片上任何一点都存在像点位移 物镜畸变、大气折光、地球曲率及底片变形等一些因素均会导致像点位移 航摄像片:中心投影,平均比例尺,影像有变形,方位发生变化 地形图:正射投影,比例尺固定,图形形状与实地完全相似,方位保持不变 在表示方法上:地形图是按成图比例尺,用各种规定的符号、注记和等高线表示地物地 貌;航片则是通过影像的大小、形状和色调表示。 在表示内容上:在地形图上用相应的符号、文字、数字注记表示,在像片上这些是不存 ??? ????-+-+--+-+--=-+-+--+-+--=)Z Z (c )Y Y (b )X X (a )Z Z (c )Y Y (b )X X (a f y )Z Z (c )Y Y (b )X X (a )Z Z (c )Y Y (b )X X (a f x S S S S S S S S S S S S 333222 333111

摄影测量后方交会

单张相片后方交会

目录 ●作业任务 (3) ●解算原理 (3) ●具体过程 (4) ●算法描述及程序流程 (4) ●计算结果 (7) ●结果分析 (8) ●心得体会及建议 (8) ●参考文献 (9)

一,作业任务 已知摄影机主距f=153.24mm,四对点的像点坐标与相应地面坐标列入下表: 表1-1 计算近似垂直摄影情况下后方交会解。 二,解算原理 【关键词1】中心投影构像方程 在摄影测量学中,最重要的方程就是中心投影构像方程(图2-1)。这个方程 将地面点在地面摄影测量坐标系中的坐标(物方坐标)和地面点对应像点的像平 面坐标联系起来。在解析摄影测量与数字摄影测量中是极其有用的。在以后将要 学习到的双像摄影测量光束法、解析测图仪原理及数字影像纠正等都要用到该 式。 图2-1 在上述公式中:x和y分别为以像主点为原点的像点坐标,相应地面点坐标 为X,Y,Z,相片主距f以及外方位元素Xs,Ys,Zs,ψ,ω,κ。 而在此次作业中,就是已知四个地面控制点的坐标以及其对应的像点坐标, 通过间接平差原理来求解此张航片的外方位元素。 【关键词2】间接平差 在一个平差问题中,当所选的独立参数X的个数等于必要观测值t时,可将 每个观测值表达成这t个参数的函数,组成观测方程,然后依据最小二乘原理求 解,这种以观测方程为函数模型的平差方法,就是间接平差方法 间接平差的函数模型为: 随机模型为: 平差准则为:VtPV=min 【关键词3】单像空间后方交会 利用至少三个已知地面控制点的坐标A(Xa,Ya,Za)、B(Xb,Yb,Zb)、Z(Xc,

Yc,Zc),与其影像上对应的三个像点的影像坐标a(xa,ya)、b(xb,yb)、c(xc,yc),根据共线方程,反求该像点的外方位元素Xs,Ys,Zs,ψ,ω,κ。这种解算方法是以单张像片为基础,亦称单像空间后方交会。 在此次作业中,就是已知四个控制点在地面摄影测量坐标系中的坐标和对应的像点坐标。由此可以列出8个误差方程,存在两个多余观测数,则n=2。故可利用间接平差里,依据最小二乘法则,进行求解。由于共线条件方程是非线性函数模型,为了便于计算,需把非线性函数表达式用泰勒公式展开成现行形式,即“线性化”。而又因为仅取泰勒级数展开式的一次项,未知数的近似值改正是粗略的,所以必须计算采用逐渐趋近法,解求过程需要反复趋近,直至改正值小于限差为止。 三,具体过程 1,获取已知点数据:从摄影资料中查取像片比例尺1/m,平均航高,内方元素x0,y0,f;从外业测量成果中,获取控制点的地面测量坐标Xt,Yt,Zt,并转换成摄影测量坐标X,Y,Z。 2,量测控制点的像点坐标:将控制点标刺在像片上,利用立体坐标量测仪量测控制点的像框坐标,并经像点坐标改正,得到像点坐标x,y。 3,确定未知数的初始值:在竖直摄影测量情况下,角元素的初始值为0,及ψ=ω=κ=0; 线元素中,Zso =m*f+(Z[0]+Z[1]+Z[2]+Z[3])/4,Xso,Yso的取值可用四个角点上制点坐标的平均值,即:Xso=(X[0]+X[1]+X[2]+X[3])/4;Yso=(Y[0]+Y[1]+Y[2]+Y[3])/4;4,计算旋转矩阵R:利用角元素的近似值计算方向余弦,组成R阵。公式如下:R[0][0]=cos(ψ)*cos(k)-sin(ψ)*sin(w)*sin(k); R[0][1]=-cos(ψ)*sin(k)-sin(ψ)*sin(w)*cos(k); R[0][2]=-sin(ψ)*cos(w); R[1][0]=cos(w)*sin(k); R[1][1]=cos(w)*cos(k); R[1][2]=-sin(w); R[2][0]=sin(ψ)*cos(k)+cos(ψ)*sin(w)*sin(k); R[2][1]=-sin(ψ)*sin(k)+cos(ψ)*sin(w)*cos(k); R[2][2]=cos(ψ)*cos(w); 5,逐点计算像点坐标的近似值:利用未知数的近似值按共线方程计算控制点像点坐标的近似值(x)、(y); 6,组成误差方程式:参照教材(5-8)式、(5-9b)式、(5-4)式逐点计算误差方程的系数阵和常数项。 7,组成法方程:计算法方程的系数矩阵与常数项。 8,解求外方位元素:根据法方程,按间接平差原理解求外方位元素改正值,并与相应的近似值求和,得到外方位元素的新的近似值。 9,检查计算是否收敛:将求得的外方位元素的改正值与规定的限差比较,小于限差则计算终止,否则用新的近似值重复第4至第8步骤计算,直至满足要求为止。 四,算法描述及程序流程。 算法描述(图4-1):

单像空间前方交会实习报告

摄影测量学 单像空间后方交会实习报告 、管路敷设技术通过管线不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行 高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况 ,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

《测绘程序设计》实验指导书

《测绘遥感程序设计》 实验指导书 (Visual C++.net) (供测绘工程专业用) (2015年修订) 戴吾蛟编 二零一五年三月 中南大学测绘与遥感科学系

前言 测绘遥感程序设计上机实验是学习本门课程的重要环节之一,实验的设置是为了配合课堂教学,使学生熟练掌握和深入理解课堂教学内容,进一步强化测绘程序设计、测量学及测量平差原理的理解,掌握利用Visual C++.net进行常用的测量程序以及控制网的间接平差程序设计。 实验内容 本门课程必做的实验有(在Visual C++.net 2008 环境下): 1.Visual C++.net环境、基本控件及简单程序设计(三角形面积计算) 2.控制结构程序设计(方位角计算、地心坐标至大地坐标转换) 3.数组、指针(多边形面积计算) 4.函数(交会定点函数设计、高斯投影正反算程序设计) 5.类的创建(大地四边形类设计、角度类设计) 6.文件(Cass测量数据整理) 7.图形程序设计(位移序列曲线图形程序设计) 8.常用测量计算(无定向导线简易计算程序设计) 9.平差程序设计(水准网间接平差程序设计) 修订说明:由于2012版培养方案增加了8课时,实验课时也相应增加了4课时。为此,本实验指导书将高斯投影正反算提前,并要求以函数的形式编写。增加了大地四边形类设计以及无定向导线简易计算程序设计。

实验1 Visual C++.net环境和简单程序设计 一、实验目的 ?掌握Visual https://www.sodocs.net/doc/5815758623.html,的安装和启动。 ?了解VC++ 2008的菜单系统、工具栏和各种基本窗体。 ?理解VC++.net开发应用程序的步骤。 ?掌握基于对话框的程序设计。 ?掌握按钮、文本框和标签框的基本使用方法 ?掌握使用MSDN帮助文档 二、实验内容 1.启动与退出VC++.net,熟悉VC++.net的开发环境,通过向导生成基于对话 框的应用程序。使用MSDN查看命令按钮、标签和文本框的主要属性和方法。 2.打开Microsoft visual studio 2008 文档,浏览“Visual studio 文档”目录下的 内容,并从“Visual studio 文档->Visual C++->示例”目录下下载一个程序,编译并运行之。 3.设计一个已知三边边长计算三角形面积的程序。计算模型如下: 海伦公式:) )( )( (c p b p a p p S- - - =,其中 2c b a p + + = 提示: (1)在【文件】菜单上执行【新建】,然后选择“项目” 。 (2)在【项目类型】窗格中,选择【Visual C++】下的“MFC”项。在【模板】窗格中,选择“MFC 应用程序”模板,输入应用程序名称“××××”。按向导创建名为“×××××”的 MFC应用程序。 (3)在窗体上放置4个文本框、4个静态框、3个命令按钮(其中两个缺省); (4)设置控件属性,如Static1的Caption属性设置成“a=”,用于提示Edit 框的输入边长a;

Python语言程序设计 库实例

Numpy库应用实例 礼欣 北京理工大学

纲要 ?背景介绍 ?GPS定位的基本原理与建模 定位计算的程序实现?GPS定位计算的程序实现?小结

背景介绍 ?定位系统 ?GPS全球定位系统(Global Positioning System)?以GPS系统为例介绍卫星定位的计算方法

GPS定位的基本原理 ?GPS定位的基本原理是根据高速运动卫星的瞬间位置作为已知的起算数据,采用空间距离-后方交会 作为知的起算数空间离方交 的方法,确定待测点的位置。 的方法确定待测点的位置 ?假设t时刻在地面待测点上安置GPS接收机,可以测 定GPS信号到达接收机的时间△t,再加上接收机所接 收到的卫星星历等其它数据,就可以确定一个方程组 收到的卫星星历等其它数据就可以确定一个方程组 来对位置信息进行求解。

GPS定位的基本原理 ?假设地球上一个点R,同时收到6颗卫星(S1,S2,…,S6)发射的信号,假设 接受信息如下表所示。其中,y表示的纬度,表示的高度。由接受信息如下表所示。其中x,y表示卫星的经纬度,z表示卫星的高度。由于上述6个卫星和地球在高速运动,从卫星发出的位置信息以光速传输到GPS接收端需要定的时间。假设(x,y,z,t)表示R当前的位置,t是R的相对时GPS接收端需要一定的时间。假设(x y z t)表示R当前的位置t是R的相对时间,卫星S1(发出信号时刻)到(当前接收时刻)满足以下关系(其中c是光速) 速)。 ?该公式表示以(x, y, z,t)为参数的(欧式空间距离)与信号传输距离相等。 ?(x-3)^2 + (y-2)^2 + (z-3)^2 = [(10010.00692286 –t)*c]^2,

摄影测量实验报告(空间后方交会—前方交会)

空间后方交会-空间前方交会程序编程实验一.实验目的要求 掌握运用空间后方交会-空间前方交会求解地面点的空间位置。学会运用空间后方交会的原理,根据所给控制点的地面摄影测量坐标系坐标以及相应的像平面坐标系中的坐标,利用计算机编程语言实现空间后方交会的过程,完成所给像对中两张像片各自的外方位元素的求解。然后根据空间后方交会所得的两张像片的内外方位元素,利用同名像点在左右像片上的坐标,求解其对应的地面点在摄影测量坐标系中的坐标,并完成精度评定过程,利用计算机编程语言实现此过程。 二.仪器用具 计算机、编程软件(MATLAB) 三.实验数据 实验数据包含四个地面控制点(GCP)的地面摄影测量坐标及在左右像片中的像平面坐标。此四对坐标运用最小二乘法求解左右像片的外方位元素,即完成了空间后方的过程。另外还给出了5对地面点在左右像片中的像平面坐标和左右像片的内方位元素。实验数据如下:

内方位元素:f=152.000mm,x0=0,y0=0 四.实验框图 此过程完成空间后方交会求解像片的外方位元素,其中改正数小于限差(0.00003,相当于0.1’的角度值)为止。在这个过程中采用迭代的方法,是外方位元素逐渐收敛于理论值,每次迭代所得的改正数都应加到上一次的初始值之中。

在空间后方交会中运用的数学模型为共线方程 确定Xs,Ys,Zs的初始值时,对于左片可取地面左边两个GCP的坐标的平均值作为左片Xs 和Ys的初始值,取右边两个GCP的坐标平均值作为右片Xs 和Ys的初始值。Zs可取地面所有GCP的Z坐标的平均值再加上航高。 空间前方交会的数学模型为:

五.实验源代码 function Main_KJQHFJH() global R g1 g2 m G a c b1 b2; m=10000;a=5;c=4; feval(@shuru); %调用shuru()shurujcp()函数完成像点及feval(@shurujcp); %CCP有关数据的输入 XYZ=feval(@MQZqianfangjh); %调用MQZqianfangjh()函数完成空间前方、%%%%%% 单位权中误差%%%% %后方交会计算解得外方位元素 global V1 V2; %由于以上三个函数定义在外部文件中故需VV=[]; %用feval()完成调用过程 for i=1:2*c VV(i)=V1(i);VV(2*i+1)=V2(i); end m0=sqrt(VV*(VV')/(2*c-6)); disp('单位权中误差m0为正负:');disp(m0); %计算单位权中误差并将其输出显示 输入GCP像点坐标及地面摄影测量坐标系坐标的函数和输入所求点像点坐标函数: function shurujcp() global c m; m=input('摄影比例尺:'); %输入GCP像点坐标数据函数并分别将其c=input('GCP的总数='); % 存入到不同的矩阵之中 disp('GCP左片像框标坐标:'); global g1;g1=zeros(c,2); i=1; while i<=c m=input('x='); n=input('y='); g1(i,1)=m;g1(i,2)=n; i=i+1; end disp('GCP右片像框标坐标:'); global g2;g2=zeros(c,2); i=1; while i<=c m=input('x='); n=input('y='); g2(i,1)=m;g2(i,2)=n; i=i+1; end

摄影测量程序汇总(后方交会+前方交会+单模型光束法平差)

程序运行环境为Visual Studio2010.运行前请先将坐标数据放在debug 下。 1.单像空间后方交会 C语言程序: #include #include #include double *readdata(); void savedata(int hang,double *data,double *xishuarray,double *faxishu,double *l,int i,double xs,double ys,double zs,double fai,double oumiga,double kapa); void transpose(double *m1,double *m2,int m,int n); void inverse(double *a,int n); void multi(double *mat1,double * mat2,double * result,int a,int b,int c); void inverse(double *a,int n)/*正定矩阵求逆*/ { int i,j,k; for(k=0;k

前方交会

10.3.1 测量原理 图10-4所示为双曲线拱坝变形观测图。为精确测定等观测点的水平位移,首先在大坝的下游面合适位置处选定供变形观测用的两个工作基准点E和F;为对工作基准点的稳定性进行检核,应根据地形条件和实际情况,设置一定数量的检核基准点(如C、D、G等),并组成良好图形条件的网形,用于检核控制网中的工作基准点(如E、F等)。各基准点上应建立永久性的观测墩,并且利用强制对中设备和专用的照准觇牌。对E、F两个工作基点,除满足上面的这些要求外,还必须满足以下条件:用前方交会法观测各变形观测点时,交会角(见图10-4) 不得小于,且不得大于。 图10-4 拱坝变形观测图 变形观测点应预先埋设好合适的、稳定的照准标志,标志的图形和式样应考虑在前方交会中观测方便、照准误差小。此外,在前方交会观测中,最好能在各观测周期由同一观测人员以同样的观测方法,使用同一台仪器进行。

图10-5 角度前方交会法测量原理 利用前方交会法测量水平位移的原理如下:如图10-5所示,A、B两点为工作基准点,P 为变形观测点,假设测得两水平夹角为,则由A、B两点的坐标值和水平角观测值、可求得P点的坐标。 从图10-5可见: (10-3a) (10-3b)其中可由A、B两点的坐标值通过“坐标反算”求得,经过对(10-3)式的整理可得: (10-4a) (10-4b) 第一次观测时,假设测得两水平夹角为和,由(10-4)式求得P点坐标值为, 第二次观测时,假设测得的水平夹角为和,则P点坐标值变为,那么在此两期变形观测期间,P点的位移可按下式解算: ,, P点的位移方向为:。 10.3.2 前方交会法的种类 前方交会法有三种:测角前方交会法、测边前方交会法、边角前方交会法。其观测值和观测仪器见表10-5。 表10-5 前方交会法的种类 ,,,D1,D2

空间后方交会程序

空间后方交会程序

————————————————————————————————作者:————————————————————————————————日期: ?

一. 实验目的: 掌握摄影测量空间后方交会的原理,利用计算机编程语言实现空间 后方交会外方位元素的解算。 二. 仪器用具及已知数据文件: 计算机wind ows xp 系统,编程软件(VI SUA L C ++6.0),地面控 制点在摄影测量坐标系中的坐标及其像点坐标文件shu ju.txt 。 三. 实验内容: 单张影像的空间后方交会:利用已知地面控制点数据及相应像点坐标根据 共线方程反求影像的外方位元素。 数学模型:共线条件方程式: ) (3)(3)(3) (1)(1)(1Zs Z c Ys Y b Xs X a Zs Z c Ys Y b Xs X a f x -+-+--+-+--= ) (3)(3)(3)(2)(2)(2Zs Z c Ys Y b Xs X a Zs Z c Ys Y b Xs X a f y -+-+--+-+--= 求解过程: (1)获取已知数据。从航摄资料中查取平均航高与摄影机主距;获取 控制点的地面测量坐标并转换为地面摄影测量坐标。 (2)量测控制点的像点坐标并做系统改正。 (3)确定未知数的初始值。在竖直摄影且地面控制点大致分布均匀 的情况下,按如下方法确定初始值,即: n X X S ∑=0,n Y Y S ∑=0,n Z mf Z S ∑=0 φ =ω=κ=0 式中;m为摄影比例尺分母;n为控制点个数。 (4)用三个角元素的初始值,计算个方向余弦,组成旋转矩阵R 。 (5)逐点计算像点坐标的近似值。利用未知数的近似值和控制点的地面坐标代入共 线方程式,逐点计算像点坐标的近似值(x )、(y )。 (6)逐点计算误差方程式的系数和常数项,组成误差方程式。 (7)计算法方程的系数矩阵A A T 和常数项l A T ,组成法方程式。 (8)解法方程,求得外方位元素的改正数dXs ,S dY ,s dZ ,d φ,dω,d κ。 (9)用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。

空间后交-前交程序设计实验报告

空间后交-前交程序设计 (实验报告) 姓名: 班级: 学号: 时间:

空间后交-前交程序设计 一、实验目的 用 C 、VB或MATLAB语言编写空间后方交会-空间前方交会程序 ⑴提交实习报告:程序框图、程序源代码、计算结果、体会 ⑵计算结果:像点坐标、地面坐标、单位权中误差、外方位元素及其精度 二、实验数据 f=150.000mm,x0=0,y0=0 三、实验思路 1.利用空间后方交会求左右像片的外方位元素 (1).获取m(于像片中选取两点,于地面摄影测量坐标系中选取同点,分别计算距离,距离比值即为m),x,y,f,X,Y,Z (2).确定未知数初始值Xs,Ys,Zs,q,w,k (3).计算旋转矩阵R (4).逐点计算像点坐标的近似值(x),(y)

(5).组成误差方程式 (6).组成法方程式 (7).解求外方位元素 (8).检查是否收敛,即将求得的外方位元素的改正数与规定限差比较,小于限差即终止;否则用新的近似值重复步骤(3)-(7) 2.利用求出的外方位元素进行空间前交,求出待定点地面坐标(1).用各自像片的角元素计算出左、右像片的方向余弦值,组成旋转矩阵R1,R2 (2).根据左、右像片的外方位元素,计算摄影基线分量Bx,By,Bz (3).计算像点的像空间辅助坐标(X1,Y1,Z1)和(X2,Y2,Z2) (4).计算点投影系数N1和N2 (5).计算未知点的地面摄影测量坐标 四、实验过程 ⑴程序框图 函数AandL %求间接平差时需要的系数

%%%已知 %a=像点坐标x,b=像点坐标y,f内方位元素主距 %φ=q,ψ=w,κ=k %像空间坐标系X,Y,Z %地面摄影测量坐标系Xs,Ys,Zs function [A1,L1,A2,L2]=AandL(a,b,f,q,w,k,X,Y,Z,Xs,Ys,Zs) %%%%%%%%%%%选择矩阵元素 a1=cos(q)*cos(k)-sin(q)*sin(w)*sin(k); a2=-cos(q)*sin(k)-sin(q)*sin(w)*cos(k); a3=-sin(q)*cos(w); b1=cos(w)*sin(k); b2=cos(w)*cos(k); b3=-sin(w); c1=sin(q)*cos(k)+cos(q)*sin(w)*sin(k); c2=-sin(q)*sin(k)+cos(q)*sin(w)*cos(k); c3=cos(q)*cos(w); %%%%%%%共线方程的分子分母 X_=a1*(X-Xs)+b1*(Y-Ys)+c1*(Z-Zs); Y_=a2*(X-Xs)+b2*(Y-Ys)+c2*(Z-Zs); Z_=a3*(X-Xs)+b3*(Y-Ys)+c3*(Z-Zs); %%%%%%%近似值 x=-f*X_/Z_; y=-f*Y_/Z_; %%%%%%%A组成L组成 a11=1/Z_*(a1*f+a3*x); a12=1/Z_*(b1*f+b3*x); a13=1/Z_*(c1*f+c3*x); a21=1/Z_*(a2*f+a3*y); a22=1/Z_*(b2*f+b3*y); a23=1/Z_*(c2*f+c3*y); a14=y*sin(w)-(x/f*(x*cos(k)-y*sin(k))+f*cos(k))*cos(w); a15=-f*sin(k)-x/f*(x*sin(k)+y*cos(k)); a16=y; a24=-x*sin(w)-(y/f*(x*cos(k)-y*sin(k))-f*sin(k))*cos(w); a25=-f*cos(k)-y/f*(x*sin(k)+y*cos(k)); a26=-x; lx=a-x; ly=b-y; %%%%%%%%%组成一个矩阵,并返回 A1=[a11,a12,a13,a14,a15,a16]; A2=[a21,a22,a23,a24,a25,a26]; L1=lx; L2=ly; 函数deg2dms

作业4--空间后方交会

作业报告 空间后方交会 专业:测绘工程 班级:2008级(1)班姓名:陈闻亚 指导教师:陈强 2010 年 4 月16 日

1 作业任务------------------------------------------------------------------------------------ 3 2 作业思想 --------------------------------------------------------------------------------------- 3 3 作业条件及数据 -------------------------------------------------------------------- 3 4 作业过程--------------------------------------------------------------------------- 3 5 源程序----------------------------------------------------------------------------- 4 6 计算结果--------------------------------------------------------------------------- 17 7心得体会与建议----------------------------------------------------------------------------- 17

1 作业任务 计算近似垂直摄影情况下后方交会解。即利用摄影测量空间后方交会的方法,获取相片的6个外方位元素。限差为0.1。 2作业思想 利用摄影测量空间后方交会的方法求解。该方法的基本思想是利用至少三个一直地面控制点的坐标A(X A,Y A,Z A)、B(X B,Y B,Z B)C(X C,Y C,Z C),与其影像上对应的三个像点的影像坐标a(x a,y a)、b(x b,y b)、c(x c,y c),根据共线方程,反求该相片的外方位元素X S、Y S、Z S、φ、ω、κ。 3作业条件及数据 已知摄影机主距f=153.24mm,四对点的像点坐标与相应的地面坐标列入下表: 4作业过程 4.1 获取已知数据 相片比例尺1/m=1:10000,内方位元素f=153.24mm,x0,y0;获取控制点的地面测量坐标X t、Y t、Z t。 4.2 量测控制点的像点坐标: 本次作业中为已知。见表1。

空间后方交会程序

一. 实验目的: 掌握摄影测量空间后方交会的原理,利用计算机编程语言实现空间后方交会外方位元素的解算。 二. 仪器用具及已知数据文件: 计算机windows xp 系统,编程软件(VISUAL C++6.0),地面控制点在摄影测量坐标系中的坐标及其像点坐标文件shuju.txt 。 三. 实验内容: 单张影像的空间后方交会:利用已知地面控制点数据及相应像点坐标根据共线方程反求影像的外方位元素。 数学模型:共线条件方程式: )(3)(3)(3)(1)(1)(1Zs Z c Ys Y b Xs X a Zs Z c Ys Y b Xs X a f x -+-+--+-+--= )(3)(3)(3)(2)(2)(2Zs Z c Ys Y b Xs X a Zs Z c Ys Y b Xs X a f y -+-+--+-+--= 求解过程: (1)获取已知数据。从航摄资料中查取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄影测量坐标。 (2)量测控制点的像点坐标并做系统改正。 (3)确定未知数的初始值。在竖直摄影且地面控制点大致分布均匀的情况下,按如下方法确定初始值,即: n X X S ∑=0,n Y Y S ∑=0,n Z mf Z S ∑=0 φ =ω=κ=0 式中;m 为摄影比例尺分母;n 为控制点个数。 (4)用三个角元素的初始值,计算个方向余弦,组成旋转矩阵R 。 (5)逐点计算像点坐标的近似值。利用未知数的近似值和控制点的地面 坐标代入共线方程式,逐点计算像点坐标的近似值(x )、(y )。 (6)逐点计算误差方程式的系数和常数项,组成误差方程式。 (7)计算法方程的系数矩阵A A T 和常数项l A T ,组成法方程式。 (8)解法方程,求得外方位元素的改正数dXs ,S dY ,s dZ ,d φ,d ω,d κ。 (9)用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素 的新值。

前方后方空间交会实验报告

中南大学 本科生课程设计(实践)任务书、设计报告 (摄影测量与遥感概论) 题目空间后方-前方交会 学生姓名 指导教师邹峥嵘 学院地球科学与信息物理学院 专业班级测绘0902班 学生学号

一、实验目的 通过对数字影像空间后交前交的程序设计实验,要求我们进一步理解和掌握影像外方位元素的有关理论、原理和方法。利用计算机程序设计语言编写摄影测量空间交会软件进行快速确定影像的外方位元素及其精度,然后通过求得的外方位元素求解未知点的地面摄影测量坐标,达到通过摄影测量量测地面地理数据的目的。 二、实验要求 用C、VB或者Matlab编写空间后方交会-前方交会计算机程序。 提交实验报告:程序框图,程序源代码、计算结果及体会。 计算结果:地面点坐标、外方位元素及精度。 完成时间:2011年11月17日。 三、实验数据

f=150.000mm,x0=0,y0=0 四、实验思路 利用后方交会得出两张像片各自的外方位元素 1)获取已知数据:从摄影资料中插曲像片比例尺、平均航高、内 方位元素以及控制点的地面摄影测量坐标及对应的像点坐标。 2)确定未知数的初始值:在竖直摄影的情况下,胶原素的初始值 为0,线元素其中Zs=m*f+,Xs=,Ys=。 3)计算旋转矩阵R。 4)逐点计算像点坐标的近似值:利用共线方程。 5)组成误差方程并法化。 6)解求外方位元素。 7)检查计算是否收敛。 利用解求出的外方位元素进行前方交会 1)用各自像片的角元素计算出左右像片的旋转矩阵R1和R2。 2)根据左右像片的外方位元素计算摄影基线分量Bx,By,Bz。 3)逐点计算像点的空间辅助坐标。

《测量程序设计课程设计》指导书-2015

测量数据处理程序设计指导书 设计名称:测量数据处理程序设计 计划周数:2周 适用对象:测绘工程专业本科 先修课程:测量学,测量平差基础,大地控制测量,测量程序设计 一、设计目的 测量数据处理程序设计是学生在系统学习完大地控制测量学、测量平差基础、测量程序设计等相关课程之后,为了系统理解控制网平差的整体过程及综合运用科学工具而安排的。通过课程设计主要达到以下几个目的:掌握控制网平差课程设计具体内容、方法和步骤;通过理论联系实际,进一步巩固已学到的专业理论知识,并加深对理论的认识;培养学生对编写代码,上机调试和编写说明书等基本技能;锻炼学生阅读各类编程参考书籍及加以编程运用的能力。 二、设计内容及日程 在VB、 VC软件或matlab科学计算软件的平台上,选择的具体课程设计题目,进行程序设计与实现,共计10个工作日,工作程序如下: 三、设计的组织: 1.设计领导 (1)指导教师:由教研室指派教师、实验员兼任。

职责:全面组织设计大纲的实施,完成分管工作及相关技术指导。 (2)设计队长:学生班长兼任。 职责:协助教师做好本班学生的人员组织工作。 (3)设计组长:每组一人。 职责:组织执行下达的设计任务,安排组内各成员的工作分工。 2.设计分组 学生实习作业组由3~4人组成(含组长一人)。 四、设计内容 在VB、VC或MATLAB 软件平台上,按选择的设计题目进行相关程序开发 1、闭合导线简易平差、附合导线简易平差支导线计算 2、闭合水准网计算、附合水准网简易平差 3、地形图编号(新、旧两种方法) 4、误差椭圆的参数的计算与绘制误差椭圆 5、水准网严密平差 6、高斯正反算计算 7、高斯投影换带计算 8、七参数大地坐标转换(WGS84-bj54坐标转换、WGS84-CGCS2000坐标转换) 9、四参数坐标转换(西安80-bj54坐标转换、CGCS2000-bj54坐标转换、CGCS2000-西安80坐 标转换(平面) 10、大地高转换为正常高的计算 11、工程投影变形超限的处理 12、遥感图像数据处理 13、曲线(曲面)拟合 14、摄影测量空间后方交会 15、****管理信息系统设计与开发 五、上交成果 1) 小组利用vb、vc或matlab编写的软件包一个及测试数据一份 2)小组关于所开发程序设计说明书一份 3) 个人课程设计的心得一份 4)小组答辩PPT一份

相关主题