爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4493|回复: 1

[数据转换] 将站点坐标GPS格式转换成百度坐标,用于根据百度地图制作的边界文件显示

[复制链接]

新浪微博达人勋

发表于 2017-9-13 19:41:53 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
接上一个帖子 :Surfer从百度地图获取百度坐标的高精度边界文件
http://bbs.06climate.com/forum.php?mod=viewthread&tid=54930&page=1#pid823814

从百度获取边界文件后,百度地图的坐标是经过加密的,不是真实的GPS坐标,需要将站点的坐标经纬度,处理后才能在百度地图显示。我是用java实现的,原理一样的。通过百度地图提供的坐标转换方法。
http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition(百度坐标转换API地址)感性趣可以自己简单看一下

具体接口为http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924;114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥


114.21892734521,29.575429778924;114.21892734521,29.575429778924 为GPS设备获取的角度坐标,wgs84坐标;


from=1&to=5的意思是将GPS坐标,转换为百度坐标。  ak=你的密钥  自己去百度地图API申请,每天转换坐标数量有限制,不过一个人用基本够,所以我就没将转换制作成程序接口供大家使用。只提供转换的思路。






调用这个地址后返回值为JSON:
{"status":0,"result":[{"x":114.23075330409,"y":29.579086747009},{"x":114.23075006432,"y":29.579082093809}]}


需要大家对这个JSON解析。


还需要说明的是,我手里的站点坐标是度、分、秒格式的,数据如下:精度 1232652  纬度:421903

需要处理成度的小数。

具体方法如下:
        private String changePiont(String jd) {
                          String jd_m = jd.substring(jd.length()-2,jd.length());
                          String jd_f = jd.substring(jd.length()-4,jd.length()-2);
                          String jd_d = jd.substring(0,jd.length()-4);
                          String jdz = (Double.parseDouble(jd_d)+Double.parseDouble(jd_f)/60+Double.parseDouble(jd_m)/3600)+"";
                          return jdz;
        }



我的坐标转换的思路是,将所有的站点信息从数据库中取出,然后一个一个转换。一起输出。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                  List <Station> slist = new JDBCService().getCiStationList();
                  for(Station s : slist) {
                          String jd = changePiont(s.getJd());
                          String wd = changePiont(s.getWd());
                          URL myURL = new URL("http://api.map.baidu.com/geoconv/v1/?coords="+jd+","+wd+"&from=1&to=5&ak=**********");
                          BufferedReader br = new BufferedReader(new InputStreamReader(myURL.openStream(),"UTF-8"));
                          String line = br.readLine();
                          JSONObject jo = JSONObject.parseObject(line);
                          JSONArray ja = jo.getJSONArray("result");
                          JSONObject stationjo = ja.getJSONObject(0);
                          String x = stationjo.getString("x");
                          String y =stationjo.getString("y");
                          s.setJd(x);
                          s.setWd(y);
                          System.out.println(x+","+y+","+"0"+","+s.getName()+","+s.getNum());
                  }
        }



输入结果如下:


1.png




我将的java源代码分享给大家。


Convertor.java (2.4 KB, 下载次数: 2)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-14 08:48:30 | 显示全部楼层
真牛   感谢分享!!!!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表