JavaGis

          JavaGis大草原

           

          北京54坐標(biāo)和經(jīng)緯度坐標(biāo)轉(zhuǎn)換算法(C++)

          //坐標(biāo)正算
          lbxy(double l, double b, double *x, double *y, int l0)
          {
          ?double sa,sb,sep,sn,sy2,st,sm,sx,hb;
          ?double xx,yy,hd,sd;

          ?//判斷值的范圍
          ?if (l > 360 || l < 0 || b > 360 || b < 0)
          ?{
          ??*x = l;
          ??*y = b;
          ??return;
          ?}

          ?l? = l-l0;
          ?sa = 6378245;??
          ?sb = 6356863.019;
          ?sep= 0.006738525415;
          ?hd = b*PI;
          ?hb = hd/180.0;
          ?st = tan(hb);
          ??????
          ?sn=pow(sa,(double)2)/sqrt(pow(sa,(double)2)*pow(cos(hb),(double)2)
          ??+pow(sb,(double)2)*pow(sin(hb),(double)2));

          ?sy2=sep*pow(cos(hb),(double)2);
          ?sd = cos(hb)*l*PI;
          ?sm = sd/180.0;
          ?sx = 111134.861*b-(32005.78*sin(hb)+133.924*pow(sin(hb),(double)3)+0.697*pow(sin(hb),(double)5))*cos(hb);
          ?xx = sx+sn*st*(0.5*pow(sm,(double)2)+1.0/24.0*(5.0-pow(st,(double)2)+9.0*sy2)*pow(sm,(double)4));
          ?yy = sn*(sm+1.0/6.0*(1.0-pow(st,(double)2)+sy2)*pow(sm,(double)3)+1.0/120.0*(5.0-18.0*pow(st,(double)2)+pow(st,(double)4))*pow(sm,(double)5));
          ?*x = xx;
          ?*y = yy+500000;
          }

          //坐標(biāo)反算
          xylb(double l0, double x, double y, double *l, double *b)
          {
          ?double bf,vf,nf,ynf,tf,yf2,hbf;
          ?double sa,sb,se2,sep2,mf;
          ?double w1,w2,w,w3,w4;
          ?double pi = 3.1415926;

          ?x = x/1000000.0;
          ?y = y - 500000.0;
          ?
          ?bf = 9.04353692458*x-0.00001007623*pow(x,2.0)-0.00074438304*pow(x,3.0)-0.00000463064*pow(x,4.0)+0.00000505846*pow(x,5.0)-0.00000016754*pow(x,6.0);
          ?hbf = bf * pi/ 180.0;
          ?sa = 6378245.0;
          ?sb = 6356863.019;
          ?se2 = 0.006693421623;
          ?sep2 = 0.006738525415;

          ?w1 = sin(hbf);
          ?w2 = 1.0 - se2 * pow(w1,(double)2);
          ?w = sqrt(w2);
          ?mf = sa*(1.0-se2)/pow(w,(double)3);
          ?w3 = cos(hbf);

          ?w4 = pow(sa,(double)2)*pow(w3,(double)2) + pow(sb,(double)2)*pow(w1,(double)2);
          ?nf = pow(sa,(double)2) / sqrt(w4);

          ?ynf = y/nf;
          ?vf = nf/mf;
          ?tf = tan(hbf);
          ?
          ?yf2 = sep2 * pow(w3, (double)2);

          ?*b = bf - 1.0/2.0 * vf * tf * (pow(ynf,(double)2)-1.0/12.0*(5.0+3.0*pow(tf,(double)2)+yf2-9.0*yf2*pow(tf,(double)2))*pow(ynf,(double)4))*180.0/pi;
          ?*l = 1.0/w3*ynf*(1.0-1.0/6.0*(1.0+2.0*pow(tf,(double)2)+yf2)*pow(ynf,(double)2)+1.0/120.0*(5.0+28.0*pow(tf,(double)2)+24.0*pow(tf,(double)2)+6.0*yf2+8.0*yf2*pow(tf,(double)2))*pow(ynf,(double)4))*180.0/pi;
          ?*l = l0 + *l;
          }

          posted on 2006-09-02 15:17 zdygis 閱讀(7574) 評論(5)  編輯  收藏 所屬分類: ArcGis

          評論

          # re: 北京54坐標(biāo)和經(jīng)緯度坐標(biāo)轉(zhuǎn)換算法(C++) 2006-10-26 15:26 gdccc

          l0應(yīng)該是多少?  回復(fù)  更多評論   

          # re: 北京54坐標(biāo)和經(jīng)緯度坐標(biāo)轉(zhuǎn)換算法(C++) 2006-12-21 13:04 lm[匿名]

          中央經(jīng)線 111 或者117 或者105  回復(fù)  更多評論   

          # re: 北京54坐標(biāo)和經(jīng)緯度坐標(biāo)轉(zhuǎn)換算法(C++) 2007-04-03 09:49 張玉春

          54轉(zhuǎn)換84的方法  回復(fù)  更多評論   

          # re: 北京54坐標(biāo)和經(jīng)緯度坐標(biāo)轉(zhuǎn)換算法(C++) 2007-04-03 09:50 張玉春

          54轉(zhuǎn)換84坐標(biāo)  回復(fù)  更多評論   

          # re: 北京54坐標(biāo)和經(jīng)緯度坐標(biāo)轉(zhuǎn)換算法(C++) 2007-04-03 09:50 張玉春

          54轉(zhuǎn)換84  回復(fù)  更多評論   

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Gis世界

          Java天空

          Oracle海洋

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丰顺县| 来安县| 利津县| 蓬溪县| 米易县| 吉林市| 涟源市| 万山特区| 四平市| 屯昌县| 永昌县| 正阳县| 奉节县| 彭阳县| 沙河市| 湘西| 搜索| 澄城县| 威信县| 洛阳市| 太谷县| 巴里| 温宿县| 广宁县| 松原市| 健康| 扶风县| 柘荣县| 疏勒县| 福鼎市| 白水县| 阿拉善左旗| 蓬安县| 静乐县| 开封县| 云安县| 贵南县| 霸州市| 喀喇沁旗| 诸城市| 蓬溪县|