GPS设备获取的坐标转换成百度或者高德坐标
JSON文件数据格式如上,用底下的转换工具类即可完成转换,直接上代码
import com.fasterxml.jackson.databind.ObjectMapper; import com.zc.smartcity.ZtfServerApplicationTests; import com.zc.smartcity.util.io.ReadHelper; import org.apache.commons.io.IOUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
public class ExchangeGeo {ObjectMapper objMap = new ObjectMapper(); //记录转换总数 int i = 0; //要读的文件名,文件放在当前包下的resource文件夹下 private String fileName = "tsjd.json"; //输出路径文件 private String outFileSrc = "E:/tsjd.json"; //geoNo 1: 转换高德 2: 转换百度 int geoNo = 1; /** * 读取Json 文件 */ @Test public void readJsonText() {// 读取原始json文件并进行操作和输出 InputStream in = ReadHelper.getResourceAsStream(fileName); FileWriter writer; try {String inStr = IOUtils.toString(in); Map map = objMap.readValue(inStr, Map.class); //获取features 节点集合 List<Map> featuresMap = (ArrayList) map.get("features"); for (int i = 0; i < featuresMap.size(); i++) {//解析geometry节点下的coordinates点坐标 Map geometryMap = (HashMap) featuresMap.get(i).get("geometry"); List<ArrayList> coordinates = (ArrayList) geometryMap.get("coordinates"); for (int j = 0; j < coordinates.size(); j++) {for (int k = 0; k < coordinates.get(j).size(); k++) {List ll = (ArrayList) coordinates.get(j).get(k); String geo = ll.get(0).toString() + "," +ll.get(1).toString(); String[] exchange = getExchangeGeo(geo, geoNo); ll.remove(0); ll.remove(0); ll.add(exchange[0]); ll.add(exchange[1]); }}//解析properties节点 if (featuresMap.get(i).get("properties") != null) {Map propertiesMap = (HashMap) featuresMap.get(i).get("properties"); String CENTER_X = propertiesMap.get("CENTER_X").toString(); String CENTER_Y = propertiesMap.get("CENTER_Y").toString(); String geo2 = CENTER_X + "," + CENTER_Y; String[] exchange = getExchangeGeo(geo2, geoNo); propertiesMap.put("CENTER_X", exchange[0]); propertiesMap.put("CENTER_Y", exchange[1]); }}String write = objMap.writeValueAsString(map); writer = new FileWriter(outFileSrc); writer.write(write); writer.flush(); writer.close(); System.out.println(write); } catch (IOException e) {e.printStackTrace(); }}public String[] getExchangeGeo(String geo, int getNo) {String gaode = "http://restapi.amap.com/v3/assistant/coordinate/convert?coordsys=gps&output=json&key=1aed248ea252089beb3c5849a200729f&locations=" +geo; String baidu ="http://api.map.baidu.com/geoconv/v1/?from=1&to=5&ak=ksED9LPja0IdvTA3n7WK2p8cyDCfg6uk&coords=" + geo; /** 百度转换参数说明: *from 源坐标类型: 1:GPS设备获取的角度坐标,wgs84坐标; 2:GPS获取的米制坐标、sogou地图所用坐标; 3:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标,国测局(gcj02)坐标; 4:3中列表地图坐标对应的米制坐标; 5:百度地图采用的经纬度坐标; 6:百度地图采用的米制坐标; 7:mapbar地图坐标; 8:51地图坐标 int 1 1 否 to 目标坐标类型: 3:国测局(gcj02)坐标; 4:3中对应的米制坐标; 5:bd09ll(百度经纬度坐标); 6:bd09mc(百度米制经纬度坐标) int 5 5 否 */ String GET_URL; if (getNo == 1) {GET_URL = gaode; } else {GET_URL = baidu; }String outStr = null; StringBuilder sb = new StringBuilder(); Boolean flag = true; while (flag) {try {URL url = new URL(GET_URL); // 把字符串转换为URL请求地址 HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接 connection.connect();// 连接会话 // 获取输入流 BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; while ((line = br.readLine()) != null) {// 循环读取流 sb.append(line); }br.close();// 关闭流 connection.disconnect();// 断开连接 System.out.println("num:" + i + sb.toString()); i++; flag = false; break; } catch (Exception e) {e.printStackTrace(); System.out.println("失败!"); }}//String 转Map try {Map map = objMap.readValue(sb.toString(), Map.class); if (getNo == 1) {outStr = map.get("locations").toString(); }if (getNo == 2) {List list = (ArrayList) map.get("result"); Map geoMap = new HashMap(); for (int j = 0; j < list.size(); j++) {geoMap = (HashMap) list.get(j); }outStr = geoMap.get("x").toString() + "," + geoMap.get("y").toString(); }} catch (IOException e) {e.printStackTrace(); }String[] outStrArr = outStr.split(","); return outStrArr; }}
下面为上面读取文件变成流用到的方法
/** * * 读取CLASSPATH路径的文件 * * @param strResource * CLASSPATH路径 * @return 文件流 */ public static InputStream getResourceAsStream(String strResource) {InputStream is = null; URL url = Thread.currentThread().getContextClassLoader().getResource(strResource); if (null != url) {is = Thread.currentThread().getContextClassLoader().getResourceAsStream(strResource); } else {is = Thread.currentThread().getContextClassLoader().getResourceAsStream("../" + strResource); }if (null == is) {is = ClassLoader.getSystemResourceAsStream(strResource); }if (is == null) {is = Environment.class.getResourceAsStream(strResource); }if (is == null) {is = Environment.class.getClassLoader().getResourceAsStream(strResource); }if (is == null) {try {is = new FileInputStream(strResource); } catch (FileNotFoundException e) {e.printStackTrace(); }}return is; }
GPS设备获取的坐标转换成百度或者高德坐标相关推荐
- 由GPS定位的经纬度转换成百度地图经纬度坐标
/** * @Description: 各地图API坐标系统比较与转换; WGS84坐标系:即地球坐标系,国际上通用的坐标系.设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, ...
- 将火星坐标转换成百度坐标
由于XX机票的项目,要用到酒店坐标定位,但是呢,服务器提供的坐标是高德 坐标,但是考虑到百度地图用的比较熟悉了,所以考虑将高德坐标转换成百度坐标来做. 以下介绍部分的内容转载自:http://blog ...
- GPS、谷歌、百度、高德坐标相互转换
GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始 ...
- threejs 将屏幕坐标转换成3d中的坐标。
将当前屏幕上的坐标转换成3d中的坐标pos 是当前canvas屏幕上的坐标,targetZ 是物体距离原点的距离 private get3DPosByCanvasPos (pos: THREE.Vec ...
- oracle wgs gcj,坐标转换,百度、高德、GCJ、WGS84等转换
坐标转换,网上的,百度.高德.GCJ.WGS84..转换,不啰嗦,直接上代码,这种转换网上很多!最近几年一直在用这个,很不错. class GPSTransformation{ constructor ...
- 火星坐标转换成百度坐标
前段时间开始接触百度地图,在业务需求的过程中会使用到导航的功能,给定一个目的地坐标,然后通过查找用户手机内已安装的地图导航软件进行导航,所以往往会遇到一个问题,你不可能确定每一个用户都会安装或使用百度 ...
- uniapp APPH5端获取地理位置信息(百度地图高德地图)
APP&H5端获取地理位置信息 一.app端 1.在需要使用的页面中 onShow(){//#ifdef APP-PLUS// 获取定位信息this.getLocations();//#end ...
- 经纬度坐标转换成px_知道经纬度坐标如何转换成 X Y坐标
地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标.向左.向下的规则. 屏幕坐标定义规则:X轴向右递增,Y轴向下递增.可以看出,地理坐标和屏幕坐标的区别仅仅只是 ...
- 坐标计算距离公式 火星坐标系_根据经纬度计算距离的公式、百度坐标转换成GPS坐标(PHP版)...
//百度坐标转换成GPS坐标 $lnglat = '121.437518,31.224665'; function FromBaiduToGpsXY($lnglat){ // 经度,纬度 $lngla ...
- 经由过程百度地图API,将百度坐标转换成GPS经纬度
百度地图API中,有GPS坐标转百度坐标的功能 http://dev.baidu.com/wiki/static/map/API/examples/?v=1.2&0_6#0&6 htt ...
最新文章
- 如果企业网站长时间没有排名可以从多个方面进行分析
- 值转换器IValueConverter
- hal库选择滴答时钟函数_STM32入门 : HAL库、标准外设库、LL库
- simulink设计PID控制器及其封装详解
- java中的this什么作用
- Nginx负载均衡状态之down
- 疯狂html5+css3+javascript讲义 pdf_成为一名优秀的HTML5前端工程师需要掌握哪些技能?...
- 阿里开始招聘.NET,要求WPF!
- HTML fieldset控件
- golang | 使用结构体抄的学生信息管理系统
- 创建django项目,8月版本
- poj 2594 Treasure Exploration 最小路径覆盖
- Python网络爬虫与信息提取 - requests库入门
- CREO:CREO软件之零件【模型】之操作、基准、形状、扫描、工程、编辑、曲面的简介及其使用方法(图文教程)之详细攻略
- 英语词根词缀+联想法记忆单词
- centos8 yum源配置
- 史上最全iPhone分辨率和尺寸
- python数据分析就业市场调查报告
- 微软亚洲研究院2017年笔试编程题
- 无法打开虚拟磁盘服务器,win2008R2 修改了带有快照的父虚拟磁盘;导致启动不了...
热门文章
- 【软件测试工程师面试】分享一个面试题总结
- VEH,VCH,UEF Windows向量化异常处理机制详解
- 如何在微信中直接下载APK
- php是什么电器元件,电子元件TP是什么意思 如何封装tp的自定义标签,每个方法代表一个...
- 【nvidia】1.命令行方式安装nvidia显卡驱动
- 自动整理html书签,技巧:使用 Excel 快速整理重复书签丨Matrix 精选
- 先天八卦图的排列顺序,这样来解释您能接受吗?
- 全桥并网逆变器PLECS仿真
- 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密
- 设备巡检的痛点和巡检方案