使用高德地图服务获取全部行政区划与各个省市的地理坐标

您所在的位置:网站首页 行政区划地图查询 使用高德地图服务获取全部行政区划与各个省市的地理坐标

使用高德地图服务获取全部行政区划与各个省市的地理坐标

2024-07-10 05:05| 来源: 网络整理| 查看: 265

文章目录 1. 申请高德地图Key2. 编写python代码,访问API,解析内容2.1 获取所有的省市分类2.2 使用request调用API2.3 解析json 3. 全部保存的代码3.1 访问API的函数3.2 初始化要遍历的区域和存储他们的字典、列表3.3 获取全部区域经纬度的信息3.4 结果展示3.5 保存成pickle文件 使用的接口API是行政“区域查询” https://lbs.amap.com/api/webservice/guide/api/district

1. 申请高德地图Key

首先打开上面的链接,根据要求去申请一个key 在这里插入图片描述

登录以后进入到自己的控制台,在应用界面创建新的应用 在这里插入图片描述 在这里插入图片描述

创建之后就可以拿到自己的Key了 在这里插入图片描述

2. 编写python代码,访问API,解析内容 2.1 获取所有的省市分类

中国的所有省市分类如下

参考百度文库https://baike.baidu.com/item/%E7%9C%81%E4%BB%BD/1635191?fr=aladdin 23个省分别为:河北省、山西省、辽宁省、吉林省、黑龙江省、江苏省、浙江省、安徽省、福建省、江西省、山东省、河南省、湖北省、湖南省、广东省、海南省、四川省、贵州省、云南省、陕西省、甘肃省、青海省、台湾省。 5个自治区分别为:内蒙古自治区、广西壮族自治区、西藏自治区、宁夏回族自治区、新疆维吾尔自治区。 4个直辖市分别为:北京市、天津市、上海市、重庆市。 2个特别行政区分别为:香港特别行政区、澳门特别行政区。

根据如上内容,可以使用python的split功能得到各个列表

# 省 province = '河北省、山西省、辽宁省、吉林省、黑龙江省、江苏省、浙江省、安徽省、福建省、江西省、山东省、河南省、湖北省、湖南省、广东省、海南省、四川省、贵州省、云南省、陕西省、甘肃省、青海省、台湾省' # 自治区 auto_region = '内蒙古自治区、广西壮族自治区、西藏自治区、宁夏回族自治区、新疆维吾尔自治区' # 直辖市 muni_city = '北京市、天津市、上海市、重庆市' # 特别行政 spec_region = '澳门特别行政区、香港特别行政区' province = province.split('、') auto_region = auto_region.split('、') muni_city = muni_city.split('、') spec_region = spec_region.split('、') 2.2 使用request调用API

代码如下

# 访问链接 import requests response = requests.get('https://restapi.amap.com/v3/config/district?key=你的KEY&keywords=河北省&subdistrict=2&extensions=base') # 解析json文件 import json json_dic = json.loads(response.text) 2.3 解析json

经过分析json文件,可以发现 省,自治区,特别行政区的格式都类似,第二级目录直接到市。而 直辖市的格式需要在第三级目录下直接到市。示例代码如下

关于省的分析

# 经度简写lng,竖着 # 纬度简写lat,横着 # 中国 经纬度范围 # 黑龙江 北纬53°31′到 曾母暗沙 北纬4°15′ # 新疆 东经73° 到 黑龙江 东经135° ## 省 # 省名和省的中心坐标 pro_name = json_dic['districts'][0]['name'] pro_center = json_dic['districts'][0]['center'] print(pro_name,pro_center) # 省下面的市 for each_pro in json_dic['districts'][0]['districts']: print(each_pro['name'],each_pro['center'])

关于市的分析

response = requests.get('https://restapi.amap.com/v3/config/district?key=你的KEY&keywords=北京市&subdistrict=2&extensions=base') json_dic = json.loads(response.text) ## 市的分析 # 市名和市的中心坐标 pro_name = json_dic['districts'][0]['name'] pro_center = json_dic['districts'][0]['center'] print(pro_name,pro_center) # 市下面的区 for each_pro in json_dic['districts'][0]['districts'][0]['districts']: print(each_pro['name'],each_pro['center'])

最终获取自己需要的就好了。

3. 全部保存的代码 3.1 访问API的函数

首先定义一个获取url内容的函数,使用while循环不断获取内容,直到得到返回值

# 访问链接 import requests # 解析json文件 import json def get_json(url): json_dic = None # 一直发消息,直到不循环 while json_dic == None: response = requests.get(url) json_dic = json.loads(response.text) return json_dic 3.2 初始化要遍历的区域和存储他们的字典、列表 # 省 province = '河北省、山西省、辽宁省、吉林省、黑龙江省、江苏省、浙江省、安徽省、福建省、江西省、山东省、河南省、湖北省、湖南省、广东省、海南省、四川省、贵州省、云南省、陕西省、甘肃省、青海省、台湾省' # 自治区 auto_region = '内蒙古自治区、广西壮族自治区、西藏自治区、宁夏回族自治区、新疆维吾尔自治区' # 直辖市 muni_city = '北京市、天津市、上海市、重庆市' # 特别行政区 spec_region = '澳门特别行政区、香港特别行政区' province = province.split('、') auto_region = auto_region.split('、') muni_city = muni_city.split('、') spec_region = spec_region.split('、') from itertools import chain # 所有地区的列表 all_region_list = [province,auto_region,muni_city,spec_region] all_region_list = list(chain(*all_region_list)) # 大地方经纬度的字典 big_region_dic = {} # 小地方经纬度的字典 small_region_dic = {} # 大地方到小地方关系的字典 big_small_relationship = {} 3.3 获取全部区域经纬度的信息 # 经度简写lng,竖着 # 纬度简写lat,横着 # 中国 经纬度范围 # 黑龙江 北纬53°31′到 曾母暗沙 北纬4°15′ # 新疆 东经73° 到 黑龙江 东经135° for pro in all_region_list: url = 'https://restapi.amap.com/v3/config/district?key=你的KEY&keywords={}&subdistrict=2&extensions=base'.format(pro) json_dic = get_json(url) # 名大地方的 名字 和 中心坐标 pro_name = json_dic['districts'][0]['name'] pro_center = json_dic['districts'][0]['center'].split(',') lng,lat = float(pro_center[0]),float(pro_center[1]) # 大地方的地理坐标 big_region_dic[pro_name] = { 'lng':lng, 'lat':lat } # 获得了哪个省的信息 print(pro_name,pro_center) each_small_region = [] # 省、自治区、特别行政区 或者 直辖市 try: districts = json_dic['districts'][0]['districts'] except: districts = json_dic['districts'][0]['districts'][0]['districts'] # 小区域 for each_pro in districts: # 得到名字 name = each_pro['name'] # 得到中心点坐标 center = each_pro['center'].split(',') lng,lat = float(center[0]),float(center[1]) # 保存小地方的地理坐标 small_region_dic[name] = { 'lng':lng, 'lat':lat } # 保存到小地方的字典里 each_small_region.append(name) # 关系也保存到大字典里 big_small_relationship[pro_name] = each_small_region 3.4 结果展示

大区域的字典

在这里插入图片描述

小区域的字典

在这里插入图片描述

大小区域的关系表示

在这里插入图片描述

3.5 保存成pickle文件 import pickle #保存 with open('region.pickle', 'wb') as fp: pickle.dump((big_region_dic,small_region_dic,big_small_relationship), fp) # 读取 with open('region.pickle', 'rb') as fp: big_region_dic,small_region_dic,big_small_relationship = pickle.load(fp)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3