标准坐标系经纬度转百度火星坐标系经纬度,代码如下:

package com.qwrt.fire.sensor.util;/*** Created by jack on 2018/4/27.* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的互转*/
public class GPSUtil {public static double pi = 3.1415926535897932384626;public static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;public static double a = 6378245.0;public static double ee = 0.00669342162296594323;public 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;}public 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;}public static double[] transform(double lat, double lon) {if (outOfChina(lat, lon)) {return new double[]{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 double[]{mgLat,mgLon};}public 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;}/*** 84 to 火星坐标系 (GCJ-02) World Geodetic System ==> Mars Geodetic System** @param lat* @param lon* @return*/public static double[] gps84_To_Gcj02(double lat, double lon) {if (outOfChina(lat, lon)) {return new double[]{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 double[]{mgLat, mgLon};}/*** * 火星坐标系 (GCJ-02) to 84 * * @param lon * @param lat * @return* */public static double[] gcj02_To_Gps84(double lat, double lon) {double[] gps = transform(lat, lon);double lontitude = lon * 2 - gps[1];double latitude = lat * 2 - gps[0];return new double[]{latitude, lontitude};}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标** @param lat* @param lon*/public static double[] gcj02_To_Bd09(double lat, double lon) {double x = lon, y = lat;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);double tempLon = z * Math.cos(theta) + 0.0065;double tempLat = z * Math.sin(theta) + 0.006;double[] gps = {tempLat,tempLon};return gps;}/*** * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 * * 将 BD-09 坐标转换成GCJ-02 坐标 * * @param* bd_lat * @param bd_lon * @return*/public static double[] bd09_To_Gcj02(double lat, double lon) {double x = lon - 0.0065, y = lat - 0.006;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);double tempLon = z * Math.cos(theta);double tempLat = z * Math.sin(theta);double[] gps = {tempLat,tempLon};return gps;}/**将gps84转为bd09* @param lat* @param lon* @return*/public static double[] gps84_To_bd09(double lat,double lon){double[] gcj02 = gps84_To_Gcj02(lat,lon);double[] bd09 = gcj02_To_Bd09(gcj02[0],gcj02[1]);return bd09;}public static double[] bd09_To_gps84(double lat,double lon){double[] gcj02 = bd09_To_Gcj02(lat, lon);double[] gps84 = gcj02_To_Gps84(gcj02[0], gcj02[1]);//保留小数点后六位gps84[0] = retain6(gps84[0]);gps84[1] = retain6(gps84[1]);return gps84;}/**保留小数点后六位* @param num* @return*/private static double retain6(double num){String result = String .format("%.6f", num);return Double.valueOf(result);}
}

标准坐标系经纬度转百度火星坐标系经纬度相关推荐

  1. GPS坐标系转换(标准坐标系WGS84转GCJ-02火星坐标系)

    GPS坐标系转换(标准坐标系WGS84转GCJ-02火星坐标系) 坐标系简介 WGS-84 标准坐标系 GCJ-02 - 国测局坐标 BD-09 - 百度坐标系 干货前的说明 WGS84转GCJ-02 ...

  2. java gps转高德坐标_GPS 经纬度转换 百度、高德经纬度

    package com.ldygo.gw.gpsobd.utils; public class ECGeoCoordinateTransformUtil { static double x_pi = ...

  3. 各种经纬度坐标系转换-百度坐标系、火星坐标系、国际坐标系

    各种经纬度坐标系转换-百度坐标系.火星坐标系.国际坐标系 (文章代码参考网上 测试没什么问题, 汇总整理希望对大家有帮助-dou )WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全 ...

  4. 地球坐标系,火星坐标系,百度坐标系

    地球坐标系--WGS84:常见于 GPS 设备,Google 地图等国际标准的坐标体系. 火星坐标系--GCJ-02:中国国内使用的被强制加密后的坐标体系,高德坐标就属于该种坐标体系. 百度坐标系-- ...

  5. WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)

    在做基于百度地图.高德地图等电子地图做为地图服务的二次开发时,通常需要将具有WGS84等坐标的矢量数据(如行政区划.地名.河流.道路等GIS地理空间数据)添加到地图上面,然而,在线地图大多使用的是火星 ...

  6. 【转载】关于GCJ-02(火星坐标系)的种种

    笔者最近在做实验室的项目,在接触过程中了解到GCJ坐标系,此前在知乎看到一篇比较通俗易懂的文章,这里转载过来做分享!!同时本文也探讨了火星系统坐标! **下面步入正文吧→→ 知乎连接在这里哟:点我点我 ...

  7. 小程序火星坐标系 (GCJ-02) 转百度坐标系 (BD-09)和经纬度转度分秒格式

    酸狗先带大家看看效果: 地图咋实现的就不写了小程序的map的API写的很清楚,主要看下转百度经纬度,想是uniapp搭建的,为啥用uniapp,以为不想用小程序开发工具~ 获取下经纬度然后把经纬度存起 ...

  8. android 地球坐标 火星坐标系,Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差...

    Android LBS地图开发基础知识之地球地理GPS坐标系经纬度偏移偏差 通常,我们所说的地球地理经纬度是WGS-84坐标系(World Geodetic System-1984 Coordinat ...

  9. 标准坐标系与火星坐标系(高德)百度坐标系之间互转

    这里先给大家介绍几个坐标系: 1.WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系. 2.GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐 ...

最新文章

  1. mysql-innodb 日志机制分析----写在死锁前面
  2. Linux进程控制——exec函数族
  3. oracle分组排序
  4. boost::multi_index模块实现复杂搜索和外键相关的测试程序
  5. 大数据集群部署时ssh的公钥和似钥作用汇总
  6. Java JDBC篇4——数据库连接池
  7. windows10中git-bash闪退的解决办法
  8. ClickHouse安装部署与SQL实战
  9. Bailian4033 铺地毯【暴力】
  10. 零基础python入门-零基础 Python 入门
  11. 3个方法解决百度网盘限速
  12. vue2学生签到管理系统案例
  13. OpenCV-识别细胞图中的细胞总数
  14. RRC协议学习—系统信息(SI)
  15. 数据仓库(二) 数仓理论(重点核心)
  16. 【看表情包学Linux】插叙:实现简易的 Shell | 通过内建命令实现路径切换 | 再次理解环境变量
  17. 《Python程序设计》实验四 Python综合实践实验报告
  18. 某里某淘bx-ua逆向解密
  19. Linux进程通信——匿名管道、命名管道、管道的特性和共享内存
  20. 【STM32】USART接收不定长数据、防止数据溢出

热门文章

  1. hdfs中acl权限管理的简单实用
  2. 软件测试的W模型和V模型
  3. C语言编程:扑克牌魔术
  4. 商城网站的产品介绍页面应该如何设计
  5. js中双感叹号_JavaScript中双叹号!!作用示例介绍
  6. 华视伟业工业级传输设备 千兆4光8电交换机详细参数
  7. HP NS 1005W 脱机,解决办法
  8. oracle的考试题全英文,2018下半年英语四级考试翻译试题:甲骨文
  9. Python在字符串中查找子字符串
  10. 深入浅出matplotlib(38):动画显示与MP4视频输出