高斯投影正反算公式83
- 格式:doc
- 大小:263.00 KB
- 文档页数:8
高斯投影正反算学院:资源与环境工程工程学院专业:测绘工程 学号:X51414012:超一、高斯投影概述想象有一个椭圆柱面横套在地球椭球体外面,并与某一条子午线相切,椭圆柱的中心轴通过椭球体的中心,然后用一定投影方法,将中央子午线两侧各一定经差围的地区投影到椭圆柱面上,再将此柱面展开即成为投影面。
高斯投影由于是正形投影,故保证了投影的角度不变性,图形的相似性以及在某点各方向上长度比的同一性。
由于采用了同样法则的分带投影,这即限制了长度变形,又保证了在不同投影带中采用相同的简便公式和数表进行变形引起的各项改正的计算,并且带与带间的互相换算也能用相同的公式和方法进行。
高斯投影的这些优点必将使它得到广泛的推广和具有国际意义。
二、高斯投影坐标正算公式1.高斯投影必须满足以下三个条件 1)中央子午线投影后为直线 2)中央子午线投影后长度不变 3)投影具有正形性质,即正形投影条件2.高斯正算公式推导1)由第一个条件可知,由于地球椭球体是一个旋转椭球体,所以高斯投影必然有这样一个性质,即中央子午线东西两侧的投影必然对称于中央子午线。
2)由于高斯投影是换带投影,在每带经差l是不大的,lρ是一个微小量,所以可以将X=X (l,q ),Y=Y (l ,q )展开为经差为l 的幂级数,它可写成如下的形式X=m 0+m 2l 2+m 4l 4+…Y=m 1l+m 3l 2+m 5l 5+…式中m 0,m1,m2,…是待定系数,他们都是纬度B 的函数。
3)由第三个条件:∂y ∂l =∂x ∂q 和∂x ∂l =-∂y∂q ,将上式分别对l 和q 求偏导2340123423401234...........x m m l m l m l m l y n n l n l n l n l =+++++=+++++可得到下式0312123403121234111,,,, 234111,,,,234dm dm dm dm n n n n dq dq dq dq dn dn dn dn m m m m dq dq dq dq ⎧====⎪⎪⎨⎪=-=-=-=-⎪⎩经过计算可以得出232244524632235242225sin cos sin cos (594)224 sin cos (6158)720cos cos (1)6cos (5181458)120N N x X B B l B B t l NB B t t l Ny N B l B t l NB t t t l ηηηηη=+⋅+-+++-+=⋅+-++-++-三、高斯投影坐标反算公式推导1.思路:级数展开,应用高斯投影三个条件,待定系数法求解。
⾼斯投影正反算公式⾼斯投影坐标正反算⼀、基本思想:⾼斯投影正算公式就是由⼤地坐标(L ,B )求解⾼斯平⾯坐标(x ,y ),⽽⾼斯投影反算公式则是由⾼斯平⾯坐标(x ,y )求解⼤地坐标(L ,B )。
⼆、计算模型:基本椭球参数:椭球长半轴a椭球扁率f椭球短半轴:(1)b a f =-椭球第⼀偏⼼率:e a= 椭球第⼆偏⼼率:e b'=⾼斯投影正算公式:此公式换算的精度为0.001m6425644223422)5861(cos sin 720)495(cos 24cos sin 2l t t B B N l t B simB N l B B N X x ''+-''+''++-''+''?''+=ρηηρρ 5222425532233)5814185(cos 120)1(cos 6cos l t t t B N l t B N l B N y ''-++-''+''+-''+''?''=ηηρηρρ其中:⾓度都为弧度B 为点的纬度,0l L L ''=-,L 为点的经度,0L 为中央⼦午线经度; N 为⼦午圈曲率半径,1222(1sin )N a e B -=-;tan t B =; 222cos e B η'=1803600ρπ''=*其中X 为⼦午线弧长:2402464661616sin cos ()(2)sin sin 33X a B B B a a a a a B a B ??=--++-+02468,,,,a a a a a 为基本常量,按如下公式计算:200468242684468686883535281612815722321637816323216128m a m m m m m m a m m m a m m m m a m a ?=++++=+++=++=+ =??02468,,,,m m m m m 为基本常量,按如下公式计算:22222020426486379(1);;5;;268m a e m e m m e m m e m m e m =-====;⾼斯投影反算公式:此公式换算的精度为0.0001’’.()()()()2222243246532235242225053922461904572012cos 6cos 5282468120cos f f f f f f f f f f f f f f f f f f f f f ff f f f f f ft t B B y t t yM N M N t y t t yM N y y l t N B N B y t t t N B L l L ηηηηη=-+++--++=-+++++++=+其中: 0L 为中央⼦午线经度。
python高斯投影公式
高斯投影是一种将地球椭球面上的经纬度线投影到平面上的方法,常用于地图制作和地理信息系统等领域。
在Python中,可以使用以下公式进行高斯投影:
1. 投影正反解公式:
正解公式:X=F(L)= L (1+sin(L))
反解公式:L=F^{-1}(X)
其中,L为经度,X为投影坐标。
2. 投影变换公式:
纬度变换公式:B=B0-g(L)
经度变换公式:L=L0-e(X)
其中,B为投影坐标,B0为地球椭球面上的纬度,L为投影坐标对应的经度,L0为地球椭球面上的经度,g(L)和e(X)分别为纬度和经度的变换函数。
需要注意的是,高斯投影公式是一种近似解法,其精度受到地球椭球模型、投影范围和投影方式等因素的影响。
在实际应用中,需要根据具体情况选择合适的投影公式和参数。
高斯投影正反算编程一.高斯投影正反算基本公式(1)高斯正算基本公式(2)高斯反算基本公式以上主要通过大地测量学基础课程得到.这不进行详细的推导.只是列出基本公式指导编程的进行。
二.编程的基本方法和流程图(1)编程的基本方法高斯投影正反算基本上运用了所有的编程基本语句.本文中是利用C++语言进行基本的设计。
高斯正算中对椭球参数和带宽的选择主要运用了选择语句。
而高斯反算中除了选择语句的应用.在利用迭代算法求底点纬度还应用了循环语句。
编程中还应特别注意相关的度分秒和弧度之间的相互转换.这是极其重要的。
(2)相关流程图1)正算2)反算三.编程的相关代码(1)正算# include "stdio.h"# include "stdlib.h"# include "math.h"# include "assert.h"#define pi (4*atan(1.0))int i;struct jin{double B;double L;double L0;};struct jin g[100];main(int argc, double *argv[]) {FILE *r=fopen("a.txt","r"); assert(r!=NULL);FILE *w=fopen("b.txt","w"); assert(r!=NULL);int i=0;while(fscanf(r,"%lf %lf %lf",&g[i].B,&g[i].L,&g[i].L 0)!=EOF){double a,b;int zuobiao;printf("\n请输入坐标系:北京54=1.西安80=2.WGS84=3:");scanf("%d",&zuobiao);getchar();if(zuobiao==1){a=6378245;b=6356863.0187730473;}if(zuobiao==2){a=6378140;b=6356755.2881575287;}if(zuobiao==3){a=6378137;b=6356752.3142;} //选择坐标系//double f=(a-b)/a;double e,e2;e=sqrt(2*f-f*f);e2=sqrt((a/b)*(a/b)-1);//求椭球的第一.第二曲率//double m0,m2,m4,m6,m8;double a0,a2,a4,a6,a8;m0=a*(1-e*e);m2=3*e*e*m0/2;m4=5*e*e*m2/4;m6=7*e*e*m4/6;m8=9*e*e*m6/8;a0=m0+m2/2+3*m4/8+5*m6/16+35*m8/128;a2=m2/2+m4/2+15*m6/32+7*m8/16;a4=m4/8+3*m6/16+7*m8/32;a6=m6/32+m8/16;a8=m8/128;double Bmiao,Lmiao, L0miao;Bmiao=(int)(g[i].B)*3600.0+(int)((g[i].B-(int)(g[i].B) )*100.0)*60.0+(g[i].B*100-(int)(g[i].B*100))*100.0;Lmiao=(int)(g[i].L)*3600.0+(int)((g[i].L-(int)(g[i].L) )*100.0)*60.0+(g[i].L*100-(int)(g[i].L*100))*100.0;L0miao=(int)(g[i].L0)*3600.0+(int)((g[i].L0-(int)(g[i] .L0))*100.0)*60.0+(g[i].L0*100-(int)(g[i].L0*100))*100 .0;double db;db=pi/180.0/3600.0;double B1,L1,l;B1=Bmiao*db;L1= Lmiao*db;l=L1-L0miao*db;//角度转化为弧度//double T=tan(B1)*tan(B1);double n=e2*e2*cos(B1)*cos(B1);double A=l*cos(B1);double X,x,y;X=a0*(B1)-a2*sin(2*B1)/2+a4*sin(4*B1)/4-a6*sin(6*B1)/6 +a8*sin(8*B1)/8;//求弧长//double N=a/sqrt(1-e*e*sin(B1)*sin(B1));int Zonewide;int Zonenumber;printf("\n请输入带宽:3度带或6度带Zonewide=");scanf("%d",&Zonewide);getchar();if(Zonewide==3){Zonenumber=(int)((g[i].L-Zonewide/2)/Zonewide+1);}else if(Zonewide==6){Zonenumber=(int)g[i].L/Zonewide+1;}else{printf("错误");exit(0);}//选择带宽//doubleFE=Zonenumber*1000000+500000;//改写为国家通用坐标//y=FE+N*A+A*A*A*N*(1-T*T+n*n)/6+A*A*A*A*A*N*(5-18*T*T+T *T*T*T+14*n*n-58*n*n*T*T)/120;x=X+tan(B1)*N*A*A/2+tan(B1)*N*A*A*A*A*(5-T*T+9*n*n+4*n *n*n*n)/24+tan(B1)*N*A*A*A*A*A*A*(61-58*T*T+T*T*T*T)/7 20;printf("\n所选坐标系的转换结果:x=%lf y=%lf\n",x,y);fprintf(w,"%lf %lf\n",x,y);//输出结果到文本文件//}fclose(r);fclose(w);system("pause");return 0;}(2)反算# include "stdio.h"# include "stdlib.h"# include "math.h"# include "assert.h"#define pi (4*atan(1.0))double X,Y,B1,B2,B3,F,t;double m0,m2,m4,m6,m8;double a0,a2,a4,a6,a8,a1,b1;double BB,LL,Bf;double e,e1;int d,m,s,i,zuobiao;double sort(double,double);struct jin{double x;double y;double L0;};struct jin g[100];//x,y,L0为输入量:x,y坐标和中央子午线经度//main(int argc, double *argv[]){FILE *r=fopen("c.txt","r");assert(r!=NULL);FILE *w=fopen("d.txt","w");assert(r!=NULL);int i=0;while(fscanf(r,"%lf %lf %lf",&g[i].x,&g[i].y,&g[i].L 0)!=EOF)//文件为空.无法打开//{double a1=6378245.0000000000;//克拉索夫斯基椭球参数//double b1=6356863.0187730473;double a75=6378140.0000000000;//1975国际椭球参数//double b75=6356755.2881575287;double a84=6378137.0000000000;//WGS-84系椭球参数//double b84=6356752.3142000000;double M,N;//mouyou圈曲率半径.子午圈曲率半径// double t,n;double A,B,C;double BB,LL,Bf,LL0,BB0;double a,b;printf("\n选择参考椭球:1=克拉索夫斯基椭球.2=1975国际椭球.3=WGS-84系椭球:");scanf("%d",&zuobiao);getchar();if(zuobiao==1){a=a1;b=b1;}if(zuobiao==2){a=a75;b=b75;}if(zuobiao==3){a=a84;b=b84;}//选择参考椭球.求解第一偏心率e,第二偏心率e1// Bf=sort(a,b);//调用求解底点纬度的函数//double q=sqrt(1-e*e*sin(Bf)*sin(Bf));double G=cos(Bf);M=a*(1-e*e)/(q*q*q);N=a/q;double H,I;A=g[i].y/N;H=A*A*A;I=A*A*A*A*A;t=tan(Bf);n=e1*cos(Bf);B=t*t;C=n*n;BB0=Bf-g[i].y*t*A/(2*M)+g[i].y*t*H/(24*M)*(5+3*B+C-9*B *C)-g[i].y*t*I/(720*M)*(61+90*B+45*B*B);LL0=g[i].L0*pi/180.0+A/G-H/(6*G)*(1.0+2*B+C)+I/(120*G)*(5.0+28*B+24*B*B+6*C+8*B*C);//利用公式求解经纬度// int Bdu,Bfen,Ldu,Lfen;double Bmiao,Lmiao;Ldu=int(LL0/pi*180);Lfen=int((LL0/pi*180)*60-Ldu*60);Lmiao=LL0/pi*180*3600-Ldu*3600-Lfen*60;Bdu=int(BB0/pi*180);Bfen=int((BB0/pi*180)*60-Bdu*60);Bmiao=BB0/pi*180*3600-Bdu*3600-Bfen*60;//将弧度转化为角度//printf("\n所选坐标系的转换结果:%d度%d分%lf秒 %d 度%d分%lf秒 \n",Bdu,Bfen,Bmiao,Ldu,Lfen,Lmiao);fprintf(w,"%d°%d’%lf”%d°%d’%lf”\n",Bdu,Bfen,Bmiao,Ldu,Lfen,Lmiao);//将结果输出到文本文件//}fclose(r);fclose(w);system("pause");return 0;}double sort(double a,double b){double e,e1;e=sqrt(1-(b/a)*(b/a));e1=sqrt((a/b)*(a/b)-1);double m0,m2,m4,m6,m8;double a0,a2,a4,a6,a8;m0=a*(1-e*e);m2=3*e*e*m0/2;m4=5*e*e*m2/4;m6=7*e*e*m4/6;m8=9*e*e*m6/8;a0=m0+m2/2+3*m4/8+5*m6/16+35*m8/128;a2=m2/2+m4/2+15*m6/32+7*m8/16;a4=m4/8+3*m6/16+7*m8/32;a6=m6/32+m8/16;a8=m8/128;B1=g[i].x/a0;do{F=-a2*sin(2*B1)/2+a4*sin(4*B1)/4-a6*sin(6*B1)/6+a8*s in(8*B1)/8;B2=(g[i].x-F)/a0;B3=B1;B1=B2;} while(fabs(B3-B2)>10e-10);//利用迭代算法求解底点纬度//return B2;}。
1 高斯投影坐标正算公式(1)高斯投影正算:已知椭球面上某点的大地坐标,求该点在高斯投影平面上的直角坐标,即的坐标变换。
(2)投影变换必须满足的条件中央子午线投影后为直线;中央子午线投影后长度不变;投影具有正形性质,即正形投影条件。
(3)投影过程在椭球面上有对称于中央子午线的两点和,它们的大地坐标分别为()及(),式中为椭球面上点的经度与中央子午线的经度差:, 点在中央子午线之东, 为正,在西则为负,则投影后的平面坐标一定为和。
(4)计算公式当要求转换精度精确至0.OOlm时,用下式计算:2 高斯投影坐标反算公式(1)高斯投影反算:已知某点的高斯投影平面上直角坐标,求该点在椭球面上的大地坐标,即的坐标变换。
(2)投影变换必须满足的条件坐标轴投影成中央子午线,是投影的对称轴;轴上的长度投影保持不变;投影具有正形性质,即正形投影条件。
(3)投影过程根据计算纵坐标在椭球面上的投影的底点纬度,接着按计算()及经差,最后得到、。
(4)计算公式当要求转换精度至时,可简化为下式:3高斯投影相邻带的坐标换算(1)产生换带的原因高斯投影为了限制高斯投影的长度变形,以中央子午线进行分带,把投影范围限制在中央子午线东、西两侧一定的范围内。
因而,使得统一的坐标系分割成各带的独立坐标系。
在工程应用中,往往要用到相邻带中的点坐标,有时工程测量中要求采用带、带或任意带,而国家控制点通常只有带坐标,这时就产生了带同带(或带、任意带)之间的相互坐标换算问题,如图所示:(2)应用高斯投影正、反算公式间接进行换带计算计算过程把椭球面上的大地坐标作为过渡坐标。
首先把某投影带(比如Ⅰ带)内有关点的平面坐标,利用高斯投影反算公式换算成椭球面上的大地坐标,进而得到;然后再由大地坐标,利用投影正算公式换算成相邻带的(第Ⅱ带)的平面坐标。
在这一步计算时,要根据第Ⅱ带的中央子午线来计算经差,亦即此时。
算例在中央子午线的Ⅰ带中,有某一点的平面直角坐标,,现要求计算该点在中央子午线的第Ⅱ带的平面直角坐标。
§8.3高斯投影坐标正反算公式任何一种投影①坐标对应关系是最主要的;②如果是正形投影,除了满足正形投影的条件外(C-R 偏微分方程),还有它本身的特殊条件。
8.3.1高斯投影坐标正算公式: B,l ⇒ x,y高斯投影必须满足以下三个条件:①中央子午线投影后为直线;②中央子午线投影后长度不变;③投影具有正形性质,即正形投影条件。
由第一条件知中央子午线东西两侧的投影必然对称于中央子午线,即(8-10)式中,x 为l 的偶函数,y 为l 的奇函数;0330'≤l ,即20/1/≈''''ρl ,如展开为l 的级数,收敛。
+++=++++=553316644220l m l m l m y l m l m l m m x (8-33)式中 ,,10m m 是待定系数,它们都是纬度B 的函数。
由第三个条件知:qyl x l y q x ∂∂-=∂∂∂∂=∂∂, (8-33)式分别对l 和q 求偏导数并代入上式----=++++++=+++5533156342442204523164253l dqdm l dq dm l dq dm l m l m l m l dqdm l dq dm dq dm l m l m m (8-34) 上两式两边相等,其必要充分条件是同次幂l 前的系数应相等,即dq dm m dqdm m dqdm m 2312013121⋅=⋅-==(8-35)(8-35)是一种递推公式,只要确定了0m 就可依次确定其余各系数。
由第二条件知:位于中央子午线上的点,投影后的纵坐标x 应等于投影前从赤道量至该点的子午线弧长X ,即(8-33)式第一式中,当0=l时有:0m X x == (8-36) 顾及(对于中央子午线)B V Mr M B N dq dB M dBdXcos cos 2==== 得:B V cB N r dq dB dB dX dq dX dq dm m cos cos 01===⋅===(8-37,38)B B Ndq dB dB dm dq dm m cos sin 22121112=⋅-=⋅-= (8-39)依次求得6543,,,m m m m 并代入(8-33)式,得到高斯投影正算公式6425644223422)5861(cos sin 720)495(cos 24cos sin 2lt t B B N lt B simB N l B B N X x ''+-''+''++-''+''⋅''+=ρηηρρ5222425532233)5814185(cos 120)1(cos 6cos l t t t B N lt B N l B N y ''-++-''+''+-''+''⋅''=ηηρηρρ (8-42) 8.3.2高斯投影坐标反算公式x,y ⇒B,l投影方程:),(),(21y x l y x B ϕϕ== (8-43)满足以下三个条件:①x 坐标轴投影后为中央子午线是投影的对称轴;② x 坐标轴投影后长度不变;③投影具有正形性质,即正形投影条件。
高斯投影坐标反算公式推导要复杂些。
①由x 求底点纬度(垂足纬度)f B ,对应的有底点处的等量纬度f q ,求x,y 与l q qf ,-的关系式,仿照(8-10)式有,),(),(y x l ly x q q ==由于y 和椭球半径相比较小(1/16.37),可将l q ,展开为y 的幂级数;又由于是对称投影,q 必是y 的偶函数,l 必是y 的奇函数。
++=+++=33144220y n y n l y n y n n q (8-45),,,210n n n 是待定系数,它们都是x 的函数.由第三条件知:y l x q ∂∂=∂∂,yqx l ∂∂-=∂∂, (8-21) (8-45)式分别对x 和y 求偏导数并代入上式⎪⎭⎫ ⎝⎛+++-=++++++=+++ 5533156342452314422064253y dx dn y dx dn y dx dn y n y n y n y n y n n y dxdn y dx dn dx dn 上式相等必要充分条件,是同次幂y 前的系数相等,,41,31,21,34231201dxdn n dx dn n dx dn n dx dn n -==-==第二条件,当y=0时,点在中央子午线上,即x=X ,对应的点称为底点,其纬度为底点纬度f B ,也就是x=X 时的子午线弧长所对应的纬度,设所对应的等量纬度为f q 。
也就是在底点展开为y 的幂级数。
由(8-45)1式f q n =0依次求得其它各系数ff f f f f f r B N M B N M dX dB dB dq dX dq dX dq dX dn n 1cos 11cos 01==⎪⎭⎫ ⎝⎛=⎪⎭⎫ ⎝⎛=⎪⎭⎫ ⎝⎛===(8-51)ff f f f B N t dX dB dB dn dX dn n cos 221212112-=⎪⎭⎫⎝⎛-=⎪⎭⎫ ⎝⎛-= (8-51)1………… 将6420,,,n n n n 代入(8-45)1式得()()62224264422422484612018061cos 720465cos 24cos 2yt t tB N t y tB N t y B N t q q ff f ff ff fff f ffffff f ηηηη++++--+++-=-(8-55)1()f fff f f ffffB N y t t B N y t q q 266422224422cos 24)465(cos 4ηη-++-=-()f ff fB N y t q q 36633cos 8-=- (8-55)将531,,n n n 代入(8-45)2式得(8-56)2式。
(最后表达式) ②求f B B -与y x ,的关系。
由(8-7)式dB BN Mdq cos =知: )(),(f f q f B q f B == (8-47))()(dq q f q q q f B f f f +=-+= (8-48)按台劳级数在f q 展开+⎪⎪⎭⎫ ⎝⎛+⎪⎪⎭⎫ ⎝⎛+⎪⎪⎭⎫ ⎝⎛+=3332226121)(dq dq B d dq dq B d dq dq dB q f B f f ff (8-49) ()()() +-⎪⎪⎭⎫ ⎝⎛+-⎪⎪⎭⎫ ⎝⎛+-⎪⎪⎭⎫ ⎝⎛=-3332226121f ff f f f f q q dq B d q q dq B d q q dq dB B B(8-50)由(8-7)式可求出各阶导数:f f fB V dq dB cos 2=⎪⎪⎭⎫ ⎝⎛ (8-53) )341(cos sin 4222f f f f f B B dq B d ηη++-=⎪⎪⎭⎫ ⎝⎛ (8-54)1 )2771351(cos 2442222333f f f f f f f f ft t t B dq B d ηηηη-+-+--=⎪⎪⎭⎫ ⎝⎛(8-54)2 …………………将式(8-55)1,(8-55),(8-53),(8-54)代入(8-50)式并按y 幂集合得高斯投影坐标反算公式(8-56)1,()()()()22242552233642542222328624285cos 12021cos 6cos 459061720935242f f f f f ff f f ff f f ff ff fff f f ff f ff f f t t t B N y t B N y B N y l y t t y NM t y t tNM t y N M t B B ηηηηη+++++++-=++--+++-=(8-56)归纳由),(y x p 求),(l B P 的基本思想:由点),(y x p 得到底点)0,(x f ,将底点f 作为过渡,也就是说将坐标原点o 移到f 点,先求),(),(21y x Q l y x Q q q f ==-关系式,再将),(1y x Q q q f =-关系式代入)(3f f q q Q B B -=-关系式得),(4y x Q B B f =-关系式,最后将坐标原点移回到o 点,从而求得),(l B P 点。
8.3.3高斯投影坐标正反算公式的几何解释①当B=0时x=X=0,y 则随l 的变化而变化,这就是说,赤道投影为一直线且为y 轴。
当l=0时,则y=0,x=X,这就是说,中央子午线投影亦为直线,且为x 轴,其长度与中央子午线长度相等。
两轴的交点为坐标原点。
②当l=常数时(经线),随着B 值增加,x 值增大,y 值减小,这就告诉我们,经线是凹向中央子午线的曲线,且收敛于两极。
又因B B cos )cos(=-,即当用-B 代替B 时,y 值不变,而x 值数值相等符号相反,这就说明赤道是投影的对称轴。
③当B=常数时(纬线),随着的l 增加,x 值和y 值都增大,这就是说,纬线是凸向赤道的曲线。
又当用-l 代替l 时,x 值不变,而y 值数值相等符号相反,这就说明,中央子午线是投影对称轴。
由于满足正形投影条件,所以经线和纬线的投影是互相垂直的。
④距中央子午线愈远的子午线,投影后弯曲愈厉害,表明长度变形愈大。