资源简介
地图坐标转换,火星、WGS84、BD09 火星、WGS84、BD09、GCJ02,地图坐标转换
代码片段和文件信息
package com.ncjk.bases.common.utils;
/**
* Created by CaiHB on 2015/11/2 15:31.
* E-mail:caihaobing@sina.cn
*/
public class CoordinateConvert {
/**
* 坐标转换程序
*
* WGS84坐标系:即地球坐标系,国际上通用的坐标系。Earth
*
* GCJ02坐标系:即火星坐标系,WGS84坐标系经加密后的坐标系。Mars
*
* BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系。 Bd09
*
* 搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。
*
* 百度地图API 百度坐标
* 腾讯搜搜地图API 火星坐标
* 搜狐搜狗地图API 搜狗坐标*
* 阿里云地图API 火星坐标
* 图吧MapBar地图API 图吧坐标
* 高德MapABC地图API 火星坐标
* 灵图51ditu地图API 火星坐标
*/
private static double PI = Math.PI;
private static double AXIS = 6378245.0; //
private static double OFFSET = 0.00669342162296594323; //(a^2 - b^2) / a^2
private static double X_PI = PI * 3000.0 / 180.0;
//GCJ-02=>BD09 火星坐标系=>百度坐标系
public static double[] gcj2BD09(double glat double glon) {
double x = glon;
double y = glat;
double[] latlon = new double[2];
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
double theta = Math.atan2(y x) + 0.000003 * Math.cos(x * X_PI);
latlon[0] = z * Math.sin(theta) + 0.006;
latlon[1] = z * Math.cos(theta) + 0.0065;
return latlon;
}
//BD09=>GCJ-02 百度坐标系=>火星坐标系
public static double[] bd092GCJ(double glat double glon) {
double x = glon - 0.0065;
double y = glat - 0.006;
double[] latlon = new double[2];
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
double theta = Math.atan2(y x) - 0.000003 * Math.cos(x * X_PI);
latlon[0] = z * Math.sin(theta);
latlon[1] = z * Math.cos(theta);
return latlon;
}
//BD09=>WGS84 百度坐标系=>地球坐标系
public static double[] bd092WGS(double glat double glon) {
double[] latlon = bd092GCJ(glat glon);
return gcj2WGS(latlon[0] latlon[1]);
}
// WGS84=》BD09 地球坐标系=>百度坐标系
public static double[] wgs2BD09(double wgLat double wgLon) {
double[] latlon = wgs2GCJ(wgLat wgLon);
return gcj2BD09(latlon[0] latlon[1]);
}
// WGS84=》GCJ02 地球坐标系=>火星坐标系
public static double[] wgs2GCJ(double wgLat double wgLon) {
double[] latlon = new double[2];
if (outOfChina(wgLat wgLon)) {
latlon[0] = wgLat;
latlon[1] = wgLon;
return latlon;
}
double[] deltaD = delta(wgLat wgLon);
latlon[0] = wgLat + deltaD[0];
latlon[1] = wgLon + deltaD[1];
return latlon;
}
//GCJ02=>WGS84 火星坐标系=>地球坐标系(粗略)
public static double[] gcj2WGS(double glat double glon) {
double[] latlon = new double[2];
if (outOfChina(glat glon)) {
latlon[0] = glat;
latlon[1] = glon;
return latlon;
}
double[] deltaD = delta(glat glon);
latlon[0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7260 2017-12-14 08:57 CoordinateConvert.java
- 上一篇:1588协议代码
- 下一篇:小烦通用搜索工具源码
评论
共有 条评论