高德API 经纬度转换地市区县(含读取文件)

本文章适合初学小白,步骤如下:

  • 步骤一:
    先申请一个高德API服务key
    https://console.amap.com/dev/key/app

生成key完成后,接着步骤二

  • 步骤二:
    读取csv文件,如图所示:
@Setter
@Getter
@NoArgsConstructorpublic class CsvFileUtil {private String[] headers;private char seperator = ',';public List<String> readCsvFile(String filePath){List<String> dataList = new ArrayList<String>();try {ArrayList<String[]> csvList = new ArrayList<String[]>();CsvReader reader = new CsvReader(filePath,',', Charset.forName("GBK"));reader.readHeaders(); //跳过表头,不跳可以注释掉while(reader.readRecord()){csvList.add(reader.getValues()); //按行读取,并把每一行的数据添加到list集合}reader.close();System.out.println("读取的行数:"+csvList.size());for(int row=0;row<csvList.size();row++){String data = csvList.get(row)[0];System.out.println("-----------------");//打印每一行的数据
//                    for(int i=1 ; i <csvList.get(0).length; i++) {for(int i=1 ; i <2; i++) {// System.out.print(csvList.get(row)[i] + ",");data  += ","+csvList.get(row)[i];}dataList.add(data);System.out.println(dataList);}} catch (Exception e) {e.printStackTrace();}return dataList;}
}
  • 步骤三
    利用高德API经纬度转换详细地址

public class GaoDeMapUtil {private static final String HOSTARR = "http://restapi.amap.com/v3/geocode/regeo";private static final String HOST = "https://restapi.amap.com/v3/distance";private static final String KEY = "你的key";/*** 参数:经度,纬度***/public static String[] getLocationAddr(String location){List<NameValuePair> list = new LinkedList<NameValuePair>();list.add(new BasicNameValuePair("key", KEY));list.add(new BasicNameValuePair("output", "JSON"));list.add(new BasicNameValuePair("location", location));String responseEntity = null;String addr="";try {HttpGet httpGet = new HttpGet(new URIBuilder(HOSTARR).setParameters(list).build());httpGet.setConfig(RequestConfig.custom().setConnectTimeout(2000).build());HttpResponse response = HttpClients.createDefault().execute(httpGet);responseEntity = EntityUtils.toString(response.getEntity(), "UTF-8");JSONObject jsonObject = JSON.parseObject(responseEntity);System.out.println("JSONObject:" + jsonObject);addr=jsonObject.getJSONObject("regeocode").getString("formatted_address");int num = addr.indexOf('市');String addr1 = addr.substring(addr.indexOf("省") + 1,num+1);System.out.println("start:" + addr1);if(addr.contains("区")) {addr = addr.substring(addr.indexOf("省") + 1, addr.indexOf("区") + 1);addr1 = addr1 + "," + addr.substring(addr.indexOf('市')+1,addr.indexOf("区") + 1);}else if(addr.contains("县")){addr = addr.substring(addr.indexOf("省") + 1, addr.indexOf("县") + 1);addr1 = addr1 + "," + addr.substring(addr.indexOf('市')+1,addr.indexOf("县") + 1);}else{addr = addr.substring(addr.indexOf("省") + 1,  addr.lastIndexOf("市") + 1);addr1 = addr1 + "," + addr.substring(addr.indexOf('市')+1,addr.lastIndexOf("市") + 1);}location = location + "," + addr1;} catch (Exception e) {if (e instanceof ConnectTimeoutException) {System.out.println("-------请求超时-------");} else {e.printStackTrace();}}String[] log_latitude = location.split(",");for (int i = 0 ; i<log_latitude.length;i++){System.out.println("log_latitude:" + log_latitude[i]);}return log_latitude;}public static void main(String[] args) throws InterruptedException {String filePath = "E:\\city.csv";String path = "E:\\city1.csv";CsvFileUtil csvFileUtil = new CsvFileUtil();List<String[]> data = new ArrayList<String[]>();//System.out.println(csvFileUtil.readCsvFile(filePath));List<String> list = csvFileUtil.readCsvFile(filePath);for (int i =0; i<list.size(); i++){System.out.println(list.get(i));data.add(getLocationAddr(list.get(i)));}csvFileUtil.writeCSV(path,data);}}
  • 步骤四
    输出经纬度对应的地市区县
/*** 写入csv文件** @param path* @param content*/public  void writeCSV(String path, List<String[]> content){headers = new String[]{"经度","纬度","地市","区县"};CsvWriter csvWriter = new CsvWriter(path,seperator,Charset.forName("GBK"));//写表头和内容try {csvWriter.writeRecord(headers);for (int i = 0; i<content.size();i++){String[] line = content.get(i);csvWriter.writeRecord(line);}//关闭csWritercsvWriter.close();} catch (IOException e) {e.printStackTrace();System.out.println(e.getMessage());}}

最后的效果图,如下:


大功告成,这里提醒各位博友们,该代码仅支撑万级别的数据量,数据量过大的话时间会有些长哦,后续还有优化过后的代码,可支撑几十万以上的数据量!如有不足,请多多指教!

高德API 经纬度转换地市区县(含读取文件)相关推荐

  1. 百度地图与腾讯/高德地图经纬度转换

    //将腾讯/高德地图经纬度转换为百度地图经纬度 //将腾讯/高德地图经纬度转换为百度地图经纬度 function qqMapTransBMap(lng, lat) {let x_pi = 3.1415 ...

  2. 高德/百度经纬度转换

    //将腾讯/高德地图经纬度转换为百度地图经纬度 function qqMapTransBMap(lng, lat) {let x_pi = 3.14159265358979324 * 3000.0 / ...

  3. USERKEY_PLAT_NOMATCH——高德地图经纬度转换API使用报错

    根据不同的API需求,为应用添加相应的key 高德地图错误信息表--https://lbs.amap.com/api/wx/reference/errorcode/ 高德开放平台地址--https:/ ...

  4. java读取空格_java 读取文件路径空格和中文的处理

    应用部署时,发生文件读取错误,发现是部署路径中含有空格的文件夹名,然后把应用服务器位置迁移了. 从网上找到如下方案: 1, TestURL().class.getResource("&quo ...

  5. Shel读取文件转义符(\)丢失问题

    现有文件tmp.php,期望使用Shell输出原内容 <?php namespace api\v1; class Module extends \yii\base\Module {public ...

  6. 使用高德地图做经纬度转换( 把GPS 转高德的经纬度 )

    高德开发平台 JS API 官网 自定义经纬度转换 // 要先在页面中引入 WGS84_to_GCJ02.js 才能使用 WGS84_to_GCJ02() 方法 function GPSchange( ...

  7. Python中使用高德API实现经纬度转地名

    场景 高德API提供给开发者们一些常用功能的接口,其中有一种叫地理/逆地理编码能实现 地名查询经纬度和经纬度查地名. 实现 高德API平台: https://lbs.amap.com/ 注册并登陆 找 ...

  8. 腾讯地图api php经纬度转换地址,腾讯地图经纬度转换为百度地图经纬度

    ‍ 利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再‍利用百度地图api来获取详细 ...

  9. Python爬取链家网获取二手房数据并调用高德api获得经纬度

    链家网获得数据地址,高德api获得经纬度(同理链家网也可以换成其他58同城,赶集网的数据,因为反爬虫比较厉害,没时间整,就用链家网的数据先试试水) 首先爬链家网,Info包含一条信息 import j ...

最新文章

  1. linux uname 命令简介
  2. java 选择 颜色的控件_JavaFX颜色选择器(ColorPicker)
  3. python输出数据到excel-如何使用python将大量数据导出到Excel中的小技巧之一
  4. 运行npm update等命令出错后如何分析问题根源
  5. Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
  6. Objective-C 类和对象
  7. Java关键字:final、default、transient
  8. 小米盒子投屏+android,使用小米盒子手机投屏电视看村晚
  9. Exchange2010删除指定账户指定主题邮件
  10. google浏览器flash插件
  11. 图像的幅度谱与相位谱
  12. Python3.5爬取cbooo.cn数据并且同步到mysql中
  13. 什么是云计算,什么是网格计算,他们之间有什么区别
  14. Docker-设置redis容器主从模式哨兵模式
  15. 数学基础知识-排列与组合
  16. credssp(credssp加密数据库修正 server2016)
  17. Carson带你学Android:RxJava过滤操作符
  18. 数据库主键到底是用自增长(INT)好还是UUID好?
  19. 2020年华为杯第十七届中国研究生数学建模竞赛---回顾记录
  20. 计算机网络 -- RS232接口 ----OSI物理层协议----RS232接口

热门文章

  1. 序幕(计算机基础知识)
  2. cocos creator如何实现微信好友自定义转发分享功能
  3. nginx 服务器大文件上传时500错误
  4. 在KubeSphere中部署微服务(阡陌)+ DevOps
  5. 邮箱、微信号、手机号正则验证
  6. 关于win11 碍眼的主文件夹的有效删除办法
  7. OpenCV开发笔记(四十一):红胖子8分钟带你深入了解scharr滤波器算子边缘检测(图文并茂+浅显易懂+程序源码)
  8. 微信小程序-房屋设施图标
  9. 【战神引擎】修复物品叠加防刷又不影响叠加的使用的教程
  10. 【python学习笔记】关于python Flask前后端分离跨域问题