- 积分
- 46
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-5-5
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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());
}
}
输入结果如下:
我将的java源代码分享给大家。
Convertor.java
(2.4 KB, 下载次数: 2)
|
|