省市区三级行政区数据获取和GeoJson地图下载

该项目需求涉及省市区三级行政区划选择,因网上数据不准确,故从高德开放平台获取最新行政区域数据,并转换为List存储,同时通过地区编码从阿里云Datav下载GeoJson地图文件。遇到地区编码不一致问题,导致部分地图文件无法下载,目前未下载成功数量较少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

项目中用到省市区三级的行政区划的选择,在网上找到的数据与最新的行政区域划分不一致,也难以确认数据的完成性。

基于echarts完成数据地区分布图时,需要提供地区对应的geoJson格式地图。

2.行政区域数据获取

高德开放平台提供了丰富数据API,其中行政区域信息可通过以下接口:
https://restapi.amap.com/v3/config/district?keywords=中国&subdistrict=3&key=5b138cc729f37d29702ff904ca9cedeb

接口获取的数据是按照行政等级多层嵌套,为了方便后续操作,将数据转化为了List。
以下代码将行政区划转化为List并添加了idparent_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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值