源碼:https://github.com/tyronczt/java-learn/tree/master/Tools/China-Xzqh
最後效果
2020年中華人民共和國縣以上行政區劃代碼
http://www.mca.gov.cn/article/sj/xzqh/2020/
新建數據庫
-- ----------------------------
-- Table structure for china_xzqh
-- ----------------------------
DROP TABLE IF EXISTS `china_xzqh`;
CREATE TABLE `china_xzqh` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '行政區劃編碼',
`name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '行政區劃名稱',
`nameplus` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名稱重命名-加政府,用於匹配經緯度',
`fullname` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '行政區劃全稱',
`type` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '類型,1:省級,2:市級,3:縣級',
`citycode` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '城市編碼',
`cityname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '城市名',
`pcode` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'POI所在省份編碼',
`pname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'POI所在省份名稱',
`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
`tel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'POI的電話',
`gd_jd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '高德經度',
`gd_wd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '高德緯度',
`bd_jd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '百度經度',
`bd_wd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '百度緯度',
`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '備註',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '中國行政區劃' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
將從民政部獲取得到的最新行政區劃信息導入表中,作爲原始數據
Java核心代碼
使用 Spring Boot API Project Seed Plus 三步構建SpringBoot項目
使用筆記:https://blog.csdn.net/tian330726/article/details/106743836
package com.tyron.service.xzqh.impl;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.tyron.core.AbstractService;
import com.tyron.mapper.xzqh.ChinaXzqhMapper;
import com.tyron.pojo.entity.xzqh.ChinaXzqh;
import com.tyron.service.xzqh.ChinaXzqhService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 中國行政區劃控制類
* @Author: tyronchen
* @Date: Created in 2020/04/27
*/
@Service
public class ChinaXzqhServiceImpl extends AbstractService<ChinaXzqh> implements ChinaXzqhService {
@Resource
private ChinaXzqhMapper chinaXzqhMapper;
private static String GD_URL = "https://restapi.amap.com/v3/place/text";
private static String GD_KEY = "your-key";
@Override
public int setGdJwd() {
// 全國
List<ChinaXzqh> chinaXzqhs = chinaXzqhMapper.selectList(null);
int effectedNums = 0;
for (ChinaXzqh chinaXzqh : chinaXzqhs) {
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("keywords", chinaXzqh.getNameplus());
paramMap.put("output", "JSON");
paramMap.put("city", chinaXzqh.getCode());
paramMap.put("offset", 1);
paramMap.put("page", 1);
paramMap.put("key", GD_KEY);
paramMap.put("extensions", "all");
String urlResult = HttpUtil.get(GD_URL, paramMap);
JSONObject jsonResult = JSONUtil.parseObj(urlResult);
// 當請求成功時,開始解析結果
if (jsonResult.getStr("status").equals("1")) {
JSONArray jsonArray = jsonResult.getJSONArray("pois");
JSONObject result = JSONUtil.parseObj(jsonArray.get(0));
String location = result.getStr("location");
// 解析經緯度
if (StringUtils.isNotBlank(location)) {
String[] locations = location.split(",");
if (locations.length == 2) {
chinaXzqh.setGdJd(locations[0]);
chinaXzqh.setGdWd(locations[1]);
}
}
chinaXzqh.setAddress(result.getStr("address"));
chinaXzqh.setTel(result.getStr("tel"));
chinaXzqh.setCitycode(result.getStr("citycode"));
chinaXzqh.setCityname(result.getStr("cityname"));
chinaXzqh.setFullname(result.getStr("name"));
chinaXzqh.setPname(result.getStr("pname"));
chinaXzqh.setPcode(result.getStr("pcode"));
int effectedNum = chinaXzqhMapper.updateById(chinaXzqh);
effectedNums = +effectedNum;
}
}
return effectedNums;
}
}
前置條件:申請高德key
https://console.amap.com/dev/key/app