递归获取省市区的边界信息文件,用于echarts的map地图
数据来源为阿里云,单个省市区信息可直接在这里面下载:http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&lng=106.72278672066881&zoom=3.5
由于需求需要点击省份里面的城市就展示新的城市的地图,所以需要把所有省市区的边界信息json全部下载下来。阿里云提供的地址我司域名获取时可能会出现跨域情况,所以直接获取下来放公司的存储服务器;
python脚本获取(直接exe获取可联系作者获取):
import requests import json import os url = 'https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=' headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" } # 递归获取数据 def deepGet(code=430000,num=1,level=3): params = str(code) level = int(level) print('正在获取{}的信息'.format(params)) if(num<level): params += '_full' url1 = url + params response = requests.get(url1, headers = headers) data = json.loads(response.text) to_src = './address' if not os.path.exists(to_src): os.mkdir(to_src) with open('{}/{}.json'.format(to_src,params),'w',encoding="utf-8") as file: file.write(response.text) if(num<level): ls = data.get('features') for i in range(0,len(ls)): item = ls[i] code = item.get('properties').get('adcode') deepGet(code,num+1) if __name__ == '__main__': input('默认获取子区域(除街道级),如不想获取子区域,则可直接输入:1 430000,回车确认;') level = input('请输入你想获取的级别(4-国,3-省,2-市,1-区):') code = input('请输入根地区的编码(例-湖南:430000):') deepGet(code,1,level)
肖cc
QQ2398506993