精华内容
下载资源
问答
  • 经纬度与我国54、80大地坐标转换的小工具
    2021-05-19 09:01:59

    经纬度与我国54、80大地坐标转换的小工具,经纬度与我国54、80大地坐标转换工具提供最常用的EGM96模型和Geoid99模型。

    坐标转换应该是怎样的呢?

    一般而言比较严密的是用七参数法(包括布尔莎模型,一步法模型,海尔曼特等),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数(莫洛登斯基模型),即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。在本软件中提供了计算三参数、七参数的功能。

    在一个椭球的不同坐标系中转换可能会用到平面转换,现阶段一般分为四参数和平面网格拟合两种方法,以四参数法在国内用的较多,举个例子,在深圳既有北京54坐标又有深圳坐标,在这两种坐标之间转换就用到四参数,计算四参数需要两个已知点。更精确的可以提供网格拟合数据,本软件提供计算和应用四参数的功能,也提供了网格拟合的功能。

    怎么使用:

    需要你输入经纬度或者大地坐标值,就能得到对应的大地坐标或者经纬度坐标,超好用。

    更多相关内容
  • 大地坐标经纬度坐标转换
  • C++大地坐标转换经纬度源码

    热门讨论 2010-07-14 15:20:18
    C++写的大地坐标经纬度之间转换的源代码
  • 大地经纬度坐标转换

    2018-04-06 16:23:32
    转换大地经纬度坐标使用。可用于西安80北京54和经纬度坐标之间的转换
  • 经纬度大地坐标转换工具,多个参考系选择,投影面选择,操作简便。
  • 一般而言比较严密的是用七参数法(包括布尔莎模型,一步法模型,海尔曼特等),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最...
  • 火星坐标转换经纬度,火星坐标系转换软件工具【支持批量】 火星坐标转换工具,支持批量转换 火星坐标转换到地球坐标 地球坐标转换到火星坐标 批量转换工具
  • 坐标转换经过本人高精度GPS 验证 误差范围在1米以内,更深入了解的可以私信我
  • 基于PHP实现的大地坐标经纬度坐标转换函数,可直接在apache服务下运行。运行方式为localhost:port/XY2BL-BL2XY?B=latitude@L=longitude。port为端口号,latitude为纬度值,longitude为经度值。大地坐标转经纬度...
  • 实现大地坐标与空间直角坐标和平面坐标的相互转换以及不同参考椭球的坐标系转换,内含84到54坐标转换示例!
  • 经纬度大地坐标转换

    热门讨论 2011-01-02 12:36:02
    可以对经纬度和平面坐标之间进行转换,可以进行WGS84,北京54,西安80坐标系统之间的转换
  • 绝对好用的经纬度大地坐标互相转换, 代码清晰,用vc编写。
  • 大地坐标经纬度互相转换

    热门讨论 2011-08-22 12:01:59
    大地坐标经纬度互相转换,有北京坐标,西安坐标和3度分带和6度分带
  • 大地坐标经纬度坐标转换源代码

    热门讨论 2008-04-22 13:27:33
    大地坐标经纬度坐标转换源代码,三维开发工作中可用到。
  • js大地坐标经纬度坐标互转

    千次阅读 2020-08-14 17:04:39
    js大地坐标经纬度坐标互转 //高斯投影坐标反算成经纬度 function GaussToBL(X,Y){ let ProjNo; let ZoneWide; ////带宽 let output = new Array(2); let longitude1,latitude1, longitude0, X0,Y0, xval,yval;...

    js大地坐标与经纬度坐标互转

    //高斯投影坐标反算成经纬度
    function GaussToBL(X,Y){
        let ProjNo;
        let ZoneWide; 带宽
        let output = new Array(2);
        let longitude1,latitude1, longitude0, X0,Y0, xval,yval;//latitude0,
        let e1,e2,f,a, ee, NN, T,C, M, D,R,u,fai, iPI;
        iPI = 3.14159265358979324/180.0; 3.1415926535898/180.0;
        // a = 6378245.0; f = 1.0/298.3; //54年北京坐标系参数
        a=6378140.0; f=1.0/298.257; //80年西安坐标系参数
        ZoneWide = 6; 6度带宽
        ProjNo = parseInt(X/1000000) ; //查找带号
        longitude0 = (ProjNo-1) * ZoneWide + ZoneWide / 2;
        longitude0 = longitude0 * iPI ; //中央经线
    
    
        X0 = ProjNo*1000000+500000;
        Y0 = 0;
        xval = X-X0; yval = Y-Y0; //带内大地坐标
        e2 = 2*f-f*f;
        e1 = (1.0-Math.sqrt(1-e2))/(1.0+Math.sqrt(1-e2));
        ee = e2/(1-e2);
        M = yval;
        u = M/(a*(1-e2/4-3*e2*e2/64-5*e2*e2*e2/256));
        fai = u+(3*e1/2-27*e1*e1*e1/32)*Math.sin(2*u)+(21*e1*e1/16-55*e1*e1*e1*e1/32)*Math.sin(4*u) +(151*e1*e1*e1/96)*
            Math.sin(6*u)+(1097*e1*e1*e1*e1/512)*Math.sin(8*u);
        C = ee*Math.cos(fai)*Math.cos(fai);
        T = Math.tan(fai)*Math.tan(fai);
        NN = a/Math.sqrt(1.0-e2*Math.sin(fai)*Math.sin(fai));
        R = a*(1-e2)/Math.sqrt((1-e2*Math.sin(fai)*Math.sin(fai))*(1-e2*Math.sin(fai)*Math.sin(fai))*(1-e2*Math.sin
        (fai)*Math.sin(fai)));
        D = xval/NN;
        //计算经度(Longitude) 纬度(Latitude)
        longitude1 = longitude0+(D-(1+2*T+C)*D*D*D/6+(5-2*C+28*T-3*C*C+8*ee+24*T*T)*D
            *D*D*D*D/120)/Math.cos(fai);
        latitude1 = fai -(NN*Math.tan(fai)/R)*(D*D/2-(5+3*T+10*C-4*C*C-9*ee)*D*D*D*D/24
            +(61+90*T+298*C+45*T*T-256*ee-3*C*C)*D*D*D*D*D*D/720);
        //转换为度 DD
        output[0] = longitude1 / iPI;
        output[1] = latitude1 / iPI;
        return output;
    }
    
    //经纬度=>高斯投影
    function BLToGauss(longitude, latitude){
        let ProjNo=0;
        let ZoneWide; 带宽
        let ret=Array(2);
        let longitude1,latitude1, longitude0,latitude0, X0,Y0, xval,yval;
        let a,f, e2,ee, NN, T,C,A, M, iPI;
        iPI = 0.0174532925199433; 3.1415926535898/180.0;
        ZoneWide = 6; 6度带宽
        // a=6378245.0; f=1.0/298.3; //54年北京坐标系参数
        a=6378140.0; f=1/298.257; //80年西安坐标系参数
        ProjNo = parseInt(longitude / ZoneWide) ;
        longitude0 = ProjNo * ZoneWide + ZoneWide / 2;
        longitude0 = longitude0 * iPI ;
        latitude0 = 0;
        longitude1 = longitude * iPI ; //经度转换为弧度
        latitude1 = latitude * iPI ; //纬度转换为弧度
        e2=2*f-f*f;
        ee=e2*(1.0-e2);
        NN=a/Math.sqrt(1.0-e2*Math.sin(latitude1)*Math.sin(latitude1));
        T=Math.tan(latitude1)*Math.tan(latitude1);
        C=ee*Math.cos(latitude1)*Math.cos(latitude1);
        A=(longitude1-longitude0)*Math.cos(latitude1);
        M=a*((1-e2/4-3*e2*e2/64-5*e2*e2*e2/256)*latitude1-(3*e2/8+3*e2*e2/32+45*e2*e2
            *e2/1024)*Math.sin(2*latitude1)
            +(15*e2*e2/256+45*e2*e2*e2/1024)*Math.sin(4*latitude1)-(35*e2*e2*e2/3072)*Math.sin(6*latitude1));
        xval = NN*(A+(1-T+C)*A*A*A/6+(5-18*T+T*T+72*C-58*ee)*A*A*A*A*A/120);
        yval = M+NN*Math.tan(latitude1)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24
            +(61-58*T+T*T+600*C-330*ee)*A*A*A*A*A*A/720);
        X0 = 1000000*(ProjNo+1)+500000;
        Y0 = 0;
        xval = xval+X0; yval = yval+Y0;
        ret[0]=xval;
        ret[1]=yval;
    
        return ret;
    }
    
    export default {
        GaussToBL,
        BLToGauss,
    }
    
    展开全文
  • 1、坐标转换:空间直角坐标,大地坐标,平面坐标转换。 2、经纬度转换:(地理坐标)经纬度与(大地坐标)xy相互转化,3度带与6度带坐标相互转化,度(十进制)与度分秒相互转化
  • VC大地坐标转换经纬度代码

    热门讨论 2010-03-23 10:46:35
    VC大地坐标转换经纬度代码,调试通过,可以放心使用
  • 软件是基于参考椭球面与全国大地控制点,建立全国高精度高分辨率格网改正量模型,利用地理信息平台进行二次开发,研发自动化程度高、速度快、操作方便的坐标转换软件系统,对存量土地数据进行转换,实现全国已有数据...
  • 基于matlab软件,可将经纬度坐标转换成空间直角坐标。内含WGS84参考椭球参数,可通过输入自己的经纬度坐标,实现三维空间直角坐标的转换。
  • UTM大地坐标系与经纬度转换算法C++

    千次阅读 2021-05-24 19:54:47
    UTM坐标系,需要确定给定UTM区域的中央子午线。 分为三分度和六分度。 三分度 3度带:中央子午线计算公式:中央子午线L=3 ×N 。N=当地经度/3,N值进行四舍五入后即为3度带的带号。 六分度 6度带:中央子午线计算...

    中央子午线

    UTM坐标系,需要确定给定UTM区域的中央子午线。
    分为三分度和六分度。

    三分度

    3度带:中央子午线计算公式:中央子午线L=3 ×N 。N=当地经度/3,N值进行四舍五入后即为3度带的带号。
    

    六分度

    6度带:中央子午线计算公式:中央子午线L=6 ×(N+1)-3 。N=[当地经度/6],N值不进行四舍五入,只取整数部分,(N+1)即为6度带的带号。
    代号查询:
    https://www.docin.com/p-1652560117.html

    注意

    下面的转换代码,用的是六分度的中央子午线,范围为(-177,177)。

    UTM转经纬度

    引入头文件
    #include “CoorConv.hpp”

    	double x = 690829.75249613554;
    	double y = 3118616.9477559421;
    	WGS84Corr t;
    	//长沙的zone为49  长沙的中央子午线经度为111,推出zone为49
    	//return DegToRad(-183.0 + (zone * 6.0));
    	UTMXYToLatLon(x, y, 49,false,t);
    	double lat = RadToDeg(t.lat);  //注意弧度转角度!!!
    	double log = RadToDeg(t.log);
    

    经纬度转UTM

        WGS84Corr t;
        t.lat = 28.17951;
        t.log = 112.943878;
    	LatLonToUTMXY(DegToRad(t.lat), DegToRad(t.log),49,test);
    	std::cout << test.x << "  " << test.y << std::endl;
    

    相关的头文件!直接引入就可以用!

    //CoorConv.hpp
    #ifndef __COORCONV_H__
    #define __COORCONV_H__
    
    #include <cmath>
    
    double pi = 3.14159265358979;
    
    /* Ellipsoid model constants (actual values here are for WGS84) */
    double sm_a = 6378137.0;
    double sm_b = 6356752.314;
    double sm_EccSquared = 6.69437999013e-03;
    double UTMScaleFactor = 0.9996;
    
    typedef struct tagUTMCorr 
    {
    	double x;
    	double y;
    }UTMCoor;  //UTM坐标系
    
    typedef struct tagWGS84Corr
    {
    	double lat;
    	double log;
    }WGS84Corr;  //经纬度
    /*
    * DegToRad
    *
    * Converts degrees to radians.
    * 将度数转换为弧度
    */
    inline double DegToRad (double deg)
    {
    	return (deg / 180.0 * pi);
    }
    
    /*
    * RadToDeg
    *
    * Converts radians to degrees.
    * 将弧度转换为度数
    */
    inline double RadToDeg (double rad)
    {
    	return (rad / pi * 180.0);
    }
    
    /*
    * ArcLengthOfMeridian
    *
    * Computes the ellipsoidal distance from the equator to a point at a
    * given latitude.  计算从赤道到a点的椭圆距离给定纬度。
    *
    * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J.,
    * GPS: Theory and Practice, 3rd ed.  New York: Springer-Verlag Wien, 1994.
    *
    * Inputs:
    *     phi - Latitude of the point, in radians.
    *     phi-点的纬度,以弧度为单位。
    * Globals:
    *     sm_a - Ellipsoid model major axis.
    *     sm_b - Ellipsoid model minor axis.
    *
    * Returns:
    *     The ellipsoidal distance of the point from the equator, in meters.
    *     点到赤道的椭圆距离,以米为单位
    */
    double ArcLengthOfMeridian (double phi)
    {
    	double alpha, beta, gamma, delta, epsilon, n;
    	double result;
    
    	/* Precalculate n */
    	n = (sm_a - sm_b) / (sm_a + sm_b);
    
    	/* Precalculate alpha */
    	alpha = ((sm_a + sm_b) / 2.0) * (1.0 + (pow(n, 2.0) / 4.0) + (pow(n, 4.0) / 64.0));
    
    	/* Precalculate beta */
    	beta = (-3.0 * n / 2.0) + (9.0 * pow(n, 3.0) / 16.0) + (-3.0 * pow(n, 5.0) / 32.0);
    
    	/* Precalculate gamma */
    	gamma = (15.0 * pow(n, 2.0) / 16.0) + (-15.0 * pow(n, 4.0) / 32.0);
    
    	/* Precalculate delta */
    	delta = (-35.0 * pow(n, 3.0) / 48.0) + (105.0 * pow(n, 5.0) / 256.0);
    
    	/* Precalculate epsilon */
    	epsilon = (315.0 * pow(n, 4.0) / 512.0);
    
    	/* Now calculate the sum of the series and return */
    	result = alpha * (phi + (beta * sin(2.0 * phi)) + (gamma * sin(4.0 * phi)) + (delta * sin(6.0 * phi)) + (epsilon * sin(8.0 * phi)));
    
    	return result;
    }
    
    /*
    * UTMCentralMeridian
    * UTMC中央子午线
    * Determines the central meridian for the given UTM zone.
    * 确定给定UTM区域的中央子午线
    * Inputs:
    *     zone - An integer value designating the UTM zone, range [1,60].
    *     zone-  指定UTM区域的整数值,范围[1,60]
    * Returns:
    *   The central meridian for the given UTM zone, in radians, or zero
    *   给定UTM区域的中央子午线,以弧度为单位
    *   if the UTM zone parameter is outside the range [1,60].
    *    如果UTM区域参数不在[1,60]范围内,返回0
    *   Range of the central meridian is the radian equivalent of [-177,+177].
    *   中央子午线的范围是[-177,+ 177]的弧度
    */
    inline double UTMCentralMeridian (int zone)
    {
    	return DegToRad(-183.0 + (zone * 6.0));
    }
    
    
    /*
    * FootpointLatitude
    *
    * Computes the footpoint latitude for use in converting transverse
    * 计算用于转换横向的立足点纬度
    * Mercator coordinates to ellipsoidal coordinates.
    *
    * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J.,
    *   GPS: Theory and Practice, 3rd ed.  New York: Springer-Verlag Wien, 1994.
    *
    * Inputs:
    *   y - The UTM northing coordinate, in meters.
    *   y - UTM北坐标,以米为单位
    * Returns:
    *   The footpoint latitude, in radians.
    *   返回立足点的纬度,以弧度为单位
    *
    */
    double FootpointLatitude (double y)
    {
    	double y_, alpha_, beta_, gamma_, delta_, epsilon_, n;
    	double result;
    
    	/* Precalculate n (Eq. 10.18) */
    	n = (sm_a - sm_b) / (sm_a + sm_b);
    
    	/* Precalculate alpha_ (Eq. 10.22) */
    	/* (Same as alpha in Eq. 10.17) */
    	alpha_ = ((sm_a + sm_b) / 2.0) * (1 + (pow(n, 2.0) / 4) + (pow(n, 4.0) / 64));
    
    	/* Precalculate y_ (Eq. 10.23) */
    	y_ = y / alpha_;
    
    	/* Precalculate beta_ (Eq. 10.22) */
    	beta_ = (3.0 * n / 2.0) + (-27.0 * pow(n, 3.0) / 32.0) + (269.0 * pow(n, 5.0) / 512.0);
    
    	/* Precalculate gamma_ (Eq. 10.22) */
    	gamma_ = (21.0 * pow(n, 2.0) / 16.0) + (-55.0 * pow(n, 4.0) / 32.0);
    
    	/* Precalculate delta_ (Eq. 10.22) */
    	delta_ = (151.0 * pow (n, 3.0) / 96.0)	+ (-417.0 * pow (n, 5.0) / 128.0);
    
    	/* Precalculate epsilon_ (Eq. 10.22) */
    	epsilon_ = (1097.0 * pow(n, 4.0) / 512.0);
    
    	/* Now calculate the sum of the series (Eq. 10.21) */
    	result = y_ + (beta_ * sin(2.0 * y_)) + (gamma_ * sin(4.0 * y_)) + (delta_ * sin(6.0 * y_)) + (epsilon_ * sin(8.0 * y_));
    
    	return result;
    }
    
    /*
    * MapLatLonToXY
    *
    * Converts a latitude/longitude pair to x and y coordinates in the
    * Transverse Mercator projection.  Note that Transverse Mercator is not
    * the same as UTM; a scale factor is required to convert between them.
    **将纬度/经度对转换为x和y坐标,横向墨卡托投影。 请注意,横轴墨卡托与UTM不同; 需要比例因子在它们之间进行转换。
    * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J.,
    * GPS: Theory and Practice, 3rd ed.  New York: Springer-Verlag Wien, 1994.
    *
    * Inputs:
    *    phi - Latitude of the point, in radians.
    *    lambda - Longitude of the point, in radians.
    *    lambda0 - Longitude of the central meridian to be used, in radians.
    *    phi-点的纬度,以弧度为单位。
    *    lambda-点的经度,以弧度为单位。
    *    lambda0-要使用的中央子午线的经度,以弧度为单位。
    * Outputs:
    *    xy - A 2-element array containing the x and y coordinates
    *         of the computed point.
    *    xy-一个2元素的数组,其中包含计算点的x和y坐标
    * Returns:
    *    The function does not return a value.
    *
    */
    void MapLatLonToXY (double phi, double lambda, double lambda0, UTMCoor &xy)
    {
    	double N, nu2, ep2, t, t2, l;
    	double l3coef, l4coef, l5coef, l6coef, l7coef, l8coef;
    	double tmp;
    
    	/* Precalculate ep2 */
    	ep2 = (pow(sm_a, 2.0) - pow(sm_b, 2.0)) / pow(sm_b, 2.0);
    
    	/* Precalculate nu2 */
    	nu2 = ep2 * pow(cos(phi), 2.0);
    
    	/* Precalculate N */
    	N = pow(sm_a, 2.0) / (sm_b * sqrt(1 + nu2));
    
    	/* Precalculate t */
    	t = tan (phi);
    	t2 = t * t;
    	tmp = (t2 * t2 * t2) - pow (t, 6.0);
    
    	/* Precalculate l */
    	l = lambda - lambda0;
    
    	/* Precalculate coefficients for l**n in the equations below
    	so a normal human being can read the expressions for easting
    	and northing
    	-- l**1 and l**2 have coefficients of 1.0 */
    	l3coef = 1.0 - t2 + nu2;
    
    	l4coef = 5.0 - t2 + 9 * nu2 + 4.0 * (nu2 * nu2);
    
    	l5coef = 5.0 - 18.0 * t2 + (t2 * t2) + 14.0 * nu2 - 58.0 * t2 * nu2;
    
    	l6coef = 61.0 - 58.0 * t2 + (t2 * t2) + 270.0 * nu2	- 330.0 * t2 * nu2;
    
    	l7coef = 61.0 - 479.0 * t2 + 179.0 * (t2 * t2) - (t2 * t2 * t2);
    
    	l8coef = 1385.0 - 3111.0 * t2 + 543.0 * (t2 * t2) - (t2 * t2 * t2);
    
    	/* Calculate easting (x) */
    	xy.x = N * cos (phi) * l + (N / 6.0 * pow(cos(phi), 3.0) * l3coef * pow(l, 3.0))
    		+ (N / 120.0 * pow(cos(phi), 5.0) * l5coef * pow(l, 5.0))
    		+ (N / 5040.0 * pow(cos (phi), 7.0) * l7coef * pow(l, 7.0));
    
    	/* Calculate northing (y) */
    	xy.y = ArcLengthOfMeridian (phi)
    		+ (t / 2.0 * N * pow(cos(phi), 2.0) * pow(l, 2.0))
    		+ (t / 24.0 * N * pow(cos(phi), 4.0) * l4coef * pow(l, 4.0))
    		+ (t / 720.0 * N * pow(cos(phi), 6.0) * l6coef * pow(l, 6.0))
    		+ (t / 40320.0 * N * pow(cos(phi), 8.0) * l8coef * pow(l, 8.0));
    }
    
    
    
    /*
    * MapXYToLatLon
    *
    * Converts x and y coordinates in the Transverse Mercator projection to
    * a latitude/longitude pair.  Note that Transverse Mercator is not
    * the same as UTM; a scale factor is required to convert between them.
    *  将“横向墨卡托”投影中的x和y坐标转换为纬度/经度对。
    *  请注意,横轴墨卡托与UTM不同;需要比例因子在它们之间进行转换。
    * Reference: Hoffmann-Wellenhof, B., Lichtenegger, H., and Collins, J.,
    *   GPS: Theory and Practice, 3rd ed.  New York: Springer-Verlag Wien, 1994.
    *
    * Inputs:
    *   x - The easting of the point, in meters.
    *   y - The northing of the point, in meters.
    *   lambda0 - Longitude of the central meridian to be used, in radians.
    *
    * Outputs:
    *   philambda - A 2-element containing the latitude and longitude
    *               in radians.
    * 输入:
    *    x-点的东移,以米为单位。
    *    y-点的北,以米为单位。
    *    lambda0-要使用的中央子午线的经度,以弧度为单位。
    *
    *输出:
    *     philambda-包含纬度和经度的2元素,单位为弧度。
    * Returns:
    *   The function does not return a value.
    *
    * Remarks:
    *   The local variables Nf, nuf2, tf, and tf2 serve the same purpose as
    *   N, nu2, t, and t2 in MapLatLonToXY, but they are computed with respect
    *   to the footpoint latitude phif.
    *
    *   x1frac, x2frac, x2poly, x3poly, etc. are to enhance readability and
    *   to optimize computations.
    *
    */
    void MapXYToLatLon (double x, double y, double lambda0, WGS84Corr &philambda)
    {
    	double phif, Nf, Nfpow, nuf2, ep2, tf, tf2, tf4, cf;
    	double x1frac, x2frac, x3frac, x4frac, x5frac, x6frac, x7frac, x8frac;
    	double x2poly, x3poly, x4poly, x5poly, x6poly, x7poly, x8poly;
    
    	/* Get the value of phif, the footpoint latitude. */
    	phif = FootpointLatitude (y);
    
    	/* Precalculate ep2 */
    	ep2 = (pow(sm_a, 2.0) - pow(sm_b, 2.0))	/ pow(sm_b, 2.0);
    
    	/* Precalculate cos (phif) */
    	cf = cos (phif);
    
    	/* Precalculate nuf2 */
    	nuf2 = ep2 * pow (cf, 2.0);
    
    	/* Precalculate Nf and initialize Nfpow */
    	Nf = pow(sm_a, 2.0) / (sm_b * sqrt(1 + nuf2));
    	Nfpow = Nf;
    
    	/* Precalculate tf */
    	tf = tan (phif);
    	tf2 = tf * tf;
    	tf4 = tf2 * tf2;
    
    	/* Precalculate fractional coefficients for x**n in the equations
    	below to simplify the expressions for latitude and longitude. */
    	x1frac = 1.0 / (Nfpow * cf);
    
    	Nfpow *= Nf;   /* now equals Nf**2) */
    	x2frac = tf / (2.0 * Nfpow);
    
    	Nfpow *= Nf;   /* now equals Nf**3) */
    	x3frac = 1.0 / (6.0 * Nfpow * cf);
    
    	Nfpow *= Nf;   /* now equals Nf**4) */
    	x4frac = tf / (24.0 * Nfpow);
    
    	Nfpow *= Nf;   /* now equals Nf**5) */
    	x5frac = 1.0 / (120.0 * Nfpow * cf);
    
    	Nfpow *= Nf;   /* now equals Nf**6) */
    	x6frac = tf / (720.0 * Nfpow);
    
    	Nfpow *= Nf;   /* now equals Nf**7) */
    	x7frac = 1.0 / (5040.0 * Nfpow * cf);
    
    	Nfpow *= Nf;   /* now equals Nf**8) */
    	x8frac = tf / (40320.0 * Nfpow);
    
    	/* Precalculate polynomial coefficients for x**n.
    	-- x**1 does not have a polynomial coefficient. */
    	x2poly = -1.0 - nuf2;
    
    	x3poly = -1.0 - 2 * tf2 - nuf2;
    
    	x4poly = 5.0 + 3.0 * tf2 + 6.0 * nuf2 - 6.0 * tf2 * nuf2 - 3.0 * (nuf2 *nuf2) - 9.0 * tf2 * (nuf2 * nuf2);
    
    	x5poly = 5.0 + 28.0 * tf2 + 24.0 * tf4 + 6.0 * nuf2 + 8.0 * tf2 * nuf2;
    
    	x6poly = -61.0 - 90.0 * tf2 - 45.0 * tf4 - 107.0 * nuf2	+ 162.0 * tf2 * nuf2;
    
    	x7poly = -61.0 - 662.0 * tf2 - 1320.0 * tf4 - 720.0 * (tf4 * tf2);
    
    	x8poly = 1385.0 + 3633.0 * tf2 + 4095.0 * tf4 + 1575 * (tf4 * tf2);
    
    	/* Calculate latitude */
    	philambda.lat = phif + x2frac * x2poly * (x * x) + x4frac * x4poly * pow(x, 4.0) + x6frac * x6poly * pow(x, 6.0) + x8frac * x8poly * pow(x, 8.0);
    
    	/* Calculate longitude */
    	philambda.log = lambda0 + x1frac * x + x3frac * x3poly * pow(x, 3.0) + x5frac * x5poly * pow(x, 5.0) + x7frac * x7poly * pow(x, 7.0);
    }
    
    
    /*
    * LatLonToUTMXY
    *
    * Converts a latitude/longitude pair to x and y coordinates in the
    * Universal Transverse Mercator projection.
    * 将纬度/经度对转换为x和y坐标
    * Inputs:
    *   lat - Latitude of the point, in radians.
    *   lon - Longitude of the point, in radians.
    *   zone - UTM zone to be used for calculating values for x and y.
    *          If zone is less than 1 or greater than 60, the routine
    *          will determine the appropriate zone from the value of lon.
    * 输入:
    *   lat-点的纬度,以弧度为单位。
    *   lon-点的经度,以弧度为单位。
    *   zone-用于计算x和y值的UTM区域。
    *   如果区域小于1或大于60,则例程将根据lon的值确定适当的区域。
    * Outputs:
    *   xy - A 2-element array where the UTM x and y values will be stored.
    *   xy-2元素数组,将存储UTM x和y值
    * Returns:
    *   void
    *
    */
    void LatLonToUTMXY (double lat, double lon, int zone, UTMCoor &xy)
    {
    	MapLatLonToXY (lat, lon, UTMCentralMeridian(zone), xy);
    
    	/* Adjust easting and northing for UTM system. */
    	xy.x = xy.x * UTMScaleFactor + 500000.0;
    	xy.y = xy.y * UTMScaleFactor;
    	if (xy.y < 0.0)
    		xy.y += 10000000.0;
    }
    
    
    
    /*
    * UTMXYToLatLon
    *
    * Converts x and y coordinates in the Universal Transverse Mercator
    * projection to a latitude/longitude pair.
    * 在通用横轴墨卡托中转换x和y坐标投影到纬度/经度对。
    *
    * Inputs:
    *	x - The easting of the point, in meters.
    *	y - The northing of the point, in meters.
    *	zone - The UTM zone in which the point lies.
    *	southhemi - True if the point is in the southern hemisphere;
    *               false otherwise.
    * 输入:
    *    x-点的东移,以米为单位。
    *    y-点的北,以米为单位。
    *    zone-点所在的UTM区域。
    *    southhemi-如果该点在南半球,则为true;否则为true。
    *    否则为false。
    * Outputs:
    *	latlon - A 2-element array containing the latitude and
    *            longitude of the point, in radians.
    *
    * Returns:
    *	The function does not return a value.
    *
    */
    void UTMXYToLatLon (double x, double y, int zone, bool southhemi, WGS84Corr &latlon)
    {
    	double cmeridian;
    
    	x -= 500000.0;
    	x /= UTMScaleFactor;
    
    	/* If in southern hemisphere, adjust y accordingly. */
    	if (southhemi)
    		y -= 10000000.0;
    
    	y /= UTMScaleFactor;
    
    	cmeridian = UTMCentralMeridian (zone);
    	MapXYToLatLon (x, y, cmeridian, latlon);
    }
    
    #endif //__COORCONV_H__
    
    展开全文
  • 大地坐标系与经纬度转换(一):大地坐标系简介

    万次阅读 多人点赞 2019-11-22 14:38:48
    一、大地坐标大地坐标系是大地测量中以参考椭球面为基准面建立起来的坐标系。地面点的位置用大地经度、大地纬度和大地高度表示。 二、地心坐标系 ...

    大地坐标系简介

    大地坐标系是大地测量中以参考椭球面为基准面建立起来的坐标系,也就是地理坐标系,地面点的位置用大地经度L、大地纬度B和大地高度H表示,单位为度分秒。其中有三类比较常用的大地坐标系统,即地心坐标系统参心坐标系统地方独立坐标系统

    介绍不同坐标系统之前,首先简要介绍下经纬度的概念。

    大地经纬度示意图:(B为纬度,L为经度,H为高度)

    在这里插入图片描述
    某地的大地经度本初子午线本地子午线的夹角,如图中的经度。本初子午线是指通过英国伦敦格林尼治天文台原址的那条经线,也称为0°经线。大地经度分为东经和西经,东经为正,西经为负,东西各为180度,每15度时间相差一个小时。

    某地的大地纬度是将地球表面点投射到地球椭球体上,投影点法线方向与赤道平面的夹角为该点的大地纬度,即垂直于该地椭球面的线与赤道面的夹角。

    1、地心坐标系

    地心坐标系是以地球质心为原点建立的空间直角坐标系,或以球心与地球质心重合的地球椭球面为基准面所建立的大地坐标系,通常分为地心空间直角坐标系(以x,y,z为其坐标元素)和地心大地坐标系(以B,L,H为其坐标元素)。

    常用的有WGS84CGCS2000等。(主要是选的椭球体不一样,所以有不同的坐标系统)

    其中WGS84是美国国家影像制图局NIMA在WGS72基础上改进的、全球统一的地心坐标系,是现有应用于导航、精确大地测量和地图制图的最好的全球大地参考系(GPS星历的坐标系,于2002年修正)。在这里插入图片描述

    注:地心坐标系又名协议地球坐标系,与GPS的瞬时地球坐标系要对应起来。

    2、参心坐标系

    WGS是针对全球建立的坐标系,针对某一地区可能误差较大,为了让地图能尽可能描述某个地区的地形,便建立所谓的“参心坐标系”。为了贴合某地区,参心坐标系的中心并不在地球质心,是以所选椭球体圆心为中心,X、Y、Z三轴的定义与地心坐标系一致。

    我国常用的参心坐标系有BJZ54(原)、西安80和BJZ54(北京54)(新)等。

    3、常见坐标系简介

    1、WGS坐标系
    WGS84坐标系全称World Geodetic System - 1984,是为了解决GPS定位而产生的全球统一的一个地心坐标系。

    ● 椭球体:WGS84椭球
    ● 长半径=6378137m
    ● 短半径b=6356752.3142m
    ● 第一偏心率平方e2=0.00669437999013
    ● 第二偏心率平方e2=0.006739496742227
    ● 扁率=1/298.257223563

    2、BJZ54坐标系
    北京54参心坐标系,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。1954年北京坐标系可以认为是前苏联1942年坐标系的延伸。它的原点不在北京而是在前苏联的普尔科沃。

    ● 椭球体:克拉索夫斯基椭球
    ● 长半径=6378245m
    ● 短半径b=6356863.0188m
    ● 第一偏心率平方e2=0.006693421622
    ● 扁率=1/298.3

    3、西安80坐标系
    西安80坐标系是指1980年西安参心坐标系,该坐标系的大地原点设在我国中部的陕西省泾阳县永乐镇,位于西安市西北方向约60公里,又简称西安大地原点。基准面为黄海水面。
    ● 椭球体:IAG椭球
    ● 长半径 a=6378140m
    ● 短半径 b=6356755m
    ● 第一偏心率平方e2=0.00669438499959
    ● 扁率=1/298.25722101

    4、CGCS2000坐标系
    2000国家大地坐标系是全球地心坐标系在我国的具体体现,是我国当前最新的国家大地坐标系,其全称为China Geodetic Coordinate System 2000,其原点为包括海洋和大气的整个地球的质量中心。

    ● 椭球体:CGCS2000坐标系
    ● 长半轴 a=6378137m
    ● 短半轴 b=6356752.314m
    ● 第一偏心率平方e2=0.00669438002290
    ● 扁率=1/298.257222101

    注意:CGCS2000的定义与WGS84采用的参考椭球非常接近。

    展开全文
  • 如题,需要一个简单的公式 哪位达人直接告诉我一、用EXCEL进行高斯投影换算 从经纬度BL换算到高斯平面直角坐标XY(高斯投影正算),或从XY换算成BL(高斯投影反 算),一般需要专用计算机软件完成,在目前....
  • 经纬度大地坐标相互转换

    千次阅读 2020-04-24 11:05:19
    经纬度大地坐标相互转换 摘自https://www.cnblogs.com/zhangzhifeng/archive/2011/07/27/2118012.html 作者信息:http://wallimn.javaeye.com public class GaussXYDeal { // 由高斯投影坐标反算成经纬度 public ...
  • 在mapinfo上将大地坐标转换经纬度,在mapinfo上将大地坐标转换经纬度
  • 创建实体 @Data public class Place { private double X; private double Y; private double Z; } ...public class ... * 经纬度转地固坐标 * * @param place * @return */ private static Place llhToXyz
  • 通过excel文件, 互相来换算经纬度大地坐标。十分方便。
  • 通过经纬度转换为XY值 输入的参数为经度,纬度 得到的结果是[X,Y] 代码内部longitude0代表中央子午线的值,需要根据实际内容配置,也可以自己提到参数中 ​​​​​​​public static double[] ...
  • WGS84 CGCS2000 北京54 西安80 大地坐标精确转换工具。含计算工具和实例文本,坐标转换主要应用在工程测量以及GIS相关的很多领域。不用的领域对其转换的精度要求也不一样,在使用GOOLE EARTH时或者GIS地图中,精度在...
  • 详尽阐述了在MapGIS平台下,各种坐标相互转换的方法和途径。
  • 本程序是基于C++编写的,旨在解决空间坐标与大地坐标之间的转换,操作简单,提供源代码!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,503
精华内容 1,001
关键字:

大地坐标转换经纬度

友情链接: afptroyattribute.rar