獲取最新2020全國行政區劃及經緯度

源碼: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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章