/ **

*百度坐标(BD09),国测局坐标(火星坐标,GCJ02)和WGS84坐标系之间的转换的工具

*

*参考https://github.com/wandergis/coordtransform实现的Java版本

* @作者feihong

* /

公共类CoordinateTransformUtil {

static double x_pi = 3.14159265358979324 * 3000.0 / 180.0 ;

// π

static double pi = 3.1415926535897932384626 ;

//长半轴

静态double a = 6378245.0 ;

//扁率

静态双 ee = 0.00669342162296594323 ;

/ **

*百度坐标系(BD-09)转WGS坐标

*

* @param lng百度坐标纬度

* @param lat百度坐标经度

* @返回 WGS84坐标数组

* /

public static double [] bd09towgs84(double lng,double lat){

double [] gcj = bd09togcj02(lng,lat);

double [] wgs84 = gcj02towgs84(gcj [ 0 ],gcj [ 1 ]);

返回 wgs​​84;

}

/ **

* WGS坐标转百度坐标系(BD-09)

*

* @param lng WGS84坐标系的经度

* @param lat WGS84坐标系的纬度

* @return百度坐标数组

* /

public static double [] wgs​​84tobd09(double lng,double lat){

double [] gcj = wgs​​84togcj02(lng,lat);

double [] bd09 = gcj02tobd09(gcj [ 0 ],gcj [ 1 ]);

返回 bd09;

}

/ **

*火星坐标系(GCJ-02)转百度坐标系(BD-09)

*

*谷歌,高德 - >百度

* @param lng火星坐标经度

* @param lat火星坐标纬度

* @return百度坐标数组

* /

public static double [] gcj02tobd09(double lng,double lat){

双 z = 数学。sqrt(lng * lng + lat * lat)+ 0.00002 * Math 。sin(lat * x_pi);

double theta = 数学。atan2(lat,lng)+ 0.000003 * Math 。cos(lng * x_pi);

double bd_lng = z * Math 。cos(θ)+ 0.0065 ;

double bd_lat = z * Math 。罪(THETA)+ 0.006 ;

返回新的double [] {bd_lng,bd_lat};

}

/ **

*百度坐标系(BD-09)转火星坐标系(GCJ-02)

*

*百度 - >谷歌,高德

* @param bd_lon百度坐标纬度

* @param bd_lat百度坐标经度

* @return火星坐标数组

* /

public static double [] bd09togcj02(double bd_lon,double bd_lat){

双 X = bd_lon - 0.0065 ;

double y = bd_lat - 0.006 ;

双 z = 数学。sqrt(x * x + y * y)- 0.00002 * Math 。sin(y * x_pi);

double theta = 数学。atan2(y,x)- 0.000003 * Math 。cos(x * x_pi);

double gg_lng = z * Math 。COS(THETA);

double gg_lat = z * Math 。罪(THETA);

返回新的double [] {gg_lng,gg_lat};

}

/ **

* WGS84转GCJ02(火星坐标系)

*

* @param lng WGS84坐标系的经度

* @param lat WGS84坐标系的纬度

* @return火星坐标数组

* /

public static double [] wgs​​84togcj02(double lng,double lat){

if(out_of_china(lng,lat)){

返回新的double [] {lng,lat};

}

double dlat = transformlat(lng - 105.0,lat - 35.0);

double dlng = transformlng(lng - 105.0,lat - 35.0);

double radlat = lat / 180.0 * pi;

双重魔法= 数学。罪(radlat);

魔法= 1 - EE *魔*魔;

double sqrtmagic = Math 。SQRT(魔术);

dlat =(dlat * 180.0)/((a *(1 - ee))/(magic * sqrtmagic)* pi);

DLNG =(DLNG * 180.0)/(A / sqrtmagic * 数学。 COS(radlat)* PI);

double mglat = lat + dlat;

双 mglng = lng + dlng;

返回新的double [] {m​​glng,mglat};

}

/ **

* GCJ02(火星坐标系)转GPS84

*

* @param lng火星坐标系的经度

* @param lat火星坐标系纬度

* @返回 WGS84坐标数组

* /

public static double [] gcj02towgs84(double lng,double lat){

if(out_of_china(lng,lat)){

返回新的double [] {lng,lat};

}

double dlat = transformlat(lng - 105.0,lat - 35.0);

double dlng = transformlng(lng - 105.0,lat - 35.0);

double radlat = lat / 180.0 * pi;

双重魔法= 数学。罪(radlat);

魔法= 1 - EE *魔*魔;

double sqrtmagic = Math 。SQRT(魔术);

dlat =(dlat * 180.0)/((a *(1 - ee))/(magic * sqrtmagic)* pi);

DLNG =(DLNG * 180.0)/(A / sqrtmagic * 数学。 COS(radlat)* PI);

double mglat = lat + dlat;

双 mglng = lng + dlng;

返回新的double [] {lng * 2 - mglng,lat * 2 - mglat};

}

/ **

*纬度转换

*

* @param lng

* @param lat

* @返回

* /

public static double transformlat(double lng,double lat){

double ret = - 100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math 。SQRT(数学。 ABS(LNG));

RET + =(20.0 * 数学。 SIN(6.0 * LNG * PI)+ 20.0 * 数学。 SIN(2.0 * LNG * PI))* 2.0 / 3.0 ;

RET + =(20.0 * 数学。罪(LAT * PI)+ 40.0 * 数学。罪(LAT / 3.0 * PI))* 2.0 / 3.0 ;

RET + =(160.0 * 数学。罪(LAT / 12.0 * PI)+ 320 * 数学。罪(LAT * PI / 30.0))* 2.0 / 3.0 ;

返回 ret;

}

/ **

*经度转换

*

* @param lng

* @param lat

* @返回

* /

public static double transformlng(double lng,double lat){

double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math 。SQRT(数学。 ABS(LNG));

RET + =(20.0 * 数学。 SIN(6.0 * LNG * PI)+ 20.0 * 数学。 SIN(2.0 * LNG * PI))* 2.0 / 3.0 ;

RET + =(20.0 * 数学。罪(LNG * PI)+ 40.0 * 数学。罪(LNG / 3.0 * PI))* 2.0 / 3.0 ;

RET + =(150.0 * 数学。罪(LNG / 12.0 * PI)+ 300.0 * 数学。罪(LNG / 30.0 * PI))* 2.0 / 3.0 ;

返回 ret;

}

/ **

*判断是否在国内,不在国内不做偏移

*

* @param lng

* @param lat

* @返回

* /

public static boolean out_of_china(double lng,double lat){

如果(lng < 72.004 || lng > 137.8347){

返回true ;

} else if(lat < 0.8293 || lat > 55.8271){

返回true ;

}

返回false ;

}

}

php高德地图与百度地图转换,高德地图百度地图坐标相互转换相关推荐

  1. python实现坐标系转换_(数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换...

    importmathclassLngLatTransfer():def __init__(self): self.x_pi= 3.14159265358979324 * 3000.0 / 180.0s ...

  2. python读取数据文件、并把里面的数据变成x的二维坐标_(数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换...

    importmathclassLngLatTransfer():def __init__(self): self.x_pi= 3.14159265358979324 * 3000.0 / 180.0s ...

  3. 腾讯地图api php经纬度转换地址,腾讯地图经纬度转换为百度地图经纬度

    ‍ 利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再‍利用百度地图api来获取详细 ...

  4. python利用百度/高德地图获取地理位置并转换

    提示:作者原创,转载请注明 文章目录 一.地理编码与逆编码 二.高德地图地理编码 三.百度地图地理编码 四.坐标转换和空间化 一.地理编码与逆编码 地理编码与逆编码表示的是地名地址与地理坐标(经纬度) ...

  5. 百度地图和高德地图坐标系的互相转换

    原文地址:http://blog.csdn.net/a13570320979/article/details/51366355 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1 ...

  6. android 高德地图移动卡顿_高德地图4.8和百度地图3.1的抉择,如何发送地址到车机(下载失效本帖奉上百度云盘)...

    9月已经过去半个月了,升级一直围绕着领克车友,8月的兴奋,总想知道车机有什么改变,很多车友提前去预约,总想尝第一口鲜,这个第一口可不好喝,头啖汤随好,但会烫口,于是我带着观望的态度,因为我始终觉得,安 ...

  7. 百度地图经纬度转腾讯/高德

    前言:当百度的经纬度用在腾讯或高德地图中时,会出现误差,所以需要将经纬度进行转换. /*** @desc 百度转腾讯/高德* @param {number} lng - 百度地图经度* @param ...

  8. 我们是低估了百度地图,还是高估了高德?

    十六年前,地图是一张散发着墨香的纸,载满异国他乡的回忆:十六年后,地图是手机里能说会道的软件,指向日异月殊的新生活. 如今,电子地图已经成为我们日常生活中不可或缺的一部分,无论是开车还是乘坐公共交通都 ...

  9. 基本农田卫星地图查询_#重庆朝天门#谷歌百度腾讯高德“卫星地图”PK,谷歌更胜一筹...

    截图自便民查询网,各家卫星地图PK,各有千秋~ 谷歌精确度最高:5m,来福士修建中,嘉陵江是绿的,长江是黄的.两江交汇处有一条分明的界线. 谷歌 5m:20ft 谷歌 50m:100ft 谷歌 200 ...

  10. android启动百度地图应用并开始导航,android打开外部地图导航(百度、高德、腾讯)...

    外部打开百度地图进行导航: /*** 打开百度地图*@paramslat开始地点 维度*@paramslon开始地点 经度*@paramsname开始地点 名字*@paramdlat终点地点 维度*@ ...

最新文章

  1. Java自带的常用工具
  2. Hyperledger Fabric 核心模块(6)Fabric-ca-server
  3. Python基础教程:copy()和deepcopy()
  4. leetcode597. 好友申请 I :总体通过率(SQL)
  5. 13 - java包装类
  6. 薪酬与工作满意度大调查:数据科学家还是21世纪最性感的职业吗?
  7. win7 搭建 caffe 以及 python 接口配置
  8. 调用百度音频,文字转音频
  9. 在计算机rwn代表,基于改进和RWn-SVM的化工过程故障快速诊断.pdf
  10. 【数据结构(C语言)】数据结构-内部排序
  11. 空值的日期类型和update 中的null
  12. 微信群管理机器人php,一个人管理微信群太累,试试可以自动管群微信机器人
  13. IOS开发把汉字转换成拼音的两种方法和返回拼音首字母
  14. 什么是rundll32.exe,为什么运行?
  15. Java常用类--java.lang.StringBuilder
  16. 日记app(1.0)进展报告
  17. 关于SimpleDateFormat日期格式与字符串、时间戳之间的转换
  18. 图片旋转90度解决的方法
  19. 常见的SQL面试题: 经典50题
  20. 美团、飞猪基础架构组实习经历分享

热门文章

  1. 油价上涨后,「两轮电动车」还是没有找到正确的出路?
  2. 拼多多狂砸百亿补贴的iphone是真的吗?
  3. 阿里云对象存储OSS费用内容的说明
  4. hdu-6287-口算训练
  5. 如何求地球上两点之间的最短距离_高中数学“最实在”的蒙题技巧,让高中数学短时间内突破120分...
  6. 谷歌浏览器 无法翻译此网页的解决方法
  7. 多组两两比较用什么检验方法_方差分析中两两多重比较方法的含义及如何正确选择...
  8. 河北化工医药职业技术学院学计算机怎么样,河北化工医药职业技术学院宿舍条件怎么样 男生女生宿舍图片...
  9. mac下读取ntfs
  10. 企业盈利能力五大指标之:毛利率