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设备获取的坐标转换成百度或者高德坐标相关推荐

  1. 由GPS定位的经纬度转换成百度地图经纬度坐标

    /**  * @Description: 各地图API坐标系统比较与转换; WGS84坐标系:即地球坐标系,国际上通用的坐标系.设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, ...

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

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

  3. GPS、谷歌、百度、高德坐标相互转换

    GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始 ...

  4. threejs 将屏幕坐标转换成3d中的坐标。

    将当前屏幕上的坐标转换成3d中的坐标pos 是当前canvas屏幕上的坐标,targetZ 是物体距离原点的距离 private get3DPosByCanvasPos (pos: THREE.Vec ...

  5. oracle wgs gcj,坐标转换,百度、高德、GCJ、WGS84等转换

    坐标转换,网上的,百度.高德.GCJ.WGS84..转换,不啰嗦,直接上代码,这种转换网上很多!最近几年一直在用这个,很不错. class GPSTransformation{ constructor ...

  6. 火星坐标转换成百度坐标

    前段时间开始接触百度地图,在业务需求的过程中会使用到导航的功能,给定一个目的地坐标,然后通过查找用户手机内已安装的地图导航软件进行导航,所以往往会遇到一个问题,你不可能确定每一个用户都会安装或使用百度 ...

  7. uniapp APPH5端获取地理位置信息(百度地图高德地图)

    APP&H5端获取地理位置信息 一.app端 1.在需要使用的页面中 onShow(){//#ifdef APP-PLUS// 获取定位信息this.getLocations();//#end ...

  8. 经纬度坐标转换成px_知道经纬度坐标如何转换成 X Y坐标

    地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标.向左.向下的规则. 屏幕坐标定义规则:X轴向右递增,Y轴向下递增.可以看出,地理坐标和屏幕坐标的区别仅仅只是 ...

  9. 坐标计算距离公式 火星坐标系_根据经纬度计算距离的公式、百度坐标转换成GPS坐标(PHP版)...

    //百度坐标转换成GPS坐标 $lnglat = '121.437518,31.224665'; function FromBaiduToGpsXY($lnglat){ // 经度,纬度 $lngla ...

  10. 经由过程百度地图API,将百度坐标转换成GPS经纬度

    百度地图API中,有GPS坐标转百度坐标的功能 http://dev.baidu.com/wiki/static/map/API/examples/?v=1.2&0_6#0&6 htt ...

最新文章

  1. 如果企业网站长时间没有排名可以从多个方面进行分析
  2. 值转换器IValueConverter
  3. hal库选择滴答时钟函数_STM32入门 : HAL库、标准外设库、LL库
  4. simulink设计PID控制器及其封装详解
  5. java中的this什么作用
  6. Nginx负载均衡状态之down
  7. 疯狂html5+css3+javascript讲义 pdf_成为一名优秀的HTML5前端工程师需要掌握哪些技能?...
  8. 阿里开始招聘.NET,要求WPF!
  9. HTML fieldset控件
  10. golang | 使用结构体抄的学生信息管理系统
  11. 创建django项目,8月版本
  12. poj 2594 Treasure Exploration 最小路径覆盖
  13. Python网络爬虫与信息提取 - requests库入门
  14. CREO:CREO软件之零件【模型】之操作、基准、形状、扫描、工程、编辑、曲面的简介及其使用方法(图文教程)之详细攻略
  15. 英语词根词缀+联想法记忆单词
  16. centos8 yum源配置
  17. 史上最全iPhone分辨率和尺寸
  18. python数据分析就业市场调查报告
  19. 微软亚洲研究院2017年笔试编程题
  20. 无法打开虚拟磁盘服务器,win2008R2 修改了带有快照的父虚拟磁盘;导致启动不了...

热门文章

  1. 【软件测试工程师面试】分享一个面试题总结
  2. VEH,VCH,UEF Windows向量化异常处理机制详解
  3. 如何在微信中直接下载APK
  4. php是什么电器元件,电子元件TP是什么意思 如何封装tp的自定义标签,每个方法代表一个...
  5. 【nvidia】1.命令行方式安装nvidia显卡驱动
  6. 自动整理html书签,技巧:使用 Excel 快速整理重复书签丨Matrix 精选
  7. 先天八卦图的排列顺序,这样来解释您能接受吗?
  8. 全桥并网逆变器PLECS仿真
  9. 探真无阻塞加载javascript脚本技术,我们会发现很多意想不到的秘密
  10. 设备巡检的痛点和巡检方案