百度坐标反查地址:http://api.map.baidu.com/lbsapi/getpoint/

工具类如下:

import org.apache.commons.lang3.StringUtils;public class TransformPosUtils {private static double PI = Math.PI;private static double AXIS = 6378245.0;  //private static double OFFSET = 0.00669342162296594323;  //(a^2 - b^2) / a^2private static double X_PI = PI * 3000.0 / 180.0;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[] delta(double wgLat, double wgLon) {double[] latlng = new double[2];double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);double radLat = wgLat / 180.0 * PI;double magic = Math.sin(radLat);magic = 1 - OFFSET * magic * magic;double sqrtMagic = Math.sqrt(magic);dLat = (dLat * 180.0) / ((AXIS * (1 - OFFSET)) / (magic * sqrtMagic) * PI);dLon = (dLon * 180.0) / (AXIS / sqrtMagic * Math.cos(radLat) * PI);latlng[0] = dLat;latlng[1] = dLon;return latlng;}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;}//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;}// 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;}// WGS84=》BD09   地球坐标系=>百度坐标系public static double[] wgs2BD09(double wgLat, double wgLon) {double[] latlon = wgs2GCJ(wgLat, wgLon);return gcj2BD09(latlon[0], latlon[1]);}public static String transformPos(String jwd) {if (StringUtils.isNotEmpty(jwd) && (jwd.contains("°"))) {//如果不为空并且存在度单位//计算前进行数据处理jwd = jwd.replace("E", "").replace("N", "").replace(":", "").replace(":", "");double d = 0, m = 0, s = 0;d = Double.parseDouble(jwd.split("°")[0]);//不同单位的分,可扩展if (jwd.contains("′")) {//正常的′m = Double.parseDouble(jwd.split("°")[1].split("′")[0]);} else if (jwd.contains("'")) {//特殊的'm = Double.parseDouble(jwd.split("°")[1].split("'")[0]);}//不同单位的秒,可扩展if (jwd.contains("″")) {//正常的″//有时候没有分 如:112°10.25″s = jwd.contains("′") ? Double.parseDouble(jwd.split("′")[1].split("″")[0]) : Double.parseDouble(jwd.split("°")[1].split("″")[0]);} else if (jwd.contains("''")) {//特殊的''//有时候没有分 如:112°10.25''s = jwd.contains("'") ? Double.parseDouble(jwd.split("'")[1].split("''")[0]) : Double.parseDouble(jwd.split("°")[1].split("''")[0]);}jwd = String.valueOf(d + m / 60 + s / 60 / 60);//计算并转换为string//使用BigDecimal进行加减乘除/*BigDecimal bd = new BigDecimal("60");BigDecimal d = new BigDecimal(jwd.contains("°")?jwd.split("°")[0]:"0");BigDecimal m = new BigDecimal(jwd.contains("′")?jwd.split("°")[1].split("′")[0]:"0");BigDecimal s = new BigDecimal(jwd.contains("″")?jwd.split("′")[1].split("″")[0]:"0");//divide相除可能会报错(无限循环小数),要设置保留小数点jwd = String.valueOf(d.add(m.divide(bd,6,BigDecimal.ROUND_HALF_UP).add(s.divide(bd.multiply(bd),6,BigDecimal.ROUND_HALF_UP))));*/}return jwd;}public static double[] transformLatAndLng(String lat,String lng) {String sLat = transformPos(lat);String sLng = transformPos(lng);double[] doubles = wgs2BD09(Double.valueOf(sLat), Double.valueOf(sLng));//System.out.println(doubles[0] + "," + doubles[1]);return doubles;}public static void main(String[] args) {String latitude = "39564888";  //纬度String longitude = "116333641";double[] doubles = transformLatAndLng(StringUtils.substring(latitude, 0, 2) + "°" +StringUtils.substring(latitude, 2, 4) + "." + StringUtils.substring(latitude, 4, latitude.length()) + "′",StringUtils.substring(longitude, 0, 3) + "°" +StringUtils.substring(longitude, 3, 5) + "." + StringUtils.substring(longitude, 5, longitude.length()) + "′");System.out.println(doubles[0] + "," + doubles[1]);}
}

转换结果是小数点后十四位的百度经纬度,可以通过百度坐标反差网址,查出位置信息

【四二学堂】标准GPS坐标,转换成百度坐标相关推荐

  1. 标准分幅下的图幅号转换成经纬度坐标【原理+源代码】

    最近要批量的把标准分幅下的图幅号转换成经纬度坐标,所以这两天写了个程序来搞定这件事情. 先举个例子说明一下这个程序的作用. 例如:计算出图幅号I50G021040的经纬度范围,即最大经度.最小经度.最 ...

  2. 腾讯地图转换成百度地图坐标

    https://www.jianshu.com/p/0fe30fcd4ae7 一.各个坐标系的概况 众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则 ...

  3. python笛卡尔转换极坐标_[笛卡尔坐标转换极坐标]将1个公式从笛卡尔坐标转换成轴坐标...

    篇一 : 将1个公式从笛卡尔坐标转换成轴坐标 篇二 : 在Matlab图像处理中极坐标与直角坐标矩阵的转换 在用Matlab做图像处理的时候,经常需要使用一些基于极坐标系的公式,比如用Zernike函 ...

  4. SDUT-2132_数据结构实验之栈与队列二:一般算术表达式转换成后缀式

    数据结构实验之栈与队列二:一般算术表达式转换成后缀式 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 对于一个基于二元运 ...

  5. 地理坐标(经纬度)转换成投影坐标(XY坐标)

    前言:限于需求,项目中所有涉及到经纬度的字段都要转换成XY坐标,面向度娘之后发现都没有可用的,琢磨了之后在以为大佬博客中发现了宝藏 使用工具:Proj4 Proj4是一个JavaScript类库,其主 ...

  6. threejs-经纬度转换成xyz坐标的方法

    用threejs做3D应用时,很经常会接触到球状物体,比如说地球,要定义球上的一点,用经纬度是常用的办法.现在,我们要在北京这个地方标一个点,北京的坐标为--北纬39.9",东经116. 3 ...

  7. 如何将二维CAD的DWG转换成工程图模版

    一般从二维CAD图纸公司转换成三维平台的时候都会很必然的遇见个问题,我们原先的二维工程图模版能否导入到SolidWorks内当模版使用,一般大家可能嫌弃麻烦会重新制作并按照SolidWorks要去自定 ...

  8. 将火星坐标转换成百度坐标

    由于XX机票的项目,要用到酒店坐标定位,但是呢,服务器提供的坐标是高德 坐标,但是考虑到百度地图用的比较熟悉了,所以考虑将高德坐标转换成百度坐标来做. 以下介绍部分的内容转载自:http://blog ...

  9. 将3D坐标转成2D坐标的方法

    将3D坐标转成2D坐标的方法.3D坐标在Unity中称作World Space,2D坐标称作Screen Space, 是以pixel为基准,以iPad 1024 x 768(4:3)的解析度为例子: ...

最新文章

  1. AI服务器的设计与实现
  2. TCP三次握手与四次挥手
  3. jquery input值改变事件_前端技术--JQuery
  4. c++ windows下读取指定目录的所有文件名字
  5. appium的python教程_移动App Appium自动化测试教程Appium+Python 【2018年新】_IT教程网...
  6. 大学计算机上机实验指导与测试pdf,4大学计算机基础上机实验指导与习题--习题.pdf...
  7. 搭配购买(信息学奥赛一本通-T1387)
  8. windows PE 文件格式图(AI实现)
  9. ROS学习笔记(八): ROS通信架构
  10. 前端开发响应式布局和移动端布局有哪些特点和区别?
  11. SQL Server 日期转换格式
  12. python身份证验证系统_用python制作全国身份证号验证及查询系统
  13. 冒泡排序C语言代码 时间复杂度
  14. 前度字符串转数组_leetcode每日一题
  15. 第527篇-Prism学习系列3_Modularity
  16. 解决黑苹果和Windows双系统时,时钟不同步的问题
  17. win10配置lua环境
  18. 【php】php中call_user_func函数的用法
  19. [windows]远程桌面用户管理
  20. PCL点云库(Point Cloud Library)简介

热门文章

  1. 论文阅读(五):Review of Research on Task-Oriented Spoken Language Understanding
  2. 问题解决:Could not get a databaseId from dataSource
  3. 如何才能将企业现有的组织关系集成到jbpm中?
  4. 使用EFS加密windows文件
  5. 在chrome中f12控制自动刷新页面增加阅读量方法
  6. PhoneApp的启动过程
  7. fiddler证书生成ca证书命令及抓包配置
  8. Matlab中的正态分布概率函数
  9. 给LaTex输出的论文PDF加上电子签名
  10. 程序员离职后跳到国企,每天主动加班到10点,结果试用期没过?