大地坐标与大地空间坐标转换工具

大地坐标与大地空间坐标转换工具
大地坐标与大地空间坐标转换工具

#include "stdafx.h"

#include

#include

#include "resource.h"

#include "MainDlg.h"

#include

#include

BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

switch(uMsg)

{

HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);

HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);

HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

}

return FALSE;

}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)

{

return TRUE;

}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)

{

double a=0;

double e2=0;

switch(id)

{

case IDC_B1:

{

a=6378245.0000;

e2=0.00669342162297;

if(a==0)

{

MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK);

}

else{

TCHAR stre1[256];

TCHAR stre11[256];

TCHAR stre111[256];

GetDlgItemText(hwnd,IDC_E1,stre1,sizeof(stre1)); GetDlgItemText(hwnd,IDC_E11,stre11,sizeof(stre11)); GetDlgItemText(hwnd,IDC_E111,stre111,sizeof(stre111));

double L1 = atof(stre1);

double L11 = atof(stre11);

double L111 = atof(stre111);

double L = L1+(L11/60)+(L111/3600);

TCHAR stre2[256];

TCHAR stre22[256];

TCHAR stre222[256];

GetDlgItemText(hwnd,IDC_E2,stre2,sizeof(stre2)); GetDlgItemText(hwnd,IDC_E22,stre22,sizeof(stre22)); GetDlgItemText(hwnd,IDC_E222,stre222,sizeof(stre222)); double B2 = atof(stre2);

double B22 = atof(stre22);

double B222 = atof(stre222);

double B = B2+(B22/60)+(B222/3600);

TCHAR stre3[256];

GetDlgItemText(hwnd,IDC_E3,stre3,sizeof(stre3)); double H = atof(stre3);

double sinB = sin((B/180)*3.1415926535897932385); double sinL = sin((L/180)*3.1415926535897932385); double cosB = cos((B/180)*3.1415926535897932385); double cosL = cos((L/180)*3.1415926535897932385); double sin2B=sinB*sinB;

double w = double(sqrt(1-e2*sin2B));

double n=a/w;

double X = (n+H)*cosB*cosL;

double Y = (n+H)*cosB*sinL;

double Z = (n*(1-e2)+H)*sinB;

int x = (int)X;

int x1=100000*(X-x);

int y = (int)Y;

int y1=100000*(Y-y);

int z = (int)Z;

int z1=100000*(Z-z);

TCHAR strx[256];

wsprintf(strx,"%i",x);

SetDlgItemText(hwnd,IDC_E4,strx);

TCHAR strx1[256];

wsprintf(strx1,"%i",x1);

SetDlgItemText(hwnd,IDC_D1,strx1);

TCHAR stry[256];

wsprintf(stry,"%i",y);

SetDlgItemText(hwnd,IDC_E5,stry);

TCHAR stry1[256];

wsprintf(stry1,"%i",y1);

SetDlgItemText(hwnd,IDC_D2,stry1);

TCHAR strz[256];

wsprintf(strz,"%i",z);

SetDlgItemText(hwnd,IDC_E6,strz);

TCHAR strz1[256];

wsprintf(strz1,"%i",z1);

SetDlgItemText(hwnd,IDC_D3,strz1);

}

break;

}

case IDC_B2:

{

a=6378140.0000;

e2=0.00669438499959;

if(a==0)

{

MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK);

}

else{

TCHAR stre1[256];

TCHAR stre11[256];

TCHAR stre111[256];

GetDlgItemText(hwnd,IDC_E1,stre1,sizeof(stre1)); GetDlgItemText(hwnd,IDC_E11,stre11,sizeof(stre11)); GetDlgItemText(hwnd,IDC_E111,stre111,sizeof(stre111));

double L1 = atof(stre1);

double L11 = atof(stre11);

double L111 = atof(stre111);

double L = L1+(L11/60)+(L111/3600);

TCHAR stre2[256];

TCHAR stre22[256];

TCHAR stre222[256];

GetDlgItemText(hwnd,IDC_E2,stre2,sizeof(stre2)); GetDlgItemText(hwnd,IDC_E22,stre22,sizeof(stre22)); GetDlgItemText(hwnd,IDC_E222,stre222,sizeof(stre222)); double B2 = atof(stre2);

double B22 = atof(stre22);

double B222 = atof(stre222);

double B = B2+(B22/60)+(B222/3600);

TCHAR stre3[256];

GetDlgItemText(hwnd,IDC_E3,stre3,sizeof(stre3)); double H = atof(stre3);

double sinB = sin((B/180)*3.1415926535897932385); double sinL = sin((L/180)*3.1415926535897932385); double cosB = cos((B/180)*3.1415926535897932385); double cosL = cos((L/180)*3.1415926535897932385); double sin2B=sinB*sinB;

double w = double(sqrt(1-e2*sin2B));

double n=a/w;

double X = (n+H)*cosB*cosL;

double Y = (n+H)*cosB*sinL;

double Z = (n*(1-e2)+H)*sinB;

int x = (int)X;

int x1=100000*(X-x);

int y = (int)Y;

int y1=100000*(Y-y);

int z = (int)Z;

int z1=100000*(Z-z);

TCHAR strx[256];

wsprintf(strx,"%i",x);

SetDlgItemText(hwnd,IDC_E4,strx);

TCHAR strx1[256];

wsprintf(strx1,"%i",x1);

SetDlgItemText(hwnd,IDC_D1,strx1);

TCHAR stry[256];

wsprintf(stry,"%i",y);

SetDlgItemText(hwnd,IDC_E5,stry);

TCHAR stry1[256];

wsprintf(stry1,"%i",y1);

SetDlgItemText(hwnd,IDC_D2,stry1);

TCHAR strz[256];

wsprintf(strz,"%i",z);

SetDlgItemText(hwnd,IDC_E6,strz);

TCHAR strz1[256];

wsprintf(strz1,"%i",z1);

SetDlgItemText(hwnd,IDC_D3,strz1);

}

break;

}

case IDC_B3:

{

a=6378137.0000;

e2=0.00669438002290;

if(a==0)

{

MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK);

}

else{

TCHAR stre1[256];

TCHAR stre11[256];

TCHAR stre111[256];

GetDlgItemText(hwnd,IDC_E1,stre1,sizeof(stre1)); GetDlgItemText(hwnd,IDC_E11,stre11,sizeof(stre11)); GetDlgItemText(hwnd,IDC_E111,stre111,sizeof(stre111));

double L1 = atof(stre1);

double L11 = atof(stre11);

double L111 = atof(stre111);

double L = L1+(L11/60)+(L111/3600);

TCHAR stre2[256];

TCHAR stre22[256];

TCHAR stre222[256];

GetDlgItemText(hwnd,IDC_E2,stre2,sizeof(stre2)); GetDlgItemText(hwnd,IDC_E22,stre22,sizeof(stre22)); GetDlgItemText(hwnd,IDC_E222,stre222,sizeof(stre222)); double B2 = atof(stre2);

double B22 = atof(stre22);

double B222 = atof(stre222);

double B = B2+(B22/60)+(B222/3600);

TCHAR stre3[256];

GetDlgItemText(hwnd,IDC_E3,stre3,sizeof(stre3)); double H = atof(stre3);

double sinB = sin((B/180)*3.1415926535897932385); double sinL = sin((L/180)*3.1415926535897932385); double cosB = cos((B/180)*3.1415926535897932385); double cosL = cos((L/180)*3.1415926535897932385); double sin2B=sinB*sinB;

double w = double(sqrt(1-e2*sin2B));

double n=a/w;

double X = (n+H)*cosB*cosL;

double Y = (n+H)*cosB*sinL;

double Z = (n*(1-e2)+H)*sinB;

int x = (int)X;

int x1=100000*(X-x);

int y = (int)Y;

int y1=100000*(Y-y);

int z = (int)Z;

int z1=100000*(Z-z);

TCHAR strx[256];

wsprintf(strx,"%i",x);

SetDlgItemText(hwnd,IDC_E4,strx);

TCHAR strx1[256];

wsprintf(strx1,"%i",x1);

SetDlgItemText(hwnd,IDC_D1,strx1);

TCHAR stry[256];

wsprintf(stry,"%i",y);

SetDlgItemText(hwnd,IDC_E5,stry);

TCHAR stry1[256];

wsprintf(stry1,"%i",y1);

SetDlgItemText(hwnd,IDC_D2,stry1);

TCHAR strz[256];

wsprintf(strz,"%i",z);

SetDlgItemText(hwnd,IDC_E6,strz);

TCHAR strz1[256];

wsprintf(strz1,"%i",z1);

SetDlgItemText(hwnd,IDC_D3,strz1);

}

break;

}

case IDC_B4:

{

a=6378245.0000;

e2=0.00669342162297;

if(a==0)

{

MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK);

}

else{

TCHAR stre1[256];

TCHAR stre2[256];

TCHAR stre3[256];

GetDlgItemText(hwnd,IDC_C1,stre1,sizeof(stre1));

GetDlgItemText(hwnd,IDC_C2,stre2,sizeof(stre2));

GetDlgItemText(hwnd,IDC_C3,stre3,sizeof(stre3));

double X = atof(stre1);

double Y = atof(stre2);

double Z = atof(stre3);

double L;

double H;

double s = 0.0000002;

double i = 0.0000002;

double c1=1/sqrt(X*X+Y*Y);

double c=c1;

double B=atan(Z*c1);

double b=0;

for(i;;i+=s)

{ b=B+i;

double tanb = tan(b);

double c2 = a*e2*tanb;

double c3 = sqrt(1+tanb*tanb-e2*tanb*tanb);

double c4 = Z+c2/c3;

double c5=tanb-c1*c4;

double c6=sqrt(c5*c5);

if(c6<=s)

{ break;

}

}

double b2 = b*180/3.1415926;

int B1 = (int)b2;

int b3 = (b2- B1)*60;

int B2 = 60*((b2-B1)*60-b3);

int b4 = 100*(60*((b2-B1)*60-b3)-B2);

TCHAR strs1[256];

wsprintf(strs1,"%i",B1);

SetDlgItemText(hwnd,IDC_C7,strs1);

TCHAR strs2[256];

wsprintf(strs2,"%i",b3);

SetDlgItemText(hwnd,IDC_C8,strs2);

TCHAR strs3[256];

wsprintf(strs3,"%i",B2);

SetDlgItemText(hwnd,IDC_C9,strs3);

TCHAR strd1[256];

wsprintf(strd1,"%i",b4);

SetDlgItemText(hwnd,IDC_D5,strd1);

L=atan(Y/X);

double L2 = L*180/3.1415926;

int L1 = (int)L2;

int L3 = (L2- L1)*60;

int L4 = 60*((L2-L1)*60-L3);

int L5 = 100*(60*((L2-L1)*60-L3)-L4);

TCHAR strs4[256];

wsprintf(strs4,"%i",L1);

SetDlgItemText(hwnd,IDC_C4,strs4);

TCHAR strs5[256];

wsprintf(strs5,"%i",L3);

SetDlgItemText(hwnd,IDC_C5,strs5);

TCHAR strs6[256];

wsprintf(strs6,"%i",L4);

SetDlgItemText(hwnd,IDC_C6,strs6);

TCHAR strd2[256];

wsprintf(strd2,"%i",L5);

SetDlgItemText(hwnd,IDC_D4,strd2);

double h1=sqrt(X*X+Y*Y);

double h2=cos(b);

H=sqrt(X*X+Y*Y)/cos(b)-a/sqrt(1-e2*sin(b)*sin(b));

int h3=(int)H;

int h4=10000*(H-h3);

TCHAR strs7[256];

wsprintf(strs7,"%i",h3);

SetDlgItemText(hwnd,IDC_C10,strs7);

TCHAR strd3[256];

wsprintf(strd3,"%i",h4);

SetDlgItemText(hwnd,IDC_D6,strd3);

}}break;

case IDC_B5:

{

a=6378140.0000;

e2=0.00669438499959;

if(a==0)

{

MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK);

}

else{

TCHAR stre1[256];

TCHAR stre2[256];

TCHAR stre3[256];

GetDlgItemText(hwnd,IDC_C1,stre1,sizeof(stre1));

GetDlgItemText(hwnd,IDC_C2,stre2,sizeof(stre2));

GetDlgItemText(hwnd,IDC_C3,stre3,sizeof(stre3));

double X = atof(stre1);

double Y = atof(stre2);

double Z = atof(stre3);

double L;

double H;

double s = 0.0000002;

double i = 0.0000002;

double c1=1/sqrt(X*X+Y*Y);

double c=c1;

double B=atan(Z*c1);

double b=0;

for(i;;i+=s)

{ b=B+i;

double tanb = tan(b);

double c2 = a*e2*tanb;

double c3 = sqrt(1+tanb*tanb-e2*tanb*tanb);

double c4 = Z+c2/c3;

double c5=tanb-c1*c4;

double c6=sqrt(c5*c5);

if(c6<=s)

{ break;

}

}

double b2 = b*180/3.1415926;

int B1 = (int)b2;

int b3 = (b2- B1)*60;

int B2 = 60*((b2-B1)*60-b3);

TCHAR strs1[256];

wsprintf(strs1,"%i",B1);

SetDlgItemText(hwnd,IDC_C7,strs1);

TCHAR strs2[256];

wsprintf(strs2,"%i",b3);

SetDlgItemText(hwnd,IDC_C8,strs2);

TCHAR strs3[256];

wsprintf(strs3,"%i",B2);

SetDlgItemText(hwnd,IDC_C9,strs3);

L=atan(Y/X);

double L2 = L*180/3.1415926;

int L1 = (int)L2;

int L3 = (L2- L1)*60;

int L4 = 60*((L2-L1)*60-L3);

int L5 = 100*(60*((L2-L1)*60-L3)-L4);

TCHAR strs4[256];

wsprintf(strs4,"%i",L1);

SetDlgItemText(hwnd,IDC_C4,strs4);

TCHAR strs5[256];

wsprintf(strs5,"%i",L3);

SetDlgItemText(hwnd,IDC_C5,strs5);

TCHAR strs6[256];

wsprintf(strs6,"%i",L4);

SetDlgItemText(hwnd,IDC_C6,strs6);

TCHAR strd2[256];

wsprintf(strd2,"%i",L5);

SetDlgItemText(hwnd,IDC_D4,strd2);

double h1=sqrt(X*X+Y*Y);

double h2=cos(b);

H=sqrt(X*X+Y*Y)/cos(b)-a/sqrt(1-e2*sin(b)*sin(b)); int h3=(int)H;

int h4=10000*(H-h3);

TCHAR strs7[256];

wsprintf(strs7,"%i",h3);

SetDlgItemText(hwnd,IDC_C10,strs7);

TCHAR strd3[256];

wsprintf(strd3,"%i",h4);

SetDlgItemText(hwnd,IDC_D6,strd3);

}}

case IDC_B6:

{

a=6378137.0000;

e2=0.00669438002290;

if(a==0)

{

MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK);

}

else{

TCHAR stre1[256];

TCHAR stre2[256];

TCHAR stre3[256];

GetDlgItemText(hwnd,IDC_C1,stre1,sizeof(stre1));

GetDlgItemText(hwnd,IDC_C2,stre2,sizeof(stre2));

GetDlgItemText(hwnd,IDC_C3,stre3,sizeof(stre3));

double X = atof(stre1);

double Y = atof(stre2);

double Z = atof(stre3);

double L;

double H;

double s = 0.0000002;

double i = 0.0000002;

double c1=1/sqrt(X*X+Y*Y);

double c=c1;

double B=atan(Z*c1);

double b=0;

for(i;;i+=s)

{ b=B+i;

double tanb = tan(b);

double c2 = a*e2*tanb;

double c3 = sqrt(1+tanb*tanb-e2*tanb*tanb);

double c4 = Z+c2/c3;

double c5=tanb-c1*c4;

double c6=sqrt(c5*c5);

if(c6<=s)

{ break;

}

}

double b2 = b*180/3.1415926;

int B1 = (int)b2;

int b3 = (b2- B1)*60;

int B2 = 60*((b2-B1)*60-b3);

TCHAR strs1[256];

wsprintf(strs1,"%i",B1);

SetDlgItemText(hwnd,IDC_C7,strs1);

TCHAR strs2[256];

wsprintf(strs2,"%i",b3);

SetDlgItemText(hwnd,IDC_C8,strs2);

TCHAR strs3[256];

wsprintf(strs3,"%i",B2);

SetDlgItemText(hwnd,IDC_C9,strs3);

L=atan(Y/X);

double L2 = L*180/3.1415926;

int L1 = (int)L2;

int L3 = (L2- L1)*60;

int L4 = 60*((L2-L1)*60-L3);

int L5 = 100*(60*((L2-L1)*60-L3)-L4);

TCHAR strs4[256];

wsprintf(strs4,"%i",L1);

SetDlgItemText(hwnd,IDC_C4,strs4);

TCHAR strs5[256];

wsprintf(strs5,"%i",L3);

SetDlgItemText(hwnd,IDC_C5,strs5);

TCHAR strs6[256];

wsprintf(strs6,"%i",L4);

SetDlgItemText(hwnd,IDC_C6,strs6);

TCHAR strd2[256];

wsprintf(strd2,"%i",L5);

SetDlgItemText(hwnd,IDC_D4,strd2);

double h1=sqrt(X*X+Y*Y);

double h2=cos(b);

H=sqrt(X*X+Y*Y)/cos(b)-a/sqrt(1-e2*sin(b)*sin(b)); int h3=(int)H;

int h4=10000*(H-h3);

TCHAR strs7[256];

wsprintf(strs7,"%i",h3);

SetDlgItemText(hwnd,IDC_C10,strs7);

TCHAR strd3[256];

wsprintf(strd3,"%i",h4);

SetDlgItemText(hwnd,IDC_D6,strd3);

}}

}}

void Main_OnClose(HWND hwnd)

{

EndDialog(hwnd, 0);

}

大地坐标和经纬度之间的换算-经纬度算坐标

大地坐标和经纬度之间的换算 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y,6位,X,7位

保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换>>>>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 好了以为设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置 我们输出的经纬度的单位应该是DDDMMMSS。SS注意 点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234。357就是123度42分34。357秒, YP为纬度,403950。225就是40度39分50。255秒(纬度没有最多90,所以没有三位数)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可, 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是 经度/3得到的整数为三度带的分带号 经度/6得到的整数为六度带的分带号 其中的XP为地图上的Y坐标,记得在前面加上带号,其中的YP为地图上的X坐标

大地坐标系转换

从大地水准面起算的陆地高度,称为绝对高度或海拔。 大地水准面就是由静止海水面并向大陆延伸 与平均海水面相吻合的称为大地水准面 所形成的不规则的封闭曲面。它就是重力等位面,即物体沿该面运动时,重力不做功(如水在这个面上就是不会流动的)。 地心直角坐标系又称为空间直角坐标系。如图2、1所示,她以地球的地心O为坐标原点,XOY平面在赤道面上,OX正向指向格林尼治子午线与赤道的交点,OZ轴指向地球北极与地球的极轴重合。该坐标系与地球紧 密结合在一起,随着地球的旋转而旋转。 图2、1 地心直角坐标系 2、1、2 大地坐标系

从微观上来说,地球并非就是一个圆球体,而就是近似椭圆体,其极半径约为6 357km,赤道半径约为6 378km,相差约21km,地球表面凹凸不平。 为了得到高的定位精度,在定位时必须用与地球最吻合的椭球体来代替地球。这个椭球体就是指所取得椭球面与大地水准面之间高度差的平方与最小。这个椭球称为参考椭球或基准椭球。大地水准面就是指假想的无潮汐、无温差、无风、无盐的海面。基准椭球面、大地水准面与实际的地形的关系如图2、2所示。在地球任意一点G的大地水准面高度就是指该点大地水准面与基准椭球面之间的距离。G点的海拔高度就是指该点实际地形与大地水准面之间的距离。 图2、2 基准椭球面与大地水准面 地球上某点,常用大地坐标或称地理坐标表示,即用经度、纬度与高度表示。大地坐标的基准圈就是赤道。通过英国伦敦的格林尼治天文台的地球子午线称为0经度线,它与赤道的交点就是大地坐标的起算点。地球上一点的经度,就就是以格林尼治子午线与该点子午线间所截的赤道短弧所对的圆心角,常用λ表示。经度的计算就是以格林尼治子午线算起,向东与向西都就是0o~180o。向东称为东经,用E表示;向西称为西经,用W 表示。地球上一点的纬度,就是以赤道为基准,子午线在该点的法线与赤道面的交角为该点的纬度,用φ表示。纬线从赤道算起,向北向南都就是0o~90o。向赤道以北称为北纬,用N表示;向赤道以南称为南纬,用S表示。 地面上一点的高度H就是指该点的实际地形与基准椭球面之间的距离,即: H = N + h N为大地水准面高度;h为海拔高度。 2、2 坐标转换

地理坐标系及我国大地坐标系和高程系

地理坐标系及我国大地坐标系和高程系 地理坐标系是指用经纬度表示地面点位的球面坐标系。在大地测量学中,对于地理坐标系统中的经纬度有三种描述:即天文经纬度、大地经纬度和地心经纬度。 大地控制的主要任务是确定地面点在地球椭球体上的位置。这种位置包括两个方面:一是点在地球椭球面上的平面位置,即经度和纬度;二是确定点到大地水准面的高度,即高程。为此,必须首先了解确定点位的坐标系。 1.地理坐标系 对地球椭球体而言,其围绕旋转的轴叫地轴。地轴的北端称为地球的北极,南端称为南极;过地心与地轴垂直的平面与椭球面的交线是一个圆,这就是地球的赤道;过英国格林威治天文台旧址和地轴的平面与椭球面的交线称为本初子午线。以地球的北极、南极、赤道和本初子午线等作为基本要素,即可构成地球椭球面的地理坐标系统(图2-3)。其以本初子午线为基准,向东,向西各分了1800,之东为东经,之西为西经;以赤道为基准,向南、向北各分了900,之北为北纬,之南为南纬。 地理坐标系是指用经纬度表示地面点位的球面坐标系。在大地测量学中,对于地理坐标系统中的经纬度有三种描述:即天文经纬度、大地经纬度和地心经纬度。 (1)天文经纬度 天文经度在地球上的定义,即本初子午面与过观测点的子午面所夹的二面角;天文纬度在地球上的定义,即为过某点的铅垂线与赤道平面之间的夹角。天文经纬度是通过地面天文测量的方法得到的,其以大地水准面和铅垂线为依据,精确的天文测量成果可作为大地测量中定向控制及校核数据之用。 (2)大地经纬度 地面上任意一点的位置,也可以用大地经度L、大地纬度B表示。大地经度是指过参考椭球面上某一点的大地子午面与本初子午面之间的二面角,大地纬度是指过参考椭球面上某一点的法线与赤道面的夹角(图2-3)。大地经纬度是以地球椭球面和法线为依据,在大地测量中得到广泛采用。

大地坐标与直角空间坐标转换计算公式

大地坐标与直角空间坐标转换计算公式 一、参心大地坐标与参心空间直角坐标转换 1名词解释: A :参心空间直角坐标系: a) 以参心0为坐标原点; b) Z 轴与参考椭球的短轴(旋转轴)相重合; c) X 轴与起始子午面和赤道的交线重合; d) Y 轴在赤道面上与X 轴垂直,构成右手直角坐标系0-XYZ ; e) 地面点P 的点位用(X ,Y ,Z )表示; B :参心大地坐标系: a) 以参考椭球的中心为坐标原点,椭球的短轴与参考椭球旋转轴重合; b) 大地纬度B :以过地面点的椭球法线与椭球赤道面的夹角为大地纬度B ; c) 大地经度L :以过地面点的椭球子午面与起始子午面之间的夹角为大地经度L ; d) 大地高H :地面点沿椭球法线至椭球面的距离为大地高H ; e) 地面点的点位用(B ,L ,H )表示。 2 参心大地坐标转换为参心空间直角坐标: ?? ? ?? +-=+=+=B H e N Z L B H N Y L B H N X sin *])1(*[sin *cos *)(cos *cos *)(2 公式中,N 为椭球面卯酉圈的曲率半径,e 为椭球的第一偏心率,a 、b 椭球的长短半径,f 椭球扁率,W 为第一辅助系数 a b a e 2 2-= 或 f f e 1 *2-= W a N B W e = -=22 sin *1( 西安80椭球参数: 长半轴a=6378140±5(m )

短半轴b=6356755.2882m 扁 率α=1/298.257 3 参心空间直角坐标转换参心大地坐标 [ ] N B Y X H H e N Y X H N Z B X Y L -+= +-++==cos ))1(**)() (*arctan() arctan(2 22 2 2 二 高斯投影及高斯直角坐标系 1、高斯投影概述 高斯-克吕格投影的条件:1. 是正形投影;2. 中央子午线不变形 高斯投影的性质:1. 投影后角度不变;2. 长度比与点位有关,与方向无关; 3. 离中央子午线越远变形越大 为控制投影后的长度变形,采用分带投影的方法。常用3度带或6度带分带,城市或工程控制网坐标可采用不按3度带中央子午线的任意带。 2、高斯投影正算公式: 52224253 2236 425442232)5814185(cos 120 )1(cos 6 cos )5861(cos sin 720 495(cos sin 24cos sin 2l t t t B N l t B N Bl N y l t t B B N l t B B N Bl B N X x ηηηηη-++-++-+=+-+++-++ =) 3、高斯投影反算公式:

坐标系向国家大地坐标系的转换完整版

坐标系向国家大地坐标 系的转换 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

北京54坐标系向国家2000大地坐标系的转换 摘要:2000国家坐标系统提高了测量的绝对精度,并且可以快速获取精确的三维地心坐标,能够提供高精度、地心、实用、统一的大地坐标系,自此以后的测量成果要求坐标系统采用2000国家大地坐标系,本文就北京54坐标系和2000国家大地坐标系原理和转换方法进行简单的分析。 1引言大地坐标系是地球空间框架的重要基础,是表征地球空间实体位置的三维参考基准,科学地定义和采用国家大地坐标系将会对航空航天、对地观测、导航定位、地震监测、地球物理勘探、地学研究等许多领域产生重大影响。建立大地坐标框架,是测量科技的精华,与空间导航乃至与经济、社会和军事活动均有密切关系,它是适应一定社会、经济和科技发展需要和发展水平的历史产物。过去受科技水平的限制,人们不得不使用经典大地测量技术建立局部大地坐标系,它的基本特点是非地心的、二维使用的。采用地心坐标系,即以地球质量中心为原点的坐标系统,是国际测量界的总趋势,世界上许多发达和中等发达国家和地区多年前就开始采用地心坐标系,如美国、加拿大、欧洲、墨西哥、澳大利亚、新西兰、日本、韩国等。我国也于2008年7月开始启用新的国家大地坐标系—2000国家大地坐标系。 2北京54系我国北京54坐标系是采用前苏联的克拉索夫斯基椭球参数(长轴6378245ra,短轴635686m,扁率1/298.3),并与前苏联1942年坐标系进行联测,通过计算建立了我国大地坐标系,定名为1954年北京坐标系。其坐标的原点不在北京,而是在前苏联的普尔科沃。

GPS坐标和国家大地坐标之间的转换

GPS坐标和国家大地坐标之间的转换 一、前言 WGS-84坐标系是目前GPS所采用的坐标系统,GPS所发布的星历参数就是基于此坐标系统的。WGS-84坐标系统的全称是World Geodical System-84(世界大地坐标系-84),它是一个地心地固坐标系统。WGS-84坐标系统由美国国防部制图局建立,于1987年取代了当时GPS所采用的坐标系统-WGS-72坐标系统而成为GPS的所使用的坐标系统。WGS-84坐标系的坐标原点位于地球的质心,轴指向BIH1984.0定义的协议地球极方向,轴指向BIH1984.0的启始子午面和赤道的交点。 采用椭球参数为:a=6 378 137m,f= 1/298.257 223 563。 北京54 坐标系、西安80 坐标系—属于参心坐标系, 北京54 坐标系采用克拉索夫斯基椭球参数,长轴a= 6 3 78 2 4 5 米, 扁率f=l : 2 98.3 ;西安80 大地系坐标系椭球参数采用国际大=地测量和地球物理联合19 7 5 后推荐的地球椭球参数, 长轴a= 6 3 7 8 140 米, 扁率f1 : 298.257,大地原点在我西安市径阳县永乐镇。西安80 坐标系的建立是在54 年北京坐标系的基础上完成的。 在实际的工作中,对于GPS的测量数据。我们需要将其转换成所需要的54或80坐标系,才能够使用。或是将其转换成相应的地方坐标系。在转换的过程中需要进行一系列的变换。本文将对其过程做详细的说明。 二、转换过程 (1)数据测量:在实际操作中,首先进行的是数据的观测。根据实际工作需要,采用相应的观测方法进行观测,得到合格的测量成果。本文主要是针对GPS控制网的转换来说明的。 (2)平差:在GPS控制网的测量工程中,在进行完基线测量(地面坐标和高程)后,需要对测量结果进行平差,得到相应的平差结果。下面对相应的条件平差①做具体说明: AV-W=0 [1] L#=L+V [2] 基础方程和它的解: 设有r个平差线性条件方程: [3]

空间大地坐标系与平面直角坐标系转换公式

§2.3.1 坐标系的分类 正如前面所提及的,所谓坐标系指的是描述空间位置的表达形式,即采用什么方法来表示空间位置。人们为了描述空间位置,采用了多种方法,从而也产生了不同的坐标系,如直角坐标系、极坐标系等。 在测量中常用的坐标系有以下几种: 一、空间直角坐标系 空间直角坐标系的坐标系原点位于参考椭球的中心,Z 轴指向参考椭球的北极,X 轴指向起始子午面与赤道的交点,Y 轴位于赤道面上且按右手系与X 轴呈90°夹角。某点在空间中的坐标可用该点在此坐标系的各个坐标轴上的投影来表示。空间直角坐标系可用图2-3来表示: 图2-3 空间直角坐标系 二、空间大地坐标系 空间大地坐标系是采用大地经、纬度和大地高来描述空间位置的。纬度是空间的点与参考椭球面的法线与赤道面的夹角;经度是空间中的点与参考椭球的自转轴所在的面与参考椭球的起始子午面的夹角;大地高是空间点沿参考椭球的法线方向到参考椭球面的距离。空间大地坐标系可用图2-4来表示:

图2-4空间大地坐标系 三、平面直角坐标系 平面直角坐标系是利用投影变换,将空间坐标空间直角坐标或空间大地坐标通过某种数学变换映射到平面上,这种变换又称为投影变换。投影变换的方法有很多,如横轴墨卡托投影、UTM 投影、兰勃特投影等。在我国采用的是高斯-克吕格投影也称为高斯投影。UTM 投影和高斯投影都是横轴墨卡托投影的特例,只是投影的个别参数不同而已。 高斯投影是一种横轴、椭圆柱面、等角投影。从几何意义上讲,是一种横轴椭圆柱正切投影。如图左侧所示,设想有一个椭圆柱面横套在椭球外面,并与某一子午线相切(此子午线称为中央子午线或轴子午线),椭球轴的中心轴CC ’通过椭球中心而与地轴垂直。 高斯投影满足以下两个条件: 1、 它是正形投影; 2、 中央子午线投影后应为x 轴,且长度保持不变。 将中央子午线东西各一定经差(一般为6度或3度)范围内的地区投影到椭圆柱面上,再将此柱面沿某一棱线展开,便构成了高斯平面直角坐标系,如下图2-5右侧所示。 图2-5 高斯投影 x 方向指北,y 方向指东。 可见,高斯投影存在长度变形,为使其在测图和用图时影响很小,应相隔一定的地区,另立中央子午线,采取分带投影的办法。我国国家测量规定采用六度带和三度带两种分带方法。六度带和三度带与中央子午线存在如下关系: 366 N L =中; n L 33=中 其中,N 、n 分别为6度带和3度带的带号。

大地坐标和经纬度之间的换算完整版

大地坐标和经纬度之间 的换算 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

大地坐标和经纬度之间的换算 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为 Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y,6位,X,7位 保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换>>>>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 好了以为设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置 我们输出的经纬度的单位应该是DDDMMMSS。SS注意 点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234。357就是123度42分34。357秒, YP为纬度,403950。225就是40度39分50。255秒(纬度没有最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可, 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是 经度/3得到的整数为三度带的分带号 经度/6得到的整数为六度带的分带号 其中的XP为地图上的Y坐标,记得在前面加上带号,其中的YP为地图上的X坐标

高斯平面直角坐标系与大地坐标系相互转化

高斯平面直角坐标系与大地坐标系相互转化 高斯平面直角坐标系与大地坐标系转换 1. 高斯投影坐标正算公式(1) 高斯投影正算:已知椭球面上某点的大地坐标(L,B),求该点在高斯投影平面上的直角坐标(x,y),即(L,B)->(x,y)的坐标变换。(2) 投影变换必须满足的条件中央子午线投影后为直线; 中央子午线投影后长度不变; 投影具有正形性质,即正形投影条件。(3) 投影过程在椭球面上有对称于中央子午线的两点P 1 和P 2 ,它们的大地坐标分别为(L,B)及(l,B),式中l 为椭球面上P 点的经度与中央子午线(L 0 )的经度差:l=L-L 0 ,P 点在中央子午线之东,l 为正,在西则为负,则投影后的平面坐标一定为P 1 ’(x,y)和P 2 ’(x,-y)。(4) 计算公式 4 ' ' 2 2 3 4 ' ' 2 ' ' 2 ' ' ) 9 5 ( cos sin 2 sin 2 l t B B N Bl N X x 5 ' ' 4 2 5 5 ' ' 3 ' ' 2 2 3 ' ' ' ' ' ' ) 18 5 ( cos 120 ) 1 ( 6 cos l t t B N l t B N Bl N y 当要求转换精度精确至0.001m时,用下式计算: 6 ' ' 4 2 5 6 ' ' 4 ' ' 4 2 2 3 4 ' ' 2 ' ' 2 ' ' ) 58 61 ( cos sin 720 ) 4 9 5 ( cos sin 24 sin 2 l t t B B N l t B B N Bl N X x 5 ' ' 2 2 2 4 2 5 5 ' ' 3 ' ' 2 2 3 3 ' ' ' ' ' ' ) 58 14 18 5 ( cos 720 ) 1

地理坐标系和大地坐标系

地理坐标系VS大地坐标系 winner发表于2008年12月22日 10:32 阅读(10) 评论(0) 分类:个人日记 举报 地理坐标转换到大地坐标的过程可理解为投影。(投影:将不规则的地球曲面转换为平面)在ArcGIS中预定义了两套坐标系: 地理坐标系(Geographic coordinate system) 投影坐标系(Projected coordinate system) 1、首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为地理坐标系统,是以经纬度为地图的存储单位的。很明显,Geographic coordinate system是球面坐标系统。我们要将地球上的数字化信息存放到球面坐标系统上,如何进行操作呢?地球是一个不规则的椭球,如何将数据信息以科学的方法存放到椭球上?这必然要求我们找到这样的一个椭球体。这样的椭球体具有特点:可以量化计算的。具有长半轴,短半轴,偏心率。以下几行便是Krasovsky_1940椭球及其相应参数。 Spheroid: Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening(扁率): 298.300000000000010000 然而有了这个椭球体以后还不够,还需要一个大地基准面将这个椭球定位。在坐标系统描述中,可以看到有这么一行: Datum: D_Beijing_1954 表示,大地基准面是D_Beijing_1954。 有了Spheroid和Datum两个基本条件,地理坐标系统便可以使用。 完整参数: Alias: Abbreviation: Remarks: Angular Unit: Degree (0.017453292519943299) Prime Meridian(起始经度): Greenwich (0.000000000000000000) Datum(大地基准面): D_Beijing_1954 Spheroid(参考椭球体): Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening: 298.300000000000010000 2、接下来便是Projection coordinate system(投影坐标系统),首先看看投影坐标系统中的一些参数。

大地坐标与空间坐标的互相转换··

大地坐标向空间坐标转换和空间坐标向大地坐标转换的c程 序 #include #include void main() { float a=6378137.000,b=6356752.3142,E=0.006694379990,pi=3.14159265; float B,L,N,H,X,Y,Z; float K,t0,t1,t2,P; int i; float B1,B2,B3,L1,L2,L3; printf("如果向进行大地坐标向空间坐标转换请输入1,进行空间坐标向大地坐标转换请输入0"); scanf("%d",&i); if(i) { printf("请输入经度:B1,B2,B3"); scanf("%f%f%f",&B1,&B2,&B3); B=(B1+B2/60+B3/3600)*pi/180; printf("请输入纬度:L1,L2,L3"); scanf("%f%f%f",&L1,&L2,&L3); L=(L1+L2/60+L3/3600)*pi/180; printf("请输入大地高:H"); scanf("%f",&H); N=a/sqrt(1-E*sin(B)*sin(B)); X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*sin(L); Z=(N*(1-E)+H)*sin(B); printf("X=%f\n",X); printf("Y=%f\n",Y); printf("Z=%f\n",Z); } else {printf("请输入空间坐标:X,Y,Z"); scanf("%f%f%f",&X,&Y,&Z);

不同坐标系之间的变换

不同坐标系之间的变换 SANY GROUP system office room 【SANYUA16H-

§10.6不同坐标系之间的变换 10.6.1欧勒角与旋转矩阵 对于二维直角坐标,如图所示,有: ?? ? ?????????-=??????1122cos sin sin cos y x y x θθθθ(10-8) 在三维空间直角坐标系中,具有相同原点的两坐标系间的变换一般需要在三个坐标平面上,通过三次旋转才能完成。如图所示,设旋转次序为: ①绕1OZ 旋转Z ε角,11,OY OX 旋 转至0 0,OY OX ; ②绕0 OY 旋转Y ε角 10 ,OZ OX 旋转至0 2 ,OZ OX ; ③绕2OX 旋转X ε角, 0,OZ OY 旋转至22,OZ OY 。 Z Y X εεε,,为三维空间直角坐标变换的三个旋转角,也称欧勒角,与 它相对应的旋转矩阵分别为: ???? ? ?????-=X X X X X R εεεεεcos sin 0sin cos 00 01 )(1 (10-10)

????? ?????-=Y Y Y Y Y R εεεεεcos 0sin 010sin 0cos )(2 (10-11) ???? ? ?????-=10 0cos sin 0sin cos )(3Z Z Z Z Z R εεεεε (10-12) 令 )()()(3210Z Y X R R R R εεε= (10- 13) 则有: ???? ? ?????=??????????=??????????1110111321222)()()(Z Y X R Z Y X R R R Z Y X Z Y X εεε (10-14) 代入: ???? ??? ??? +-+++--=Y X Z Y X Z X Z Y X Z X Y X Z Y X Z X Z Y X Z X Y Z Y Z Y R εεεεεεεεεεεεεεεεεεεεεεεεεεεεεcos cos sin sin cos cos sin cos sin cos sin sin cos sin sin sin sin cos cos cos sin sin sin cos sin sin cos cos cos 0一般Z Y X εεε,,为微小转角,可取: sin sin sin sin sin sin sin ,sin ,sin 1cos cos cos =========Z Y Z X Y X Z Z Y Y X X Z Y X εεεεεεεεεεεεεεε 于是可化简

利用MAPGIS制图软件换算大地坐标和经纬度

利用MAPGIS制图软件换算大地坐标和经纬度 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,以下步骤请大家熟记: 一、大地座标→经纬度(地理坐标) 1、在文本文件中输入大地坐标数据,格式为Y空格X。 如下,原始的大地坐标由一个8位的Y和一个7位的X组成,“新建文本文档.txt -记事本”显示如下: 31560000 4503500 31565000 4503500 31565000 4507500 31568500 4507500 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉, 现在数据变为:Y—6位,X—7位。“新建文本文档.txt -记事本”显示如下: 560000 4503500 565000 4503500 565000 4507500 568500 4507500 保存这个TXT的文本文件。 2、打开MAPGIS,启动坐标投影变形程序 如果是MAPGIS6.7版,请选择“实用服务→投影变换系统→用户文件投影转换”→点击打开文件,打开刚才的大地坐标的文本文件。 “指定数据起始位置”中出现刚才的的文本文档,显示如下: 560000 4503500 565000 4503500 565000 4507500 568500 4507500 在设置用户文件选项中,一般选:按行读取数据,X→Y顺序,生成点。最后点击确定。3、设置输入数据的格式,点击用户投影参数,并完成设置。 坐标系类型——大地坐标系 投影类型——5:高斯克吕格投影 比例尺分母——1 椭球面高程——0 投影面高程——0 投影带类型——3度带或6度带 投影带序号——31 X,Y的平移均设0 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 接着为:设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成设置。 4、输入投影参数 坐标系类型——地理坐标系 我们输出的经纬度的单位应该是DDDMMMSS。SS注意点写到文件,保存就大功告成了,注意:保存的文件要写上.TXT的后缀 最后,在文本文件中计算出的结果如下: x= 560000 y= 4503500 xp=1234234.357 yp=403950.255

常用坐标系之间的关系与转换

7.5 常用坐标系之间的关系与转换 一、大地坐标系和空间大地直角坐标系及其关系 大地坐标系用大地纬度企丈地经度L 和丈地髙H 来表示点的位置°这种坐标系是经 典大地 测量甬:両用座标紊7屜据地图投影的理论,大地坐标系可以通过一定的投影转 化为投影平面上的直角坐标系,为地形测图和工程测量提供控制基础。同时,这种坐标系 还是研究地球形状和大小的 种有用坐标系°所以大地坐标系在大地测量中始终有着重要 的作用. 空间大地直角坐标系是-种以地球质心为原点购亘墮?坐标系,一般用X 、化Z 表 示点 BSSTSTT 逐碇SS 範菇飞両H 绕禎扭转冻其轨道平面随时通过 地球质心。对它们的跟踪观测也以地球质心为坐标原点,所以空间大地直角坐标系是卫星 大地测量中一种常用的基本坐标系。现今,利用卫星大地测量的手段*可以迅速地测定点 的空间大地直角坐拯,广泛应用于导航定位等空间技术。同时经过数学变换,还可求岀点 的大地坐标I 用以加强和扩展地面大地网,进行岛屿和洲际联测,使传统的大地测量方法 发生了深刻的变化,所以空间大地宜角坐标系对现今大地测量的发展’具有重要的意义。 、大地坐标系和空间大地直角坐标系的转换 如图7- 23所示’尸点的位置用空间 大地 直角坐标〔X, Y, Z)表示,其相应 的大地坐 标为(E, L)a 将该图与图?一5 上式表明了 2种基本坐标系之间的关系。 加以比较可见,图7-5中的子午椭圆平面 相 当于图7-23中的OJVP 平面.其中 PPz=Z.相 当于图7-5中的j7;OP 3相当 丫于图7-5中的 仏两平面的经度乙可视为 相同,等于"叽 于是可以直接写岀 X=jrcQsi f Y=jrsinL, Z=y 将式(7-21).式(7-20)分别代入上式, 井考虑 式(7-26)得 X=Ncos^cosZr ” Y =NcQsBsinL > (7—78) Z=N (1—护〉sin^ ; BB 7-23

大地坐标转换为施工坐标

****大桥关于大地坐标 转化为施工坐标的报告 ****监理公司: ****大桥为特大型桥梁,对测量精度要求高、施工难度大。在实际施工测量当中,例如承台等结构尺寸比较简单的结构,在模板的安装的时候需要不断的测量、调整,直到满足要求。在上述过程中需要用放样模式来确定设计位置,待模板调整后又要切换到测量模式检查坐标的偏差,如果没有满足要求,又需要切换到放样模式来确定设计位置。如此反复,给我们施工放样带来了不必要的时间浪费,根据特大跨径桥梁施工的特点方便大桥测量定位,我项目部拟大地坐标系转化为独立的施工坐标系。 转化方法及过程 从国家坐标系转换到施工坐标系,具体转换公式: ()()θθsin cos 11?-+?-=Y Y X X E ()()θθsin cos 11?-+?--=X X Y Y F (做了修改) 施工坐标系以桥轴线为E 轴,且以桩号增加方向为正向;以垂直于E 轴为F 轴,水平向右为正向。高程采用设计提供的85黄海高程,式中E 、F 为转换后的施工坐标系坐标;X 、Y 为国家坐标系下坐标, 1X 、1Y 为施工坐标原点在国家坐标系下坐标;θ表示桥轴正向在国家 坐标系下的方位角。 本桥梁起点桩号为K119+375.781,大地坐标为X: 5034.6566,Y: 5380.6574,方位角为289°2′58″=289.289.0494444°

具体转化过程如下: 以DQ06为例 DQ06大地坐标为X: 5157.7791,Y: 4351.265。 ()()θθsin cos 11?-+?--=X X Y Y F ()()0494444 .289sin 5034.65665157.77910494444.289cos 5380.65744351.265?--?-= 2052.1013=(做了修改) ()()θθsin cos 11?-+?-=Y Y X X E ()()0494444 .289sin 5380.65744351.2650494444.289cos 5034.65665157.7791?-+?-= 1972.219-= 见下图: (0,0) 由上可知,DQ06的施工坐标为(X:1013.205,Y:-219.197)。 用以上公式同样可以求出控制点施工坐标,列表如下:

大地坐标和经纬度之间的换算

MAPGIS应用——大地坐标和经纬度之间的换算(2009-04-20 15:57:08) 标签:杂谈分类:学海无涯 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为 Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y(6位),X(7位)如下图:

保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换——>用户文件投影转换

点打开文件,打开刚才的大地坐标的文本文件,

设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米。

填好了以后设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置: 我们输出的经纬度的单位应该是DDDMMMSS.SS注意点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀

下面是计算出的结果文件 XP为经度,1234234.357就是123度42分34.357秒, YP为纬度,403950.225就是40度39分50.255秒(纬度没有最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可。 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是: 经度/3得到的整数为三度带的分带号

大地坐标与大地空间坐标转换工具

#include "stdafx.h" #include #include #include "resource.h" #include "MainDlg.h" #include #include BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { return TRUE; } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { double a=0; double e2=0; switch(id) { case IDC_B1: { a=6378245.0000; e2=0.00669342162297; if(a==0) { MessageBox(hwnd,TEXT("请选择坐标系"),TEXT("警告"),MB_OK); } else{

空间直角坐标系与空间大地坐标系的相互转换及其C++源程序

空间直角坐标系与空间大地坐标系的相互转换 1.空间直角坐标系/笛卡尔坐标系 坐标轴相互正交的坐标系被称作笛卡尔坐标系。三维笛卡尔坐标系也被称为空间直角坐标系。在空间直角坐标系下,点的坐标可以用该点所对应的矢径在三个坐标轴上的投影长度来表示,只有确定了原地、三个坐标轴的指向和尺度,就定义了一个在三维空间描述点的位置的空间直角坐标系。 以椭球体中心O为原点,起始子午面与赤道面交线为X轴,在赤道面上与X轴正交的方向为Y轴,椭球体的旋转轴为Z轴构成右手坐标系O.XYZ,在该坐标系中,P点的位置用X,Y,Z表示。 在测量应用中,常将地球空间直角坐标系的坐标原点选在地球质心(地心坐标系)或参考椭球中心(参心坐标系),z轴指向地球北极,x轴指向起始子午面与地球赤道的交点,y轴垂直于XOZ面并构成右手坐标系。 空间直角坐标系 2.空间大地坐标系 由于空间直角坐标无法明确反映出点与地球之间的空间关系,为了解决这一问题,在测量中引入了大地基准,并据此定义了大地坐标系。大地基准指的是用于定义地球参考椭球的一系列参数,包括如下常量: 2.1椭球的大小和形状

2.2椭球的短半轴的指向:通常与地球的平自转轴平息。 2.3椭球中心的位置:根据需要确定。若为地心椭球,则其中心位于地球质心。 2.4本初子午线:通过固定平极和经度原点的天文子午线,通常为格林尼治子午线。 以大地基准为基础建立的坐标系被称为大地坐标系。由于大地基准又以参考椭球为基准,因此,大地坐标系又被称为椭球坐标系。大地坐标系是参心坐标系,其坐标原点位于参考椭球中心,以参考椭球面为基准面,用大地经度L、纬度B 和大地高H表示地面点位置。过地面点P的子午面与起始子午面间的夹角叫P 点的大地经度。由起始子午面起算,向东为正,叫东经(0°~180°),向西为负,叫西经(0°~-180°)。过P点的椭球法线与赤道面的夹角叫P点的大地纬度。由赤道面起算,向北为正,叫北纬(0°~90°),向南为负,叫南纬(0°~-90°)。从地面点P沿椭球法线到椭球面的距离叫大地高。大地坐标坐标系中,P点的位置用L,B表示。如果点不在椭球面上,表示点的位置除L,B外,还要附加另一参数——大地高H。 空间大地坐标系 3.空间直角坐标与大地坐标间的转换 3.1大地坐标转换为空间直角坐标

WGS84经纬度坐标与北京54坐标或者西安80坐标的关系

WGS84经纬度坐标与北京54坐标或者西安80坐标的关系 WGS84经纬度坐标与北京54坐标或者西安80坐标的关系 2008-11-07 17:58 一般来讲,GPS直接提供的坐标(B,L,H)是1984年世界大地坐标系(Word Geodetic System 1984即WGS-84)的坐标,其中B为纬度,L为经度,H为大地高即是到WGS-84椭球面的高度。而在实际应用中,我国地图采用的是1954北京坐标系或者1980西安坐标系下的高斯投影坐标(x,y,),不过也有一些电子地图采用1954北京坐标系或者1980西安坐标系下的经纬度坐标(B,L),高程一般为海拔高度h。 GPS的测量结果与我国的54系或80系坐标相差几十米至一百多米,随区域不同,差别也不同,经粗落统计,我国西部相差70米左右,东北部140米左右,南部75米左右,中部45米左右。现就上述几种坐标系进行简单介绍,供大家参阅,并提供各坐标系的基本参数,以便大家在使用过程中自定义坐标系。 1、1984世界大地坐标系 WGS-84坐标系是美国国防部研制确定的大地坐标系,是一种协议地球坐标系。WGS-84坐标系的定义是:原点是地球的质心,空间直角坐标系的Z轴指向BIH(1984.0)定义的地极(CTP)方向,即国际协议原点CIO,它由IAU和IUGG共同推荐。X轴指向BIH定义的零度子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系。WGS-84椭球采用国际大地测量与地球物理联合会第17届大会测量常数推荐值,采用的两个常用基本几何参数: 长半轴a=6378137m;扁率f=1:298.257223563。 2、1954北京坐标系 1954北京坐标系是将我国大地控制网与前苏联1942年普尔科沃大地坐标系相联结后建立的我国过渡性大地坐标系。属于参心大地坐标系,采用了前苏联的克拉索夫斯基椭球体。其长半轴a=6378245,扁率f=1/298.3。1954年北京坐标系虽然是苏联1942年坐标系的延伸,但也还不能说它们完全相同。 3、1980西安坐标系 1978年,我国决定建立新的国家大地坐标系统,并且在新的大地坐标系统中进行全国天文大地网的整体平差,这个坐标系统定名为1980年西安坐标系。属参心大地坐标系。1980年西安坐标系Xi'an Geodetic Coordinate System 1980 采用1975国际椭球,以JYD 1968.0系统为椭球定向基准,大地原点设在陕西省泾阳县永乐镇,采用多点定位所建立的大地坐标系.其椭球参

坐标系之间的转换

大地坐标(BLH经纬度高程)和北京54等坐标系之间的转换 2008-12-11 16:25:23| 分类:默认分类| 标签:|字号大中小订阅 工程施工过程中,常常会遇到不同坐标系统间,坐标转换的问题。目前国内常见的转换有以下几种:1,大地坐标(BLH)对平面直角坐标(XYZ);2,北京54全国80及WGS84坐标系的相互转换;3,任意两空间坐标系的转换。其中第2类可归入第三类中。所谓坐标转换的过程就是转换参数的求解过程。常用的方法有三参数法、四参数法和七参数法。以下对上述三种情况作详细描述如下: 1,大地坐标(BLH)对平面直角坐标(XYZ) 常规的转换应先确定转换参数,即椭球参数、分带标准(3度,6度)和中央子午线的经度。椭球参数就是指平面直角坐标系采用什么样的椭球基准,对应有不同的长短轴及扁率。一般的工程中3度带应用较为广泛。对于中央子午线的确定有两种方法,一是取平面直角坐标系中Y坐标的前两位*3,即可得到对应的中央子午线的经度。如x=3250212m,y=395121123m,则中央子午线的经度=39*3=117度。另一种方法是根据大地坐标经度,如果经度是在155.5~185.5度之间,那么对应的中央子午线的经度=(155.5+185.5)/2=117度,其他情况可以据此3度类推。 另外一些工程采用自身特殊的分带标准,则对应的参数确定不在上述之列。 确定参数之后,可以用软件进行转换,以下提供坐标转换的程序下载。 2,北京54全国80及WGS84坐标系的相互转换 这三个坐标系统是当前国内较为常用的,它们均采用不同的椭球基准。 其中北京54坐标系,属三心坐标系,大地原点在苏联的普而科沃,长轴6378245m,短轴6356863,扁率1/298.3;西安80坐标系,属三心坐标系,大地原点在陕西省径阳县永乐镇,长轴6378140m,短轴6356755,扁率1/298.25722101;WGS84坐标系,长轴6378137.000m,短轴6356752.314,扁率1/298.257223563。由于采用的椭球基准不一样,并且由于投影的局限性,使的全国各地并不存在一至的转换参数。对于这种转换由于量较大,有条件的话,一般都采用GPS联测已知点,应用GPS软件自动完成坐标的转换。当然若条件不许可,且有足够的重合点,也可以进行人工解算。详细方法见第三类。 3,任意两空间坐标系的转换 由于测量坐标系和施工坐标系采用不同的标准,要进行精确转换,必须知道至少3个重合点(即为在两坐标系中坐标均为已知的点。采用布尔莎模型进行求解。布尔莎公式: 对该公式进行变换等价得到: 解算这七个参数,至少要用到三个已知点(2个坐标系统的坐标都知道),采用间接平差模型进行解算: 其中:V 为残差矩阵; X 为未知七参数; A 为系数矩阵; 解之:L 为闭合差

相关文档
最新文档