java 获取GeoJSON结构的json文件
摘要:在使用echarts地图时,如果要开发地图按照行政区划下钻的功能,则必须要引用对应行政区划的json文件才可以,但是绝大多是GeoJSON格式的json文件要么是收费、要么是需要手动挨个下载,作为程序猿这肯定不能忍(赖得挨个下载🤣🤣),于是花费半小时搞个小小的工具类(开发半小时使使用一分钟),然后再利用一分钟搞定省市县三级行政区划对应的json文件并存放到对应的目录里。废话不多说,先上效果图😁😁
简单粗暴,直接上代码
package com.zdww.tpgg.common.file;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
* @ClassName GeoJsonUtil
* @Description 根据阿里 DataV.GeoAtlas 接口中获取省、市、县 对应GenJSON格式json文件
* @Author yangwm
* @Date 2021/12/30 21:43
* @Version 1.0
*/
public class GeoJsonUtil {
/**
* 利用http请求获取json字符串并存储到对应文件夹中
* @param path 存放文件的目录 /download
* @param parentFileName 存放文件的上级文件夹,如 县级对应市级的名称
* @param fileName 存放文件的名字
* @param code 行政区划段编码 截取前六位,如 513300 510000
* @throws IOException
*/
public static void doGet(String path,String parentFileName,String fileName,String code) throws IOException {
//文件存储的文件夹
String parentPath = "/"+path+"/"+parentFileName;
//文件存储的位置
String filePath = parentPath+"/"+fileName+".json";
//创建文件
File parentFile = new File(parentPath);
File file = new File(filePath);
//判断父级文件夹不存在,直接创建
if(!parentFile.isDirectory()){
parentFile.mkdirs();
}
//判断文件不存在,直接创建
if(!file.exists()) {
file.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
}
//声明连接
CloseableHttpClient client = HttpClients.createDefault();
// 要调用的接口方法
String url = "https://geo.datav.aliyun.com/areas_v3/bound/"+code+".json";
//get请求
HttpGet post = new HttpGet(url);
try {
HttpResponse res = client.execute(post);
//获取返回内容
String response = EntityUtils.toString(res.getEntity());
System.out.println(response);
//输出
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(response);
bw.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
需要引入maven
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
<scope>compile</scope>
</dependency>
- 这个接口是基于(阿里云数据可视化平台)的,要感谢阿里的开放接口。
- 请求的基本原理是基于Java的http请求。
- 代码中文件流处理、文件目录处理都有很大的完善空间,欢迎小伙伴们拍砖。
***祝君成功!!!!**❤❤❤❤❤❤❤❤❤❤❤❤
------------------------分割线----------------------------
晚上加完班回去休息了下脑子,今早上班想了想,干脆一不做二不休(以后偷懒方便 )*于是又动了手指,将工具类封装成jar包,这里就无私奉献给大家伙😃😃😃😃😃😃😃
自助地址:https://pan.baidu.com/s/1Q4CKo6k_f_1V5xKC2qeudQ,提取码:atqx