高德API 经纬度转换地市区县(含读取文件)
高德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 经纬度转换地市区县(含读取文件)相关推荐
- 百度地图与腾讯/高德地图经纬度转换
//将腾讯/高德地图经纬度转换为百度地图经纬度 //将腾讯/高德地图经纬度转换为百度地图经纬度 function qqMapTransBMap(lng, lat) {let x_pi = 3.1415 ...
- 高德/百度经纬度转换
//将腾讯/高德地图经纬度转换为百度地图经纬度 function qqMapTransBMap(lng, lat) {let x_pi = 3.14159265358979324 * 3000.0 / ...
- USERKEY_PLAT_NOMATCH——高德地图经纬度转换API使用报错
根据不同的API需求,为应用添加相应的key 高德地图错误信息表--https://lbs.amap.com/api/wx/reference/errorcode/ 高德开放平台地址--https:/ ...
- java读取空格_java 读取文件路径空格和中文的处理
应用部署时,发生文件读取错误,发现是部署路径中含有空格的文件夹名,然后把应用服务器位置迁移了. 从网上找到如下方案: 1, TestURL().class.getResource("&quo ...
- Shel读取文件转义符(\)丢失问题
现有文件tmp.php,期望使用Shell输出原内容 <?php namespace api\v1; class Module extends \yii\base\Module {public ...
- 使用高德地图做经纬度转换( 把GPS 转高德的经纬度 )
高德开发平台 JS API 官网 自定义经纬度转换 // 要先在页面中引入 WGS84_to_GCJ02.js 才能使用 WGS84_to_GCJ02() 方法 function GPSchange( ...
- Python中使用高德API实现经纬度转地名
场景 高德API提供给开发者们一些常用功能的接口,其中有一种叫地理/逆地理编码能实现 地名查询经纬度和经纬度查地名. 实现 高德API平台: https://lbs.amap.com/ 注册并登陆 找 ...
- 腾讯地图api php经纬度转换地址,腾讯地图经纬度转换为百度地图经纬度
利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再利用百度地图api来获取详细 ...
- Python爬取链家网获取二手房数据并调用高德api获得经纬度
链家网获得数据地址,高德api获得经纬度(同理链家网也可以换成其他58同城,赶集网的数据,因为反爬虫比较厉害,没时间整,就用链家网的数据先试试水) 首先爬链家网,Info包含一条信息 import j ...
最新文章
- linux uname 命令简介
- java 选择 颜色的控件_JavaFX颜色选择器(ColorPicker)
- python输出数据到excel-如何使用python将大量数据导出到Excel中的小技巧之一
- 运行npm update等命令出错后如何分析问题根源
- Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
- Objective-C 类和对象
- Java关键字:final、default、transient
- 小米盒子投屏+android,使用小米盒子手机投屏电视看村晚
- Exchange2010删除指定账户指定主题邮件
- google浏览器flash插件
- 图像的幅度谱与相位谱
- Python3.5爬取cbooo.cn数据并且同步到mysql中
- 什么是云计算,什么是网格计算,他们之间有什么区别
- Docker-设置redis容器主从模式哨兵模式
- 数学基础知识-排列与组合
- credssp(credssp加密数据库修正 server2016)
- Carson带你学Android:RxJava过滤操作符
- 数据库主键到底是用自增长(INT)好还是UUID好?
- 2020年华为杯第十七届中国研究生数学建模竞赛---回顾记录
- 计算机网络 -- RS232接口 ----OSI物理层协议----RS232接口