文章目录

  • 1. 申请高德地图Key
  • 2. 编写python代码,访问API,解析内容
    • 2.1 获取所有的省市分类
    • 2.2 使用request调用API
    • 2.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)

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

  1. 提取某一个镇的行政边界_高德地图api获取行政边界矢量方法

    高德地图api获取行政边界矢量方法 发布时间:2018-09-07 17:51, 浏览次数:2170 , 标签: api 1.获取高德地图web服务key 2.行政区域查询API服务地址: https ...

  2. html调用高德地图得到城市,高德地图API获取行政区域

    高德地图API提供的行政区划查询,可以获取到行政区域的区号.城市编码.中心点.边界.下辖区域的详细信息.基于该工具进行扩展,对边界数据做转换处理,保存为GeoJson格式文件,方便使用.现已可以单个城 ...

  3. 高德地图地位获取地址

    高德地图地位获取地址 高德地图开发平台地址:https://lbs.amap.com/ 1导入依赖库 implementation 'com.amap.api:location:4.4.0' 2权限 ...

  4. java获取经纬度_java调用高德地图api获取某个位置的经纬度

    java调用高德地图api获取经纬度的方法,废话少说,直接上代码: import com.fasterxml.jackson.databind.JsonNode; import com.ning.ht ...

  5. 在高德地图中获取鼠标点击的经纬度

    本文目录 一.注册高德开放平台 (一)创建应用 (二)添加 Key 二.代码实现 1. 引入必要的 CSS 文件与 JS 文件 2. 放置地图容器 3. 核心 JavaScript 代码 三.效果图 ...

  6. 高德地图-鼠标获取坐标

    1.问题背景 鼠标点击地图,获取点击处的经纬度,并将经度和纬度放到输入框中 2.实现源码 <!DOCTYPE html> <html><head><meta ...

  7. Android项目打包,及高德地图服务配置

    前段时间,领导安排了一个Android端功能的任务,开发好了之后问领导打包怎么整,领导也是一脸懵逼,我一个后端开发之前也没实际操作过,于是就百度,由于之前Android开发离职了,打包需要的签名文件也 ...

  8. 调用腾讯地图API、高德地图API 获取当前地理位置、经纬度

    调用腾讯地图API.高德地图API 获取当前地理位置.经纬度 web开发中,很多情况下都会需要获取当前位置的经纬度,在网上找了几个不同的地图,最终找到兼容比较好的腾讯地图API 1.调用腾讯地图API ...

  9. 高德地图服务测试点评

    高德地图是一款功能齐全,支持离线的常用地图服务.其具备以下特点: 1.高德地图是一款免费使用的跨Android,IOS,WindowsPHONE三大移动平台的地图服务 2.其最新版本的Android库 ...

最新文章

  1. Linux那些事儿 之 戏说USB(34)接口的驱动
  2. C#中的快捷键,可以更方便的编写代码
  3. lora无线通信模块LoRa技术在智能家居灯控上的应用
  4. 实例分割的进阶三级跳:从 Mask R-CNN 到 Hybrid Task Cascade
  5. VC项目配置基础 (VC6.0 和VC2005)
  6. Dropbox Interview – Design Hit Counter
  7. 【干货】数字经济时代的新思考:企业如何进行数字化转型及如何称为数据驱动型企业?...
  8. 什么是NSAssert?
  9. windows10防Linux,用户禁用Defender提升Win10 Linux子系统性能
  10. mysql字段前拼接字符串_Mysql之字段字符串拼接
  11. 解决高并发(数据库锁机制)
  12. 双目相机计算稠密深度点云详解教程
  13. C++程序设计:相反数
  14. Eclipse项目中显示隐藏的文件
  15. int数组转strpython_python中int与str互转方法
  16. 详述SpringMVC中数据类型转换器
  17. 机器人,给我来一瓶82年的农夫山泉
  18. 本科操作系统学习笔记(上篇)
  19. haproxy配置负载均衡
  20. Python使用selenium自动打开谷歌浏览器和网页

热门文章

  1. Pytorch 实践 —— 乳腺癌预测
  2. idea断点里没有对号问题解决(断点是红色的里面没有对号)
  3. IntelliJ IDEA 14注册码
  4. EPON和GPON的区别
  5. EndNote20:强大的文献管理软件
  6. 免费可商用的矢量插图网站
  7. 20211219 小信号建模——状态空间法
  8. ReactiveX函数简要说明
  9. Linux更改文件的权限
  10. jquery 获取元素中class值