文章目录
1.背景
项目中用到省市区三级的行政区划的选择,在网上找到的数据与最新的行政区域划分不一致,也难以确认数据的完成性。
基于echarts完成数据地区分布图时,需要提供地区对应的geoJson
格式地图。
2.行政区域数据获取
高德开放平台提供了丰富数据API,其中行政区域信息可通过以下接口:
https://restapi.amap.com/v3/config/district?keywords=中国&subdistrict=3&key=5b138cc729f37d29702ff904ca9cedeb
接口获取的数据是按照行政等级多层嵌套,为了方便后续操作,将数据转化为了List。
以下代码将行政区划转化为List并添加了id
和parent_id
,同时保存为json数组(area_dict.json
)和MySQL数据库脚本(area_dict.sql
)。
#-*-coding:UTF-8-*-
"""
Author: Gray Snail
Date: 2020-06-30
最新行政区划获取
基于高德地图API获取数据
https://restapi.amap.com/v3/config/district?keywords=中国&subdistrict=3&key=5b138cc729f37d29702ff904ca9cedeb
"""
import json
import requests
def parse_district(districtObj : dict, idx=1, parent_id=0):
res = []
if 'name' in districtObj.keys():
if districtObj['level'] == 'street':
return res
lng, lat = districtCenter(districtObj['center'])
level = districtLevel(districtObj['level'])
citycode = districtObj['citycode'] if isinstance(districtObj['citycode'], str) else ''
# {"citycode":"0379","adcode":"410300","name":"洛阳市","center":"112.434468,34.663041","level":"city"}
# idx, districtObj['adcode'], districtObj['name'], level, citycode, lng, lat, parent_id
item = {
'id' : idx,
'adcode' : districtObj['adcode'],
'name' : districtObj['name'],
'level' : level,
'citycode' : citycode,
'lng' : lng