精华内容
下载资源
问答
  • wgs84转GCJ02坐标系(火星坐标系),GCJ02坐标系(火星坐标系)转wgs84坐标系,Python语言
  • WGS84坐标系WGS84是地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系;通过GPS可以直接获取WGS84下的坐标(B,L,H),B为纬度,L为经度,H为大地高即到WGS84椭 球面的高度; WKID: 4326 ...

     

    WGS84坐标系:

    WGS84是地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系;通过GPS可以直接获取WGS84下的坐标(B,L,H),B为纬度,L为经度,H为大地高即到WGS84椭 球面的高度;

    WKID:

    4326GCS_WGS_1984


    WGS84 Web  Mercator坐标系:

    Web Mercator 是一个投影坐标系统,其基准面是 WGS 1984 。世界大地坐标系是美国国防部制图局(Defence Mapping Agency, DMA)为统一世界大地坐标系统,实现全球测量标准的一致性,定义用于制图、大地、导航的坐标基准。它包括标准地球坐标框架、用于处理原始观测数据的标准椭球参考面(即基准和参考椭球)和定义标准海平面的重力等势面(大地水准面)。

    Web Mercator 坐标系使用的投影方法不是严格意义的墨卡托投影,而是一个被 EPSG(European Petroleum Survey Group)称为伪墨卡托的投影方法,这个伪墨卡托投影方法的大名是 Popular Visualization Pseudo Mercator,PVPM。

    WKID:

    3857或者102100  WGS_1984_Web_Mercator_Auxiliary_Sphere

    一、椭球参数:

    二、定义:

    定义坐标系文件一般为*.prj,例如WGS 1984.prj。EPSG:http://epsg.io/4326(对于坐标系详细定义)

    python:

    from osgeo import gdal,osr
    '''方法一'''
    sr = osr.SpatialReference()
    sr.SetWellKnownGeogCS('WGS84')
    print(sr.ExportToWkt())
    print('-'*200)
    '''方法二'''
    sr1 = osr.SpatialReference()
    sr1.SetWellKnownGeogCS("EPSG:4326")
    print(sr1.ExportToWkt())
    print('-'*200)
    

      

     

    三、两种坐标系之间的相互转换:

    from osgeo import osr
    import math
    def lonLat2WebMercator(lon,Lat):
        x = lon *20037508.34/180;
        y = math.log(math.tan((90+Lat)*math.pi/360))/(math.pi/180);
        y = y *20037508.34/180;
        return x,y
    
    def WebMercator2lonLat(x,y):
        lon = x/20037508.34*180;
        lat = y/20037508.34*180;
        lat= 180/math.pi*(2*math.atan(math.exp(lat*math.pi/180))-math.pi/2);
        return lon,lat
    if __name__ == '__main__':
        lon= 116.366
        lat=39.8673
        print('lonLat坐标:'+str(lon)+','+str(lat))
        print('WebMercator坐标:'+str(lonLat2WebMercator(lon,lat)[0])+","+str(lonLat2WebMercator(lon,lat)[1]))
        x = 12953803.8657
        y = 4846677.3736
        print('WebMercator坐标:' + str(x) + ',' + str(y))
        print('lonLat坐标:' + str(WebMercator2lonLat(x, y)[0]) + "," + str(WebMercator2lonLat(x, y)[1]))

    参考:

    1.https://developers.arcgis.com/javascript/3/jshelp/pcs.html

    2.https://developers.arcgis.com/javascript/3/jshelp/gcs.html

    展开全文
  • WGS84坐标系与任意坐标系坐标转换的一些算法
  • 运用r语言,对获得的高德坐标系下的poi点坐标进行转换,使其成为WGS84坐标系下坐标,便于使用ArcGIS分析
  • 用于百度坐标系、谷歌高德坐标系WGS84坐标系之间的相互转换
  • 2天津市_行政边界.rar 乡级别 .shp格式 WGS84坐标系
  • 在wgs84 坐标系转到J2000 坐标系 主要 涉及到坐标的相互转换。一般给定的WGS坐标为 给定时刻的 t ,BLH。 具体转换茹下 step1 WGS 84 转换到协议地球坐标系。 function XYZ = wgs842xyz(BLH) %UNTITLED2 大地坐标...

    在wgs84 坐标系转到J2000 坐标系 主要 涉及到坐标的相互转换。一般给定的WGS坐标为 给定时刻的 t ,BLH。 具体转换如下

    step1  WGS 84 转换到协议地球坐标系。 

    function XYZ_m = wgs842ECEF(BLH_deg_m)
    
    %大地经纬度高程BLH与地固坐标系的转换 BLH-->XG
    
    %ECEF, Earth Centered Earth Fixed;地固坐标系 参考平面:平赤道面,即过地心,并且与地心与CIO点连线垂直的平面。
    % x轴为参考平面与格林尼治平面交线,z轴为地心指向CIO点。
    %参数
    %B L H分别为大地纬度、大地经度和大地高程 输入参数为N*3矩阵
    
    % XYZ 为地固坐标系的 x y z,输出参数为N*3矩阵
    
    %ae = 6378137; %2000坐标系场半轴
    %ee = 0.0818191910428;  %第一偏心率
    ae  = 6378137; %wgs84坐标系场半轴
    ee = 0.00669437999013 ;  %第一偏心率
    B_deg=BLH_deg_m(:,1);L_deg=BLH_deg_m(:,2);H_m=BLH_deg_m(:,3);
    
    N_m=ae*sqrt(1-ee^2*sind(B_deg).^2);
    XYZ_m(:,1)=(N_m+H_m).*cosd(B_deg).*cosd(L_deg);
    XYZ_m(:,2)=(N_m+H_m).*cosd(B_deg).*sind(L_deg);
    XYZ_m(:,3)=(N_m*(1-ee^2)+H_m).*sind(B_deg);
    
    end

    step 2  协议地球坐标系 转换为瞬时地球坐标系 

    这主要涉及查询 给定时刻的  xp,yp ,  通过查询IERS公报获得,如果 对计算要求不高,可以忽略 此类型 的 坐标 转换。

    earthFixedXYZ=ordinateSingleRotate('x',yp)*ordinateSingleRotate('y',xp)*earthFixedXYZ;

    其中  ordinateSingleRotate 为 坐标转换 函数 ,该函数第一个参数为给定的坐标轴,第二个参数为 旋转的角度 ,第三个参数为 旋转的角度的度量单位。 后续要多次调用该函数。

    function [R] = ordinateSingleRotate( axis,angle_deg,angleType)
    %坐标轴旋转
    %   axis 表示围绕旋转的坐标轴 
    % '1'或者'x' 表示围绕 x轴逆时针旋转
    % '2'或者'y' 表示围绕 y轴逆时针旋转
    % '3'或者'z' 表示围绕 z轴逆时针旋转
    % angle_deg 表示旋转的角度
    % angleType 表示角度类型,可以为 'rad'和’deg‘,默认deg
    
    if nargin()<3
        angleType='deg';
    end
    switch lower(angleType)
        case 'deg'
        case 'rad'
           angle_deg=angle_deg*180/pi; 
         otherwise
            error(message('ordinateRotate:unknownRotation:angleType=', angleType));  
    end
    switch axis
        case {'x','X',1,'1'}
            R =[1         0             0  ;...
                0  cosd(angle_deg) sind(angle_deg);...
                0  -sind(angle_deg) cosd(angle_deg) ];
        case {'y','Y',2,'2'}
             R =[cosd(angle_deg)   0  -sind(angle_deg);...
                      0            1     0;...
                sind(angle_deg)   0   cosd(angle_deg) ];
         case {'z','Z',3,'3'}
             R =[cosd(angle_deg)  sind(angle_deg)  0  ;...
                -sind(angle_deg)   cosd(angle_deg)  0;...
                       0              0             1 ];     
        otherwise
            error(message('ordinateRotate:unknownRotation:axis=',axis));
    end
    end

    step 3  瞬时地球坐标系 转换为 瞬时真天球坐标系 

    xyz= ordinateSingleRotate('z',-gst_deg)*earthFixedXYZ;

    该步骤主要涉及到格林尼治恒星时角的计算,关于格林尼治恒星时角 计算方法 很多,下面给出 一个较为精确的计算方法。

    function [gst_deg,JDTDB ] = utc2gst(UTC,dUT1,dAT)
    
    %将utc时间转换为格林尼治恒星时
    %参数
    %utc 格式为y m d 其中d的数值为小数,将h m s 按(sec/3600+min/60+h)/24转换成小数,并累加到day 上
    %dUT1 为ut1-utc 的差,数值不超过正负1秒,查iers可获得数值
    %UNTITLED 计算当地恒星时,返回值以时秒为单位
    %  UTC世界协调时  协调地球时与原子时的时间差,采用闰秒的办法进行协调
    %dAT 润秒数
    %TAI国际原子时间 该时间最准  TAI=UTC+dAT;  %国际原子时间
    %TT 地球时  TT = TAI+32.184 至2014年的时候;
    %TDT 地球动力学时间
    % ET 历书时间
    %地球时=地球动力学时间=历书时间
    J2000=2451545;
    if nargin()<2
        dUT1=0;
    end
    if nargin()<3
        dAT=37.0;
    end
    
    JDutc=YMD2JD(UTC(1),UTC(2),UTC(3));
    JDUT1  = JDutc+dUT1/86400 ;  %UT1 为世界时,世界时由于自转的不均匀,因此与UTC时间有dUT1的差别,dUT1在各国卫星授时信号中会以0.1秒的精度给出IERS经过处理后,会以1e-5的精度给出。
    dT=32.184+dAT-dUT1;
    JDTT=JDUT1+dT/86400;
    
    
    % JDTT= YMD2JD(UTC(1),UTC(2),UTC(3))+dUT1/86400;
    %首先计算TDB,TDB是质心动力学时,是太阳月球行星等天体星历表中的时间尺度
    T=(JDTT-J2000)/36525;
    temp= 0.001657*sin(628.3076*T+6.2401) ...
        +0.000022*sin(575.3385*T+4.2970) ...
        +0.000014*sin(1256.6152*T+6.1969) ...
        +0.000005*sin(606.9777*T+4.0212)...
        +0.000005*sin(52.9691*T+0.4444)...
        +0.000002*sin(21.3299*T+5.5431)...
        +0.00001*T*sin(628.3076*T+4.2490);
    JDTDB=JDTT+temp/86400;
    
    %下面计算UT2,UT2是在UT1的基础上修正地球周期性季节变化后得到的世界时间
    %       %根据UT1计算Tb,Tb为以贝塞尔年为单位,从历元B2000.0起算ff
    %       B2000=2451544.033;
    %       Tb=(YMD2JD(UT1(1),UT1(2),UT1(3))-B2000)/365.2422;
    %       dTs=0.022*sin(2*pi*Tb)-0.012*cos(2*pi*Tb)-0.006*sin(4*pi*Tb)+0.007*cos(4*pi*Tb);
    %       dTs=dTs/86400;
    %       UT2=UT1+[0 0 dTs];
    
    %下面计算格林尼治平恒星时GMST; 单位为度
    T=(JDTDB-J2000)/36525;
    T2=T*T;T3=T2*T;T4=T3*T;T5=T4*T;
    Du=JDUT1-J2000;
    thita = 0.7790572732640+1.00273781191135448*Du; %自J2000起地球转过的圈数;
    GMST_deg=(-0.0000000368*T5-0.000029956*T4-0.00000044*T3+1.3915817*T2+4612.156534*T+0.014506) /3600+(thita-floor(thita))*360  ;
    
    [epthilongA_deg,dertaPthi_deg] = nutationInLongitudeCaculate(JDTDB);
    
    %计算赤经章动引起的误差eclipticObliquitygama,单位为角秒
    %计算月球平近点角   太阳平近点角 月球纬度辐角 日月平角距(月球平黄经-太阳平黄经) 月球升交点平黄经 单位为角秒
    F_deg =(0.00000417*T4-0.001037*T3-12.7512*T2+1739527262.8478*T+335779.526232)/3600;
    F_deg=mod(F_deg,360);
    D_deg = (-0.00003169*T4+0.006593*T3-6.3706*T2+1602961601.2090*T+1072260.70369)/3600 ;
    D_deg=mod(D_deg,360);
    Omiga_deg =(-0.00005939*T4+0.007702*T3+7.4722*T2-6962890.5431*T+450160.398036 )/3600   ;
    Omiga_deg=mod(Omiga_deg,360);
    
    epthilongGama_deg=(dertaPthi_deg*cosd(epthilongA_deg)...
        +0.00264096*sind( Omiga_deg )...
        +0.00006352*sind(2*Omiga_deg)...
        +0.00001175*sind(2*F_deg-2*D_deg+3*Omiga_deg)...
        +0.00001121*sind(2*F_deg-2*D_deg+Omiga_deg)...
        -0.00000455*sind(2*F_deg-2*D_deg+2*Omiga_deg)...
        +0.00000202*sind(2*F_deg+3*Omiga_deg)...
        +0.00000198*sind(2*F_deg+Omiga_deg)...
        -0.00000172*sind(3*Omiga_deg)...
        -0.00000087*T*sind(Omiga_deg))/3600;
    gst_deg=epthilongGama_deg+GMST_deg;
    end
    

    该函数要调用nutationInLongitudeCaculate函数来计算章动角、黄赤交角等 ,该函数在 步骤4中给出;

    同时 YMD2JD函数为 年月日转换为儒略日,具体说明 见https://blog.csdn.net/qq_24172609/article/details/112244135?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162115452716780357279082%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162115452716780357279082&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-3-112244135.first_rank_v2_pc_rank_v29&utm_term=%E5%85%AC%E5%85%83%E7%BA%AA%E5%B9%B4%E6%B3%95&spm=1018.2226.3001.4187

    代码如下

    function [jd] =YMD2JD(y,m,d)  %函数公历年月日转儒略日
        if size(y,2)==3  %如果输入为年月日数组
            d=y(3);
            m=y(2);
            y=y(1);        
        end 
    if m<3
        m=m+12;
        y=y-1;
    end
    B=0;
    if y>1582||(y==1582&&m>10)||(y==1582&&m==10&&d>=15)
        B=2-floor(y/100)+floor(y/400);
    end
    jd=floor(365.25*(y+4712))+floor(30.6*(m+1))+d-63.5+B;
     end

    step 4 瞬时真天球坐标系 转到瞬时平天球 坐标系

    xyz=ordinateSingleRotate('x',-epthilongA_deg)*ordinateSingleRotate('z',dertaPthi_deg)*ordinateSingleRotate('x',dertaEpthilong_deg+epthilongA_deg)*xyz;
    其中  epthilongA_deg 为平黄赤交角, dertaPthi_deg为黄经章动, dertaEpthilong_deg为交角章动, epthilong_deg为瞬时黄赤交角

    这些角度的计算方法为

    function [epthilongA_deg,dertaPthi_deg,dertaEpthilong_deg,epthilong_deg] = nutationInLongitudeCaculate(JD,accuracy)
    %计算平黄赤交角,黄经章动、和交角章动、瞬时黄赤交角。
    %   参数
    % epthilongA_deg平黄赤交角
    % dertaPthi_deg黄经章动
    % dertaEpthilong_deg和交角章动
    % epthilong_deg瞬时黄赤交角
    %JD 儒略日
    % accuracy 表示计算的精度要求 数值为’normal‘ 和’high‘ 或者用'N'和’H'表示一般精度和高精度 。默认为高精度计算
    if nargin()<2
        accuracy='h';
    end
    T=(JD-2451545)/36525;
    T2=T*T;
    T3=T2*T;
    T4=T3*T;
    T5=T4*T;
    %计算月球平近点角lunarMeanAnomaly_deg (l_deg) 太阳平近点角SolarMeanAnomaly_deg(solarl_deg)
    %月球纬度辐角lunarLatitudeAngle_deg(F_deg)  日月平角距diffLunarSolarElestialLongitude_deg(D_deg月球平黄经-太阳平黄经)
    %月球升交点平黄经SolarAscendingNodeElestialLongitude_deg ( Omiga_deg)
    l_deg = (-0.00024470*T4+0.051635*T3+31.8792*T2+1717915923.2178*T+485868.249036)/3600;
    l_deg=mod(l_deg,360);
    solarl_deg =(-0.00001149*T4+0.000136*T3-0.5532*T2+129596581.0481*T+1287104.79305)/3600;
    solarl_deg=mod(solarl_deg,360);
    F_deg =(0.00000417*T4-0.001037*T3-12.7512*T2+1739527262.8478*T+335779.526232)/3600;
    F_deg=mod(F_deg,360);
    D_deg = (-0.00003169*T4+0.006593*T3-6.3706*T2+1602961601.2090*T+1072260.70369)/3600;
    D_deg=mod(D_deg,360);
    Omiga_deg =(-0.00005939*T4+0.007702*T3+7.4722*T2-6962890.5431*T+450160.398036 )/3600;
    Omiga_deg=mod(Omiga_deg,360);
    basicAngle_deg=[l_deg solarl_deg F_deg D_deg Omiga_deg];
    
    epthilongA_deg=(-0.0000000434*T5-0.000000576*T4+0.00200340*T3-0.0001831*T2-46.836769*T+84381.406)/3600;
    epthilongA_deg=epthilongA_deg-floor(epthilongA_deg/360)*360;
    switch lower(accuracy)
        case {'h','high'}    %IAU2000模型有77项
            elestialLonNutation= elestialLonNutationCaculate();
            dertaPthi_deg =-3.75e-08;
            dertaEpthilong_deg =0.388e-3/3600;
             for i = 1:77  %计算日月周期项
                 sumAngle_deg=0;
                 for j=1:5
                     sumAngle_deg=sumAngle_deg+elestialLonNutation(i,j)*basicAngle_deg(j);
                 end
                 sumAngle_deg=sumAngle_deg-floor(sumAngle_deg/360)*360;
                 
                 dertaPthi_deg=dertaPthi_deg+((elestialLonNutation(i,6)+elestialLonNutation(i,7)*T)...
                 *sind(sumAngle_deg)+elestialLonNutation(i,8)*cosd(sumAngle_deg))*1e-7/3600;
                 dertaEpthilong_deg=dertaEpthilong_deg+((elestialLonNutation(i,9)+elestialLonNutation(i,10)*T)...
                 *cosd(sumAngle_deg)+elestialLonNutation(i,11)*sind(sumAngle_deg))*1e-7/3600;
             end
        case{'n','l','normal','low'}
         
                    Omiga_deg=basicAngle_deg(5);
            F_deg=basicAngle_deg(3);
            D_deg=basicAngle_deg(4);
            solarl_deg=basicAngle_deg(2);
            dertaPthi_deg=((-17.1996+0.01742*T)*sind(Omiga_deg)...
                           +(0.2062+0.00002*T)*sind(2*Omiga_deg)...
                           -(1.3187+0.00016*T)*sind(2*F_deg-2*D_deg+2*Omiga_deg)...
                           +(0.1426-0.00034*T)*sind(solarl_deg)...
                           -(0.2274+0.00002*T)*sind(2*F_deg+2*Omiga_deg))/3600;
            dertaEpthilong_deg=((9.2025+0.00089*T)*cosd(Omiga_deg)...
                              -(0.0895-0.00005*T)*cosd(2*Omiga_deg)...
                              +(0.5736-0.00031*T)*cosd(2*F_deg-2*D_deg+2*Omiga_deg)...
                              +(0.0054-0.00001*T)*cosd(solarl_deg)...
                              +(0.0977-0.00005*T)*cosd(2*F_deg+2*Omiga_deg) )/3600;
        otherwise
            error(message(':unknownaccuracy:accuracy=',accuracy));
    end
    epthilong_deg=epthilongA_deg+dertaEpthilong_deg;
    
    
    end
    

    其中 elestialLonNutationCaculate()  函数 返回一个 77行11列 的 二维数组,函数 如下

    function elestialLonNutation=elestialLonNutationCaculate()                              
    
    elestialLonNutation = ...
      [0 0 0 0 1 -1.72064161E+8 -174666 33386 9.2052331E+7 9086 15377;
       0 0 2 -2 2 -1.3170906E+7 -1675 -13696 5.730336E+6 -3015 -4587;
       0 0 2 0 2 -2.276413E+6 -234 2796 978459 -485 1374;
       0 0 0 0 2 2.074554E+6 207 -698 -897492 470 -291;
       0 1 0 0 0 1.475877E+6 -3633 11817 73871 -184 -1924;
       0 1 2 -2 2 -516821 1226 -524 224386 -677 -174;
       1 0 0 0 0 711159 73 -872 -6750 0 358;
       0 0 2 0 1 -387298 -367 380 200728 18 318;
       1 0 2 0 2 -301461 -36 816 129025 -63 367;
       0 -1 2 -2 2 215829 -494 111 -95929 299 132;
       0 0 2 -2 1 128227 137 181 -68982 -9 39;
       -1 0 2 0 2 123457 11 19 -53311 32 -4;
       -1 0 0 2 0 156994 10 -168 -1235 0 82;
       1 0 0 0 1 63110 63 27 -33228 0 -9;
       -1 0 0 0 1 -57976 -63 -189 31429 0 -75;
       -1 0 2 2 2 -59641 -11 149 25543 -11 66;
       1 0 2 0 1 -51613 -42 129 26366 0 78;
       -2 0 2 0 1 45893 50 31 -24236 -10 20;
       0 0 0 2 0 63384 11 -150 -1220 0 29;
       0 0 2 2 2 -38571 -1 158 16452 -11 68;
       0 -2 2 -2 2 32481 0 0 -13870 0 0;
       -2 0 0 2 0 -47722 0 -18 477 0 -25;
       2 0 2 0 2 -31046 -1 131 13238 -11 59;
       1 0 2 -2 2 28593 0 -1 -12338 10 -3;
       -1 0 2 0 1 20441 21 10 -10758 0 -3;
       2 0 0 0 0 29243 0 -74 -609 0 13;
       0 0 2 0 0 25887 0 -66 -550 0 11;
       0 1 0 0 1 -14053 -25 79 8551 -2 -45;
       -1 0 0 2 1 15164 10 11 -8001 0 -1;
       0 2 2 -2 2 -15794 72 -16 6850 -42 -5;
       0 0 -2 2 0 21783 0 13 -167 0 13;
       1 0 0 -2 1 -12873 -10 -37 6953 0 -14;
       0 -1 0 0 1 -12654 11 63 6415 0 26;
       -1 0 2 2 1 -10204 0 25 5222 0 15;
       0 2 0 0 0 16707 -85 -10 168 -1 10;
       1 0 2 2 2 -7691 0 44 3268 0 19;
       -2 0 2 0 0 -11024 0 -14 104 0 2;
       0 1 2 0 2 7566 -21 -11 -3250 0 -5;
       0 0 2 2 1 -6637 -11 25 3353 0 14;
       0 -1 2 0 2 -7141 21 8 3070 0 4;
       0 0 0 2 1 -6302 -11 2 3272 0 4;
       1 0 2 -2 1 5800 10 2 -3045 0 -1;
       2 0 2 -2 2 6443 0 -7 -2768 0 -4;
       -2 0 0 2 1 -5774 -11 -15 3041 0 -5;
       2 0 2 0 1 -5350 0 21 2695 0 12;
       0 -1 2 -2 1 -4752 -11 -3 2719 0 -3;
       0 0 0 -2 1 -4940 -11 -21 2720 0 -9;
       -1 -1 0 2 0 7350 0 -8 -51 0 4;
       2 0 0 -2 1 4065 0 6 -2206 0 1;
       1 0 0 2 0 6579 0 -24 -199 0 2;
       0 1 2 -2 1 3579 0 5 -1900 0 1;
       1 -1 0 0 0 4725 0 -6 -41 0 3;
       -2 0 2 0 2 -3075 0 -2 1313 0 -1;
       3 0 2 0 2 -2904 0 15 1233 0 7;
       0 -1 0 2 0 4348 0 -10 -81 0 2;
       1 -1 2 0 2 -2878 0 8 1232 0 4;
       0 0 0 1 0 -4230 0 5 -20 0 -2;
       -1 -1 2 2 2 -2819 0 7 1207 0 3;
       -1 0 2 0 0 -4056 0 5 40 0 -2;
       0 -1 2 2 2 -2647 0 11 1129 0 5;
       -2 0 0 0 1 -2294 0 -10 1266 0 -4;
       1 1 2 0 2 2481 0 -7 -1062 0 -3;
       2 0 0 0 1 2179 0 -2 -1129 0 -2;
       -1 1 0 1 0 3276 0 1 -9 0 0;
       1 1 0 0 0 -3389 0 5 35 0 -2;
       1 0 2 0 0 3339 0 -13 -107 0 1;
       -1 0 2 -2 1 -1987 0 -6 1073 0 -2;
       1 0 0 0 2 -1981 0 0 854 0 0;
       -1 0 0 1 0 4026 0 -353 -553 0 -139;
       0 0 2 1 2 1660 0 -5 -710 0 -2;
       -1 0 2 4 2 -1521 0 9 647 0 4;
       -1 1 0 1 1 1314 0 0 -700 0 0;
       0 -2 2 -2 1 -1283 0 0 672 0 0;
       1 0 2 2 1 -1331 0 8 663 0 4;
       -2 0 2 2 2 1383 0 -2 -594 0 -2;
       -1 0 0 0 2 1405 0 4 -610 0 2;
       1 1 2 -2 2 1290 0 0 -556 0 0];
    end
    

    step5  瞬时平天球坐标系转换为协议天球坐标系(J2000)

    xyz=ordinateSingleRotate('Z',zetaA)*ordinateSingleRotate('y',-thitaA)*ordinateSingleRotate('z',zA)*xyz;

    该步主要涉及到 岁差角的计算。下面给出计算方法。

    function [zetaA,thitaA,zA] = precessionAngle(JDTDB)
    %zA、thitaA、zetaA为赤道岁差角,计算赤道岁差角
    T=(JDTDB-2451545)/36525;
    T2=T*T;
    T3=T2*T;
    %
    % zetaA=(2306.218*T+0.30188*T2+0.017998*T3)/3600;
    % zA=(2306.218*T+1.09468*T2+0.018203)/3600;
    % thitaA=(2004.3109*T-0.42665*T2-0.041833*T3)/3600;
    T4=T3*T;
    T5=T4*T;
    % 
    zetaA=(-0.0000003173*T5-0.000005971*T4+0.01801828*T3+0.2988499*T2+2306.083227*T+2.650545)/3600;
    thitaA=(-0.0000001274*T5-0.000007089*T4-0.04182264*T3-0.4294934*T2+2004.191903*T)/3600;
    zA=(-0.0000002904*T5-0.000028596*T4+0.01826837*T3+1.0927348*T2+2306.077181*T-2.650545)/3600;
    
    end
    

    函数中 JDTDB 为给定时刻 的地球动力学时对应的儒略日,其计算方法由步骤三中的函数给出。

    展开全文
  • 本工具为excel进行开发,针对北京54与wgs84坐标系的相互转换功能。精准
  • WGS84坐标系

    万次阅读 2019-03-02 18:49:32
    1.1 关于WGS1984投影坐标系 UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的。虽然我们仍然将其看作与“高斯-克吕格”相似的坐标系统,但实际上UTM采用了网格的分带(或分块)。除在美国...

    WGS84与WGS84 Web Mercator

    1. WGS84与WGS84 Web Mercator

    1.1 关于WGS1984投影坐标系

    UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的。虽然我们仍然将其看作与“高斯-克吕格”相似的坐标系统,但实际上UTM采用了网格的分带(或分块)。除在美国本土采用Clarke 1866椭球体以外,UTM在世界其他地方都采用WGS84。
    UTM是由美国制定,因此起始分带并不在本初子午线,而是在180度,因而所有美国本土都处于0-30带内。UTM投影采用6度分带,从东经180度(或西经180度)开始,自西向东算起,因此1带的中央经线为-177(-180

    -(-6)),而0度经线为30带和31带的分界,这两带的分界分别是-3和3度。纬度采用8度分带,从80S到84N共20个纬度带(X带多4度),分别用C到X的字母来表示。为了避免和数字混淆,I和O没有采用。UTM的“false
    easting”值为500km,而南半球UTM带的“false northing”为10000km

     
    在arcgis中打开WGS1984投影文件,仔细看看,我们可以发现里面中有三种不同的投影文件:如下:
    WGS1984 BLM Zone 14N(ftvs).prj
    WGS 1984 Complex UTM Zone 20N.prj (该处由20N——30N)
    WGS 1984 UTM Zone 9s.prj(该处由9s——60s)此处的S代表南半球,同样北半球有同样的变化
    1.UTM投影
    UTM投影全称为“通用横轴墨卡托投影”,英文名称为Universal Transverse Mercator,是一种等角横轴割圆柱投影,圆柱割地球于南纬80度、北纬84度两条等高圈,被许多国家用作地形图的数学基础,如中国采用的高斯-克吕格投影就是UTM投影的一种变形,很多遥感数据,如Landsat和Aster数据都应用UTM投影发布的。
    UTM投影将北纬84度和南纬80度之间的地球表面积按经度6度划分为南北纵带(投影带)。从180度经线开始向东将这些投影带编号,从1编至60(北京处于第50带)。每个带再划分为纬差8度的四边形。两条标准纬线距中央经线为180KM左右,中央经线比例系数为0.9996.
    UTM北半球投影北伪偏移为零,南半球则为10000公里。
    2.在ArcGIS中UTM投影坐标文件名的N和S的区别
    N代表北半球,S代表南半球,文件内容的区别在与参数False_Northing 北伪偏移值,如下图所示:
    3.中国UTM投影带号
    中国国境所跨UTM带号为43-53
    我国的疆域范围:
    最西端 北纬39度15分、东经73度33分
    最北端 北纬53度33.5分 东经124度27分
    最南点,处北纬3°51′,东经112°16′
    最东端 北纬47度27.5分 东经134度46.5分
    4.UTM投影带号计算
    如WGS_1984_UTM_Zone_49N,这个49的计算方法:
    49:从180度经度向东,每6度为一投影带,第49个投影带
    49=(114+180)/6,这个114为49投影带的最大经线
     

    1.2 Web Mercator

    EPSG,即 European Petroleum Standards Group 欧洲石油标准组织

    ArcGIS 10Web Mercator有三种EPSG编号。他们分别是EPSG3857 EPSG102100

    EPSG102113。其实三者表示同一个投影,而这个投影跟谷歌以及Open Street Map等使用的投影EPSG:900913是一致的,只是这个编号以前人们使用的时候并没有被EPSG组织采纳。

    以下是这几个编号代表的投影在ArcGIS中的元数据信息:(其中EPSG3857 EPSG102100 完全相同,EPSG102113稍有差异)

    EPSG3857     -  WGS_1984_Web_Mercator_Auxiliary_Sphere

    EPSG102100  - WGS_1984_Web_Mercator_Auxiliary_Sphere

     

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    PROJCS[
      "WGS_1984_Web_Mercator_Auxiliary_Sphere" ,
       GEOGCS[
       "GCS_WGS_1984" ,
       DATUM[ "D_WGS_1984" , SPHEROID[ "WGS_1984" , 6378137.0, 298.257223563]],
       PRIMEM[ "Greenwich" , 0.0],
       UNIT[ "Degree" , 0.0174532925199433]
       ],
     
      PROJECTION[ "Mercator_Auxiliary_Sphere" ],
      PARAMETER[ "False_Easting" , 0.0],
      PARAMETER[ "False_Northing" , 0.0],
      PARAMETER[ "Central_Meridian" , 0.0],
      PARAMETER[ "Standard_Parallel_1" , 0.0],
      PARAMETER[ "Auxiliary_Sphere_Type" , 0.0],
      UNIT[ "Meter" , 1.0]
    ]

     

    EPSG102113     WGS_1984_Web_Mercator 

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    PROJCS[
       "WGS_1984_Web_Mercator" ,
       GEOGCS[ "GCS_WGS_1984_Major_Auxiliary_Sphere" ,
    DATUM[ "D_WGS_1984_Major_Auxiliary_Sphere" ,SPHEROID[ "WGS_1984_Major_Auxiliary_Sphere" ,6378137.0,0.0]],
       PRIMEM[ "Greenwich" ,0.0],
       UNIT[ "Degree" ,0.0174532925199433]
      ],
     
      PROJECTION[ "Mercator" ],
      PARAMETER[ "False_Easting" ,0.0],
      PARAMETER[ "False_Northing" ,0.0],
      PARAMETER[ "Central_Meridian" ,0.0],
      PARAMETER[ "Standard_Parallel_1" ,0.0],
      UNIT[ "Meter" ,1.0]
    ]
     

    1.3 Web Mercator 的定义

    我们知道,地理数据的坐标系一般有两大类,一是地理坐标系(GCS),是经纬度单位的椭球坐标系;二是投影坐标系(PCS),是平面直角坐标系。

    投影坐标系(PCS)的定义一般会包含两方面的定义信息:
    (1)基准面/Datum — 与GCS相应
    (2)投影方法/Projection Method

     

    Web Mercator 是一个投影坐标系统,其基准面是 WGS 1984 。

     

    那么,第一个问题,WGS 1984 是什么?

    “ 世界大地坐标系是美国国防部制图局(Defence Mapping Agency, DMA)为统一世界大地坐标系统,实现全球测量标准的一致性,定义用于制图、大地、导航的坐标基准。它包括标准地球坐标框架、用于处理原始观测数据的标准椭球参考面(即基准和参考椭球)和定义标准海平面的重力等势面(大地水准面)。……”(摘自《大地坐标系统及其应用》)

    在上面一段中可以知道,定义一个坐标系绝对是一个复杂浩大的数学工程。 我们经常听说的 WGS 1984 (或 WGS 84)就是其中一个世界大地坐标系统。我们经常使用的 GPS 的坐标参考系统也是它。

    WGS 1984 的具体定义参数:

    GCS_WGS_1984
    WKID: 4326 Authority: EPSG

    Angular Unit: Degree (0.0174532925199433)
    Prime Meridian: Greenwich (0.0)
    Datum: D_WGS_1984
    Spheroid: WGS_1984
    Semimajor Axis: 6378137.0
    Semiminor Axis: 6356752.314245179
    Inverse Flattening: 298.257223563

    通过参数描述,我们知道 WGS 1984 是一个长半轴(a)为6378137,短半轴(b)为6356752.314245179 的椭球体,扁率(f)为298.257223563,f=(a-b)/a 。

    这里写图片描述

    Web Mercator 坐标系使用的投影方法不是严格意义的墨卡托投影,而是一个被 EPSG(European Petroleum Survey Group)称为伪墨卡托的投影方法,这个伪墨卡托投影方法的大名是 Popular Visualization Pseudo Mercator,PVPM。 看起来就觉得这个投影方法不是很严谨的样子,大众化的?受欢迎的?可视化伪墨卡托投影……

    因为这个坐标系统是 Google Map 最先使用的,或者更确切地说,是Google 最先发明的。在投影过程中,将表示地球的参考椭球体近似的作为正球体处理(正球体半径 R = 椭球体半长轴 a)。这也是为什么在 ArcGIS 中我们经常看到这个坐标系叫 WGS 1984 Web Mercator (Auxiliary Sphere)。Auxiliary Sphere 就是在告知你,这个坐标在投影过程中,将椭球体近似为正球体做投影变换,虽然基准面是WGS 1984 椭球面。

    这里写图片描述

    后来,Web Mercator 在 Web 地图领域被广泛使用,这个坐标系就名声大噪。尽管这个坐标系由于精度问题一度不被GIS专业人士接受,但最终 EPSG 还是给了 WKID:3857。

     

    1.4 两者的区别

    WGS84坐标系
    1、WGS84是地心坐标系,空间直角坐标系,原点与地球质心重合,为GPS采用的坐标系;
    2、通过GPS可以直接获取WGS84下的坐标(B,L,H),B为纬度,L为经度,H为大地高即到WGS84椭 球面的高度;
    3、我国地图采用的是北京1954或西安1980坐标系下的高斯投影坐标(x,y),也有采用北京1954或西安1980坐标系下的经纬度坐标(B,L),高程一般为海拔高度;
    4、GPS的测量结果与北京54或西安80坐标相差几十米到一百多米,随区域各异;
    WGS84 Web Mercator:
    1、谷歌地图(WGS_1984_Pseudo_mercator)、Virtual Earth、Bing Maps、百度地图、Mapabc、ArcGIS Online等采用Web Mercator或Spherical Mercator坐标系,天地图采用CGCS2000国家大地坐标系;
    2、Web Mercator与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体;
    3、为什么选择墨卡托投影?等角正轴圆柱投影,等角保证了对象的形状不变形,也保证了方向和相互位置的正确性(在航海、航空中应用),等角的代价是面积的巨大变形,特别是两极地区;
    4、WebGIS开发经常碰到坐标系互转,如底图使用Web Mercator,定位(GPS,wifi等)信号坐标为WGS84坐标,代码实现如下:
    //经纬度转Wev墨卡托

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    dvec3 CMathEngine::lonLat2WebMercator(dvec3  lonLat)
    {
         dvec3  mercator;
         double x = lonLat.x *20037508.34/180;
         double y = log(tan((90+lonLat.y)*PI/360))/(PI/180);
         y = y *20037508.34/180;
         mercator.x = x;
         mercator.y = y;
         return mercator ;
    }
    //Web墨卡托转经纬度
    dvec3 CMathEngine::WebMercator2lonLat( dvec3   mercator )
    {
         dvec3 lonLat;
         double x = mercator.x/20037508.34*180;
         double y = mercator.y/20037508.34*180;
         y= 180/PI*(2*atan(exp(y*PI/180))-PI/2);
         lonLat.x = x;
         lonLat.y = y;
         return lonLat;
    }

     

    2. 从WGS84到WGS84 Web Mercator

    对于非地理专业的开发人员,对与这些生涩的概念,我们不一定都要了解,但是我们要理解,凡是以经纬度为单位的都是地理坐标系,因为它归根结底是一个椭球体,只不过各个国家为了反映该国家所在区域地球的真实形状,而采用不同的数学模型对本不是椭球体的地球进行椭球体化。而投影坐标系,是对地理坐标系按照某种方式投影到平面上的,所以可以认为它是一个平面坐标系,单位自然是米或千米。

           

            我们在做开发的时候,尤其是web地图开发,两种坐标系至关重要4326 GCS_WGS_1984 和 102100WGS_1984_web_mercator_auxiliary_sphere 。


                1)、4326 GCS_WGS_1984 是WGS1984,属于地理坐标系,相信大家对它都有所耳闻,他就是大名鼎鼎的gps采用的坐标系,也就是通过gps拿到的坐标信息都是按这个坐标系给我们的经度和纬度。当然,如果你是做移动平台上的gps,获得的经纬度也是按这个坐标系。


               2)、102100 WGS_1984_web_mercator_auxiliary_sphere则是目前在线地图采用的通用坐标系,属于投影坐标系。


              如果我们采用googlemap做底图,然后想通过gps将位置在地图上显示,不经过任何转换直接在googlemap上显示是不行的,因为他们的坐标系不统一。所以在显示之前就必须将gps获取点进行坐标转换到WGS_1984_web_mercator,然后在googlemap上显示。

           

           在我们的实际应用中,经常用到SpatialReference空间参考系,我们大都用的是WKID=4326的D_WGS_1984的地理坐标,而由于需要,向之前的一篇博文中介绍的,叠加Google Map地图的话,就涉及到将我们现有的地图从WKID=4326的地理坐标系转换成WKID=102100的投影坐标系,怎么转换?

     

       ArcMap中的工具箱中有这样的工具,以下截图详细说明:

     

    1、打开已有的地图,并打开工具箱

     

    2、按照箭头指向,依次展开节点后,选择“Project”工具,如下:

     

    3、在打开的Project窗口中,选择输出的空间坐标系统,然后,点击“Select”,如下图:

     

    4、选择“Projected Coordinate System”,如下图:

     

    5、选择“World”,点击“Add”,如下图:

     

    6、找到WGS 1984 Web Mercator.prj,点击“Add”,如下图:

     

    7、在下拉框中,选择仅有的一项,然后点击“OK”,至此已经完成(这里请注意:请记住Output Dataset or Feature Class中的位置,那是转换后的输出shp位置)

     

    8、关闭ArcMap,重新打开ArcMap,并Add Data上一步中转换后的那个图层shp文件,此时的图层已经是墨卡托坐标系了。



    参考文章

    WGS1984 -UTM投影问题

    WGS84WGS84 Web Mercator的区别  

    ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326WKID=102100

    Web Mercator 公开的小秘密

     

    没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。

    永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧!

    多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。

    2
    0
    « 上一篇: FTP中的授权规则
    » 下一篇: 网络下载的栅格影像的有关坐标系的转换
    	</div>
    	<div class="postDesc">posted @ <span id="post-date">2016-11-25 23:52</span> <a href="https://www.cnblogs.com/arxive/">wenglabs</a> 阅读(<span id="post_view_count">10402</span>) 评论(<span id="post_comment_count">1</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=6103358" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(6103358);return false;">收藏</a></div>
    </div>
    <script type="text/javascript">var allowComments=true,cb_blogId=151044,cb_entryId=6103358,cb_blogApp=currentBlogApp,cb_blogUserGuid='4a769d58-0cba-e211-b39b-90b11c0b1faa',cb_entryCreatedDate='2016/11/25 23:52:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;</script>
    
    展开全文
  • CGCS2000坐标系WGS84坐标系的比较及采用
  • 鄂尔多斯路况shp矢量数据wgs84坐标系
  • 太原人口shp矢量数据wgs84坐标系
  • WGS-84坐标系是目前最通用的标准地理坐标系,平实我们常说的经纬度、从GPS设备、智能手机中取出的数据的坐标系、国际地图提供商使用的坐标系都是WGS84坐标系WGS-84坐标系(World Geodetic System)是一种国际上...

    做了一个json格式的百度坐标系、火星坐标系、WGS84坐标系的互相转换的网站,可以参考:

    坐标系转换

    1. WGS84坐标系

        WGS-84坐标系是目前最通用的标准地理坐标系,平实我们常说的经纬度、从GPS设备、智能手机中取出的数据的坐标系、国际地图提供商使用的坐标系都是WGS84坐标系。
        WGS-84坐标系(World Geodetic System)是一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直接坐标系的Z轴指向国际时间局(BIH)1984.0定义的协议地极(CTP)方向,X轴指向BIH1984.0的协议子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系。这是一个国际协议地球参考系统( ITRS ),是目前国际上统一采用的大地坐标系。GPS广播星历是以WGS-84坐标系为根据的。
     

    2. 国家大地坐标系(CGCS2000)

         国家大地坐标系是全球地心坐标系在我国的具体体现,是我国当前最新的国家大地坐标系。其原点为包括海洋和大气的整个地球的质量中心。Z轴指向BIH1984.0定义的协议极地方向(BIH国际时间局),X轴指向BIH1984.0定义的零子午面与协议赤道的焦点,Y轴按右手坐标系确定。
        CGCS2000与WGS84相差几厘米,对于一般工程测量,可以认为两者是一致的。

    3. 火星坐标系

          在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局指定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,我们在业内将前者称为地球坐标,后者称为火星坐标系(GCJ-02)。
         当我们使用的数据和服务不同时,就产生了我们市场说的偏移和纠偏的问题。

    坐标系服务商
    标准坐标系国外地图服务,天地图(属于CGCS2000,等同于WGS84)
    火星偏移坐标系IOS地图、高德地图、谷歌地图、腾讯地图
    其他偏移坐标系百度地图、搜狐搜狗坐标系

    4. 坐标转换

          在实际项目应用中,使用的底图坐标系,一般为标准坐标系如WGS84地理坐标系(EPSG:4326),墨卡托投影坐标系(高德的EPSG:3857,谷歌的EPSG:102100)。假设现在我们需要地图打几个兴趣点,因为数据量不大,我们可以去百度坐标拾取器或者高德坐标拾取器拾取兴趣点的坐标,那么拾取的对应的就是百度坐标系或火星坐标系,那么要在地图上没有偏移地加载点位,那么就需要将这些点转化为标准WGS84的坐标系,具体实现代码如下,仅供参考:

    
    // 定义一些常量
    const x_PI = 3.14159265358979324 * 3000.0 / 180.0
    const PI = 3.1415926535897932384626
    const a = 6378245.0
    const ee = 0.00669342162296594323
    
    /**
     * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 / 即百度转谷歌、高德
     * @param { Number } bd_lon
     * @param { Number } bd_lat
     */
    export function bd09togcj02 (bd_lon, bd_lat) {
      var x_pi = 3.14159265358979324 * 3000.0 / 180.0
      var x = bd_lon - 0.0065
      var y = bd_lat - 0.006
      var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi)
      var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi)
      var gg_lng = z * Math.cos(theta)
      var gg_lat = z * Math.sin(theta)
      return [gg_lng, gg_lat]
    }
    
    /**
     * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 / 即谷歌、高德 转 百度
     * @param { Number } lng
     * @param { Number } lat
     */
    export function gcj02tobd09 (lng, lat) {
      var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI)
      var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI)
      var bd_lng = z * Math.cos(theta) + 0.0065
      var bd_lat = z * Math.sin(theta) + 0.006
      return [bd_lng, bd_lat]
    }
    
    /**
     * WGS84坐标系转火星坐标系GCj02 / 即WGS84 转谷歌、高德
     * @param { Number } lng 
     * @param { Number } lat 
     */
    export function wgs84togcj02 (lng, lat) {
      if (outOfChina(lng, lat)) {
        return [lng, lat]
      }
      else {
        var dlat = transformlat(lng - 105.0, lat - 35.0)
        var dlng = transformlng(lng - 105.0, lat - 35.0)
        var radlat = lat / 180.0 * PI
        var magic = Math.sin(radlat)
        magic = 1 - ee * magic * magic
        var sqrtmagic = Math.sqrt(magic)
        dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI)
        dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI)
        const mglat = lat + dlat
        const mglng = lng + dlng
        return [mglng, mglat]
      }
    }
    
    /**
     * GCJ02(火星坐标系) 转换为 WGS84 / 即谷歌高德转WGS84
     * @param { Number } lng 
     * @param { Number } lat 
     */
    export function gcj02towgs84 (lng, lat) {
      if (outOfChina(lng, lat)) {
        return [lng, lat]
      }
      else {
        var dlat = transformlat(lng - 105.0, lat - 35.0)
        var dlng = transformlng(lng - 105.0, lat - 35.0)
        var radlat = lat / 180.0 * PI
        var magic = Math.sin(radlat)
        magic = 1 - ee * magic * magic
        var sqrtmagic = Math.sqrt(magic)
        dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI)
        dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI)
        const mglat = lat + dlat
        const mglng = lng + dlng
        return [lng * 2 - mglng, lat * 2 - mglat]
      }
    }
    
    /**
     * 百度坐标系转wgs84坐标系
     * @param {*} lng 
     * @param {*} lat 
     */
    export function bd09towgs84 (lng, lat) {
      // 百度坐标系先转为火星坐标系
      const gcj02 = bd09togcj02(lng, lat)
      // 火星坐标系转wgs84坐标系
      const result = gcj02towgs84(gcj02[0], gcj02[1])
      return result
    }
    
    /**
     * wgs84坐标系转百度坐标系
     * @param {*} lng 
     * @param {*} lat 
     */
    export function wgs84tobd09 (lng, lat) {
      // wgs84先转为火星坐标系
      const gcj02 = wgs84togcj02(lng, lat)
      // 火星坐标系转百度坐标系
      const result = gcj02tobd09(gcj02[0], gcj02[1])
      return result
    }
    
    /**
     * 经度转换
     * @param { Number } lng 
     * @param { Number } lat 
     */
    function transformlat (lng, lat) {
      var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng))
      ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0
      ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0
      ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0
      return ret
    }
    
    /**
     * 纬度转换
     * @param { Number } lng 
     * @param { Number } lat 
     */
    function transformlng (lng, lat) {
      var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng))
      ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0
      ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0
      ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0
      return ret
    }
    
    /**
     * 判断是否在国内,不在国内则不做偏移
     * @param {*} lng 
     * @param {*} lat 
     */
    function outOfChina (lng, lat) {
      return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false)
    }

     

    展开全文
  • 银川道路shp矢量数据wgs84坐标系
  • 银川路况shp矢量数据wgs84坐标系
  • 银川公交shp矢量数据wgs84坐标系
  • 银川人口shp矢量数据wgs84坐标系
  • 鄂尔多斯道路shp矢量数据wgs84坐标系
  • 鄂尔多斯公交shp矢量数据wgs84坐标系
  • 鄂尔多斯人口shp矢量数据wgs84坐标系
  • 赤峰道路shp矢量数据wgs84坐标系
  • 赤峰路况shp矢量数据wgs84坐标系
  • 赤峰房价shp矢量数据wgs84坐标系
  • 赤峰人口shp矢量数据wgs84坐标系
  • 绍兴道路shp矢量数据wgs84坐标系
  • 绍兴房价shp矢量数据wgs84坐标系
  • 绍兴人口shp矢量数据wgs84坐标系
  • 泗阳道路shp矢量数据wgs84坐标系
  • 泗阳人口shp矢量数据wgs84坐标系

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,405
精华内容 4,562
关键字:

wgs84坐标系格式