精华内容
下载资源
问答
  • 1 wgs84坐标系:是国际上通用的地理坐标系,也就是我们常说的经度纬度多少多少。比如08年汶川大地震报的经纬度就是基于这个坐标系。而我们常见的一些设备比如gps也是以这个坐标系参考的。 2 火星坐标系:主要是...

    一 坐标介绍

    1 wgs84坐标系:是国际上通用的地理坐标系,也就是我们常说的经度纬度多少多少。比如08年汶川大地震报的经纬度就是基于这个坐标系。而我们常见的一些设备比如gps也是以这个坐标系为参考的。

    2 火星坐标系:主要是因为国家安全的原因为了保护一些比较敏感的坐标位置,在大天朝所有获取地图数据的第一个关卡就是国家测绘局,在他们出产的所有地图在wgs84的基础上进行一次加密,也就是所谓的按照一定的坐标偏移算法到另外一个坐标系,这个坐标系是特有的切是变化的,大家习惯性的把他称为火星坐标系。正是因为火星坐标系的存在我们直接拿gps采集的数据在地图上显示始终都有偏差,原因就是因为两个坐标系都不一样造成的。

    3 百度坐标系:百度的地图也是买的,他们买来的数据也是火星坐标系的,百度由于其平台非常知名,只要上过网的都知道百度,所以百度有这个能力搞一个自己的坐标系,再加之免费使用,用户多也就自然而然的逐渐让大家习惯了。


    二 坐标换算

       既然是三种坐标系,而且这些坐标系跟我们程序员息息相关,怎么实现他们的转换,要实现转换就得知道他们的转换算法。这里也是从网上东搜西搜的找到一些转换算法的代码。因为坐标的加密算法是会变化的,这些算法也并不是一定就是准确的,所以使用的时候作为参考吧。

    1 WGS84坐标转火星坐标的算法最早成形的版本是https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936


    1. using System;  
    2.   
    3. namespace Navi  
    4. {  
    5.     class EvilTransform  
    6.     {  
    7.         const double pi = 3.14159265358979324;  
    8.   
    9.         //  
    10.         // Krasovsky 1940  
    11.         //  
    12.         // a = 6378245.0, 1/f = 298.3  
    13.         // b = a * (1 - f)  
    14.         // ee = (a^2 - b^2) / a^2;  
    15.         const double a = 6378245.0;  
    16.         const double ee = 0.00669342162296594323;  
    17.   
    18.         //  
    19.         // World Geodetic System ==> Mars Geodetic System  
    20.         public static void transform(double wgLat, double wgLon, out double mgLat, out double mgLon)  
    21.         {  
    22.             if (outOfChina(wgLat, wgLon))  
    23.             {  
    24.                 mgLat = wgLat;  
    25.                 mgLon = wgLon;  
    26.                 return;  
    27.             }  
    28.             double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);  
    29.             double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);  
    30.             double radLat = wgLat / 180.0 * pi;  
    31.             double magic = Math.Sin(radLat);  
    32.             magic = 1 - ee * magic * magic;  
    33.             double sqrtMagic = Math.Sqrt(magic);  
    34.             dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);  
    35.             dLon = (dLon * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);  
    36.             mgLat = wgLat + dLat;  
    37.             mgLon = wgLon + dLon;  
    38.         }  
    39.   
    40.         static bool outOfChina(double lat, double lon)  
    41.         {  
    42.             if (lon < 72.004 || lon > 137.8347)  
    43.                 return true;  
    44.             if (lat < 0.8293 || lat > 55.8271)  
    45.                 return true;  
    46.             return false;  
    47.         }  
    48.   
    49.         static double transformLat(double x, double y)  
    50.         {  
    51.             double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.Sqrt(Math.Abs(x));  
    52.             ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;  
    53.             ret += (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0;  
    54.             ret += (160.0 * Math.Sin(y / 12.0 * pi) + 320 * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0;  
    55.             return ret;  
    56.         }  
    57.   
    58.         static double transformLon(double x, double y)  
    59.         {  
    60.             double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.Sqrt(Math.Abs(x));  
    61.             ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;  
    62.             ret += (20.0 * Math.Sin(x * pi) + 40.0 * Math.Sin(x / 3.0 * pi)) * 2.0 / 3.0;  
    63.             ret += (150.0 * Math.Sin(x / 12.0 * pi) + 300.0 * Math.Sin(x / 30.0 * pi)) * 2.0 / 3.0;  
    64.             return ret;  
    65.         }  
    66.     }  
    67. }  

    2下面是图吧坐标转WGS84坐标的JavaScript实现,来源于图吧官方的JS文件。


    1. function mapBar2WGS84(x, y) {    
    2.     x = parseFloat(x) * 100000 % 36000000;    
    3.     y = parseFloat(y) * 100000 % 36000000;    
    4.     
    5.     x1 = parseInt( - (((Math.cos(y / 100000)) * (x / 18000)) + ((Math.sin(x / 100000)) * (y / 9000))) + x);    
    6.     y1 = parseInt( - (((Math.sin(y / 100000)) * (x / 18000)) + ((Math.cos(x / 100000)) * (y / 9000))) + y);    
    7.     
    8.     x2 = parseInt( - (((Math.cos(y1 / 100000)) * (x1 / 18000)) + ((Math.sin(x1 / 100000)) * (y1 / 9000))) + x + ((x > 0) ? 1 : -1));    
    9.     y2 = parseInt( - (((Math.sin(y1 / 100000)) * (x1 / 18000)) + ((Math.cos(x1 / 100000)) * (y1 / 9000))) + y + ((y > 0) ? 1 : -1));    
    10.     
    11.     return [x2 / 100000.0, y2 / 100000.0];    
    12. }   

    这些代码都是在网上搜索到的,所以使用的时候作为参考并不一定准确。
    展开全文
  • 4、WGS84坐标转换为地理坐标系-world-ITRF2000 5、打开ArcCatalog,找到上一步中已经成ITRF2000坐标系的shp文件,单击右键-属性,将图层坐标重新定义成GCGS2000地理坐标系 6、重新打开arcmap,重新打开已经...

    来源于 GIS前沿 微信公众号

    1、 将图层从奥维中导出成shp文件,
    在这里插入图片描述
    2、 打开arcgis-arcmap
    在这里插入图片描述
    3、地理处理-arctoolbox-数据管理工具-投影和变换-要素-投影
    在这里插入图片描述
    在这里插入图片描述
    4、WGS84坐标转换为地理坐标系-world-ITRF2000
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5、打开ArcCatalog,找到上一步中已经成ITRF2000坐标系的shp文件,单击右键-属性,将图层坐标重新定义成GCGS2000地理坐标系
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    6、重新打开arcmap,重新打开已经重新定义坐标系的shp文件,按照地理处理-arctoolbox-数据管理工具-投影和变换-要素-投影
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    7、关于带号计算方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果不用带带号的,采用所在区域中央经度,
    在这里插入图片描述
    均为3度带中央经度线
    在这里插入图片描述
    如果前面加带号,采用6度带或三度带带号,均为三度带带号

    8、计算
    上一步将GCGS2000地理坐标系转换为GCGS2000投影坐标系后,打开上一步转换成投影坐标系后的shp文件,单击图层,右键属性,常规里,将十进制单位改成米。
    再右键单击shp图层,打开属性表,添加字段,添加x,y坐标字段

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    *这里需要注意一个事项,前面我们在选带号是,有带带号,也有没带带号,如果带带号,那么计算出来的y(对应经度)是8位,如果不带带号,对应的y(对应经度)是6位;x(对应纬度)是7位,不变。

    展开全文
  • % * WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, % * 谷歌地图采用的是WGS84地理坐标系(中国范围除外); % * GCJ02坐标系:即火星坐标系,是...
  • 将已知的测绘中使用独立坐标系转化为wgs84坐标系下的经纬度 过程 1、将平面坐标系中的独立坐标系转化标准坐标系坐标 /** * * 独立坐标转标准坐标 * @param X 独立坐标x * @param Y 独立坐标y * @param ...

    需求

    将已知的测绘中使用独立坐标系转化为wgs84坐标系下的经纬度

    过程

    1、将平面坐标系中的独立坐标系转化为标准坐标系坐标

        /**
         *
         * 独立坐标转标准坐标
         * @param X 独立坐标x
         * @param Y 独立坐标y
         * @param offsetX x平移
         * @param offsetY y平移
         * @param angle 旋转角度 单位弧度
         * @param K 尺度因子
         * @return 标准坐标系x,y
         */
        public  static double [] coordinateI2N(double X,double Y ,double offsetX,double offsetY,double angle,double K){
    
            double []  result  = new double[2];
            result[0]=offsetX+ X*K*Math.cos(angle) - Y*K*Math.sin(angle);
            result[1]=offsetY+ X*K*Math.sin(angle) + Y*K*Math.cos(angle);
            return result;
        }
        /**
         *
         * 标准坐标转独立坐标
         * @param X 标准坐标x
         * @param Y 标准坐标y
         * @param offsetX x平移
         * @param offsetY y平移
         * @param angle 旋转角度
         * @param K 尺度因子
         * @return 独立坐标系x,y
         */
        public  static double [] coordinateN2I(double X,double Y ,double offsetX,double offsetY,double angle,double K){
    
            double []  result  = new double[2];
            result[1] = (Y- offsetY - (X -offsetX)*Math.tan(angle))/(Math.tan(angle)*K*Math.sin(angle) + K*Math.cos(angle));
            result[0]=(X - offsetX + result[1]*K*Math.sin(angle))/(K*Math.cos(angle));
            return result;
        }
    

    2、计算转换参数
    上面的方法中使用四参数原理转换,故需要计算转换参数,代码如下:

    //引入的包
    import org.apache.commons.math3.linear.Array2DRowRealMatrix;
    import org.apache.commons.math3.linear.LUDecomposition;
    import org.apache.commons.math3.linear.RealMatrix;
    //计算代码
        /**
         * 计算经度取决于对应点的选取,以及选取对应点的数据
         * @param B 系数矩阵数组
         * @param L 观测向量矩阵数组
         * @return double [] x偏移 y偏移 旋转角(单位弧度) 尺度因子
         */
        public  static  double [] getConver4Param(double [] [] B,double [] [] L){
            RealMatrix matrixL = new Array2DRowRealMatrix(L);
            RealMatrix matrixB = new Array2DRowRealMatrix(B);
    
            RealMatrix BT =matrixB.transpose();
            RealMatrix X = inverseMatrix(BT.multiply(matrixB)).multiply(BT).multiply(matrixL); //参数矩阵
            double dx = X.getEntry(0,0); //x平移
            double dy = X.getEntry(1,0); //y平移
            double a = X.getEntry(2,0);  //旋转角度
            double b = X.getEntry(3,0);  //尺度因子
            return  new double[]{dx,dy,Math.atan(b/(a+1)),Math.sqrt(((a+1)*(a+1))+(b*b))};
    
        }
    
        /**
         * 矩阵逆计算
         * @param A
         * @return
         */
        public static RealMatrix inverseMatrix(RealMatrix A) {
            RealMatrix result = new LUDecomposition(A).getSolver().getInverse();
            return result;
        }
        public static void main(String[] args) {
            //DX001	一级	3685531.985 	509941.326
            //DX002	一级	3685257.723 	510107.768
    
            //DX001	一级	3685028.654 	509939.968
            //DX002	一级	3684754.429 	510106.388
            double x1 = 3686180.5650;//转换前x1
            double y1 = 509422.6660;//转换前y1
            double x11 = 3685677.1450;//转换后x11
            double y11 = 509421.3790 ;//转换后y11
            double x2 = 3674949.9960 ;//转换前x2
            double y2 = 502072.6390;//转换前y2
            double x22 = 3674448.1100;//转换后x22
            double y22 = 502072.3560;//转换后y22
    
            double [] [] L = new double[2*2][1]; //数据对的数量*2
            L[0][0] =x11-x1;
            L[1][0] =y11-y1;
            L[2][0] =x22-x2;
            L[3][0] =y22-y2;
            double B[][] = new double[4][4];
            B[0][0] =1;
            B[0][1] =0;
            B[0][2] =x1;
            B[0][3] =-y1;
            B[1][0] =0;
            B[1][1] =1;
            B[1][2] =y1;
            B[1][3] =x1;
            B[2][0] =1;
            B[2][1] =0;
            B[2][2] =x2;
            B[2][3] =-y2;
            B[3][0] =0;
            B[3][1] =1;
            B[3][2] =y2;
            B[3][3] =x2;
         *//*
            RealMatrix matrixL = new Array2DRowRealMatrix(L);
            RealMatrix matrixB = new Array2DRowRealMatrix(B);
    
            RealMatrix BT =matrixB.transpose();
            RealMatrix X = inverseMatrix(BT.multiply(matrixB)).multiply(BT).multiply(matrixL);
            double a = X.getEntry(2,0);
            double b = X.getEntry(3,0);
            System.out.println(X);*//*
            double[] r =  getConver4Param(B,L);
            System.out.println(r[2]);
            System.out.println(r[3]);
        }
    

    此过程中进行矩阵计算,Java本身没有矩阵数据类型,采用第三库apache.commons.math3进行矩阵计算
    3、由大地坐标系转换为经纬度

    /**
         * 高斯投影坐标反算
         * @param X 平面坐标x
         * @param Y 平面坐标y
         * @param L0 中央经线
         * @return 经纬度
         */
        public static double [] GaussProjInvCal(double X, double Y ,double L0) {
            double lat ,lon;
            Y-=500000;
            double []  result  = new double[2];
            double iPI = 0.0174532925199433;//pi/180
            double a = 6378137.0; //长半轴 m
            double b = 6356752.31414; //短半轴 m
            double f = 1/298.257222101;//扁率 a-b/a
            double e = 0.0818191910428; //第一偏心率 Math.sqrt(5)
            double ee = Math.sqrt(a*a-b*b)/b; //第二偏心率
            double bf = 0; //底点纬度
            double a0 = 1+(3*e*e/4) + (45*e*e*e*e/64) + (175*e*e*e*e*e*e/256) + (11025*e*e*e*e*e*e*e*e/16384) + (43659*e*e*e*e*e*e*e*e*e*e/65536);
            double b0 = X/(a*(1-e*e)*a0);
            double c1 = 3*e*e/8 +3*e*e*e*e/16 + 213*e*e*e*e*e*e/2048 + 255*e*e*e*e*e*e*e*e/4096;
            double c2 = 21*e*e*e*e/256 + 21*e*e*e*e*e*e/256 + 533*e*e*e*e*e*e*e*e/8192;
            double c3 = 151*e*e*e*e*e*e*e*e/6144 + 151*e*e*e*e*e*e*e*e/4096;
            double c4 = 1097*e*e*e*e*e*e*e*e/131072;
            bf = b0 + c1*Math.sin(2*b0) + c2*Math.sin(4*b0) +c3*Math.sin(6*b0) + c4*Math.sin(8*b0); // bf =b0+c1*sin2b0 + c2*sin4b0 + c3*sin6b0 +c4*sin8b0 +...
            double tf = Math.tan(bf);
            double n2 = ee*ee*Math.cos(bf)*Math.cos(bf); //第二偏心率平方成bf余弦平方
            double c = a*a/b;
            double v=Math.sqrt(1+ ee*ee*Math.cos(bf)*Math.cos(bf));
            double mf = c/(v*v*v); //子午圈半径
            double nf = c/v;//卯酉圈半径
    
            //纬度计算
            lat=bf-(tf/(2*mf)*Y)*(Y/nf) * (1-1/12*(5+3*tf*tf+n2-9*n2*tf*tf)*(Y*Y/(nf*nf))+1/360*(61+90*tf*tf+45*tf*tf*tf*tf)*(Y*Y*Y*Y/(nf*nf*nf*nf)));
           // lon=(1/Math.cos(bf))*(Y/nf) *(1 - (1/6 *(1+2*tf*tf+n2)*(Y*Y/(nf*nf))) + 1/120*(5+28*tf*tf+24*tf*tf*tf*tf+6*n2+8*n2*tf*tf)*(Y*Y*Y*Y/(nf*nf*nf*nf)));
            //经度偏差
            lon=1/(nf*Math.cos(bf))*Y -(1/(6*nf*nf*nf*Math.cos(bf)))*(1+2*tf*tf +n2)*Y*Y*Y + (1/(120*nf*nf*nf*nf*nf*Math.cos(bf)))*(5+28*tf*tf+24*tf*tf*tf*tf)*Y*Y*Y*Y*Y;
            result[0] =lat/iPI;
            result[1] =L0+lon/iPI;
            return result;
        }
    
    

    安利一门Python超级好课!
    扫码下单输优惠码【csdnfxzs】再减5元,比官网还便宜!

    展开全文
  • WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地理坐标系(中国范围除外); GCJ02坐标系:即火星坐标系,是由中国国家测绘...
    package position;
    
    import org.junit.Test;
    
    /**
     * 各地图API坐标系统比较与转换;
     * 
     * WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地理坐标系(中国范围除外);
     * 
     * GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系;
     * 
     * BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系;
     * 
     * 搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。
     * 
     * @author chenhua
     * 
     */
    public class PositionUtil
    {
    	private static double pi = 3.1415926535897932384626;
    	private static double a = 6378245.0;
    	private static double ee = 0.00669342162296594323;
    
    	@Test
    	public void t1()
    	{
    		// 北斗芯片获取的经纬度为WGS84地理坐标 31.426896,119.496145
    
    		Gps gps = new Gps(31.426896, 119.496145);
    		System.out.println("gps :" + gps);
    
    		Gps gcj = gps84_To_Gcj02(gps.getWgLat(), gps.getWgLon());
    		System.out.println("gcj :" + gcj);
    
    		Gps star = gcj_To_Gps84(gcj.getWgLat(), gcj.getWgLon());
    		System.out.println("star:" + star);
    
    		Gps bd = gcj02_To_Bd09(gcj.getWgLat(), gcj.getWgLon());
    		System.out.println("bd  :" + bd);
    
    		Gps gcj2 = bd09_To_Gcj02(bd.getWgLat(), bd.getWgLon());
    		System.out.println("gcj :" + gcj2);
    
    	}
    
    	/**
    	 * 84 to 火星坐标系 (GCJ-02)
    	 * 
    	 * World Geodetic System ==> Mars Geodetic System
    	 * 
    	 * @param lat
    	 * @param lon
    	 * @return
    	 */
    	public static Gps gps84_To_Gcj02(double lat, double lon)
    	{
    		if (outOfChina(lat, lon))
    		{
    			return null;
    		}
    		double dLat = transformLat(lon - 105.0, lat - 35.0);
    		double dLon = transformLon(lon - 105.0, lat - 35.0);
    		double radLat = lat / 180.0 * pi;
    		double magic = Math.sin(radLat);
    		magic = 1 - ee * magic * magic;
    		double sqrtMagic = Math.sqrt(magic);
    		dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
    		dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
    		double mgLat = lat + dLat;
    		double mgLon = lon + dLon;
    
    		return new Gps(mgLat, mgLon);
    	}
    
    	/**
    	 * 火星坐标系 (GCJ-02) to 84
    	 * 
    	 * @param lon
    	 * @param lat
    	 * @return
    	 */
    	public Gps gcj_To_Gps84(double lat, double lon)
    	{
    		Gps gps = transform(lat, lon);
    		double lontitude = lon * 2 - gps.getWgLon();
    		double latitude = lat * 2 - gps.getWgLat();
    
    		return new Gps(latitude, lontitude);
    
    	}
    
    	/**
    	 * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
    	 * 
    	 * 将 GCJ-02 坐标转换成 BD-09 坐标
    	 * 
    	 * @param gg_lat
    	 * @param gg_lon
    	 */
    	public static Gps gcj02_To_Bd09(double gg_lat, double gg_lon)
    	{
    		double x = gg_lon, y = gg_lat;
    
    		double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);
    
    		double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);
    
    		double bd_lon = z * Math.cos(theta) + 0.0065;
    
    		double bd_lat = z * Math.sin(theta) + 0.006;
    
    		return new Gps(bd_lat, bd_lon);
    	}
    
    	/**
    	 * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
    	 * 
    	 * 将 BD-09 坐标转换成GCJ-02 坐标
    	 * 
    	 * @param bd_lat
    	 * @param bd_lon
    	 * @return
    	 */
    	public static Gps bd09_To_Gcj02(double bd_lat, double bd_lon)
    	{
    		double x = bd_lon - 0.0065, y = bd_lat - 0.006;
    
    		double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);
    
    		double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);
    
    		double gg_lon = z * Math.cos(theta);
    
    		double gg_lat = z * Math.sin(theta);
    
    		return new Gps(gg_lat, gg_lon);
    	}
    
    	private static boolean outOfChina(double lat, double lon)
    	{
    		if (lon < 72.004 || lon > 137.8347)
    			return true;
    		if (lat < 0.8293 || lat > 55.8271)
    			return true;
    		return false;
    	}
    
    	private Gps transform(double lat, double lon)
    	{
    		if (outOfChina(lat, lon))
    		{
    			return new Gps(lat, lon);
    		}
    		double dLat = transformLat(lon - 105.0, lat - 35.0);
    		double dLon = transformLon(lon - 105.0, lat - 35.0);
    		double radLat = lat / 180.0 * pi;
    		double magic = Math.sin(radLat);
    		magic = 1 - ee * magic * magic;
    		double sqrtMagic = Math.sqrt(magic);
    		dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
    		dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
    		double mgLat = lat + dLat;
    		double mgLon = lon + dLon;
    
    		return new Gps(mgLat, mgLon);
    	}
    
    	private static double transformLat(double x, double y)
    	{
    		double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
    		ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
    		ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
    		ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
    		return ret;
    	}
    
    	private static double transformLon(double x, double y)
    	{
    		double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
    		ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
    		ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
    		ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
    		return ret;
    	}
    
    }
    
    package position;
    
    public class Gps
    {
    
    	private double wgLat;
    	private double wgLon;
    
    	public Gps(double wgLat, double wgLon)
    	{
    		setWgLat(wgLat);
    		setWgLon(wgLon);
    	}
    
    	public double getWgLat()
    	{
    		return wgLat;
    	}
    
    	public void setWgLat(double wgLat)
    	{
    		this.wgLat = wgLat;
    	}
    
    	public double getWgLon()
    	{
    		return wgLon;
    	}
    
    	public void setWgLon(double wgLon)
    	{
    		this.wgLon = wgLon;
    	}
    
    	@Override
    	public String toString()
    	{
    		return wgLat + "," + wgLon;
    	}
    
    }
    


    
    


    展开全文
  • WGS-84坐标系是目前最通用的标准地理坐标系,平实我们常说的经纬度、从GPS设备、智能手机中取出的数据的坐标系、国际地图提供商使用的坐标系都是WGS84坐标系。 WGS-84坐标系(World Geodetic System)是一种国际上...
  • 目前国际上最通用的标准是WGS84坐标系,我国当前最新的标准是国家大地坐标系(CSCS2000),CSCS2000与WGS84相差几厘米,对于一般的工程测量,可以认为两者是一致的。 2. 投影坐标系 投影坐标系统(Projection ...
  • * WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, * 谷歌地图采用的是WGS84地理坐标系(中国范围除外); * GCJ02坐标系:即火星坐标系,是由...
  • 文章目录一、简介1.1 ECEF坐标系1.2 WGS-84坐标1.3 东北天坐标系(ENU)二、坐标系间的转换2.1 LLA坐标系转ECEF坐标系2.2 ECEF坐标系转LLA坐标系2.3 ECEF坐标系转ENU坐标系2.4 ENU坐标系转ECEF坐标系2.5 LLA坐标系...
  • 百度米制坐标转WGS84/火星经纬度坐标,BD02(火星坐标系)/WGS84百米制转换
  • WGS-84坐标系转GCJ02坐标系

    千次阅读 2020-01-15 15:13:49
    WGS-84坐标系转GCJ02坐标系 ...WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。 谷歌地图采用的是WGS84地理坐标系(中国范围除外); GCJ02...
  • 国际坐标系 WGS-84:地心坐标系,国际通用。应用:Googole Map 火星坐标系 GCJ-02:由中国×××(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。应用:高德地图 百度坐标系 BD-09...
  • 1.由于ARCGIS中没有高斯3度带投影,所以需要我们自己定义高斯3度带投影坐标系(此处以北京例),并保存 PS:三度带投影,中央经线选取时需要根据当地经度就近选择中央经线。高斯3度中央...
  • 各种经纬度坐标系转换-百度坐标系、火星坐标系、国际坐标系 WGS84:国际坐标系,一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。 GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息...
  • GCJ-02坐标:中国国内使用的经纬度坐标系(火星坐标系),是经过WGS-84坐标系换算得到的,比如WGS-84坐标系经纬度为45°30’ 20在火星坐标系下对应的就是45+30/60+20/3600。 BD-09坐标:百度地图特有坐标系,在...
  • # * WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, # * 谷歌地图采用的是WGS84地理坐标系(中国范围除外); # * GCJ02坐标系:即火星坐标系,是...
  • 1坐标转换简介 坐标系统之间的坐标转换既包括不同的参心坐标之间的转换,或者不同的地心坐标系之间的转换,也包括参心坐标系与地心坐标系之间的转换以及相同坐标系的直角坐标与大地坐标之间的坐标转换,还有大地...
  • 支持GPS WGS84 国家2000 西安80 北京54坐标系的大地、经纬度坐标和平面坐标之间的转换,换带计算,不同坐标系之间的7参数、4参数转换 注意:运行时,杀毒软件可能会提示存在木马,这是授权机制引起的,请忽略,或者...
  • 在线坐标系经纬度转换工具

    万次阅读 2019-10-26 22:11:49
    本工具可以转换国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)。 工具链接:http://www.atoolbox.net/Tool.php?Id=838 互联网地图的坐标系现状 地球...
  • 百度Place API 的一点解释...gcj_02 转换为wgs84的原理 地理坐标的加密存在局限性。 因为: 地理坐标是连续的(空间的本质) 加密后的地理坐标是连续的(地图的本质) 加密函数是连续的(地图的本质) 如果假设加密函...
  • WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地理坐标系(中国范围除外); GCJ02坐标系:即火星坐标系,是由中国国家测绘...
  • 2. WGS84坐标系GPS全球定位系统的使用而建立的坐标系统。 3. 国测局坐标(GCJ02,又称火星坐标)是在WGS84坐标的基础上进行了加密,简单理解就是国测局坐标相对于WGS84坐标有一定偏移。 4. 百度坐标(BD09)又...
  • WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地理坐标系(中国范围除外); GCJ02坐标系:即火星坐标系,是由中国国家测绘...
  • 坐标转换转载来源:...设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,最基础的坐标,谷歌地图在非中国地区使用的坐标系 GPS/谷歌地图卫星 GCJ02 火星坐标系,是由中国国...
  • WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。 谷歌地图采用的是WGS84地理坐标系(中国范围除外); GCJ02坐标系:即火星坐标系,是由中国国家...
  • WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, 谷歌地图采用的是WGS84地理坐标系(中国范围除外); * GCJ02坐标系:即火星坐标系,是由中国...
  • 我国地图采用的是北京1954或西安1980坐标系下的高斯投影坐标(x,y),也有采用北京1954或西安1980坐标系下的经纬度坐标(B,L),高程一般海拔高度; 世界大地坐标系是美国国防部制图局(Defence Mapping Age...
  • 坐标系统之间的坐标转换既包括不同的参心坐标之间的转换,或者不同的地心坐标系之间的转换,也包括参心坐标系与地心坐标系之间的转换以及相同坐标系的直角坐标与大地坐标之间的坐标转换,还有大地坐标与高斯平面坐标...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 194
精华内容 77
关键字:

wgs84坐标系转换为经纬度