本文主要讲述利用Python将文本格式的地址转换为数字格式的经纬度坐标数据,主要步骤有:

  1. 注册高德地图API账号,申请Web服务的Key
  2. 了解并测试地理编码API服务
  3. 利用Python实现地址转坐标

一、注册高德地图API账号,申请Web服务的Key

本文利用高德地图API中Web服务提供的地理编码接口实现地址转坐标。想要使用地理编码接口,首先要注册成为高德地图API的开发者,下图为注册界面

高德地图API账号注册界面

注册成功后,进入应用管理平台,并在“我的应用”中点击“创建新应用”按钮(右上角),根据需要填写“应用名称”以及“应用类型”

创建新应用

应用创建成功后,在该应用栏中点击“添加Key”按钮(右上角)

点击添加Key

根据需要输入“Key名称”,服务平台需要选择“Web服务”

添加“Web服务”的Key

成功创建一个"Web服务"的Key,如果有大批量转换的需要可以申请多个Key。

成功申请一个Key

二、了解并测试地理编码接口

高德地图地理编码接口的网址是:

地理/逆地理编码-API文档-开发指南-Web服务 API | 高德地图API​lbs.amap.com

地理编码API的使用步骤是:

  1. 参考接口参数文档发起HTTP/HTTPS请求,将 Key 需作为必填参数一同发送
  2. 接收请求返回的数据(JSON或XML格式)
  3. 参考返回参数文档解析数据

下图为地理编码API服务的地址。其中,parameters代表的参数包括必填参数和可选参数,所有参数均使用和号字符(&)进行分隔。基于该网址并结合请求参数和Key一同发送就可以得到相应的返回结果。

地理编码API服务地址

下图为地理编码API的请求参数说明。该API中必填内容是Key和Address,Key就是第一步中申请得到的密钥,address代表结构化的地址信息。如果想要一次请求返回多条地址的坐标,可以将batch参数设置为true,并用'|'来分隔多条地址,值得注意的是一次请求最多能够支持10条地址。output代表返回数据格式类型,一般默认返回Json格式。

地理编码API的请求参数说明

下图为地理编码API的返回参数说明。如果status字段返回1且info字段返回'OK',则该次返回成功。其中,地址的经纬度数据在geocodes下的location中。

地理编码API的返回参数说明

接下来,对上述地理编码API进行一次简单的测试。

当前请求参数为:

  • key:27a90950bd4233a3589503ba03d58f25
  • address:上海市嘉定区墨玉南路888号|上海市嘉定区嘉定区墨玉南路1号
  • batch:true
  • output:json

组合后的Url为:https://restapi.amap.com/v3/geocode/geo?key=27a90950bd4233a3589503ba03d58f25&address=上海市嘉定区墨玉南路888号|上海市嘉定区嘉定区墨玉南路1号&batch=true&output=json

下图为返回结果,可以看到两处红线标住的地方为经纬度坐标

地理编码API测试返回结果

三、利用Python实现地址转坐标

下面的代码为执行一次高德地图地理编码查询的函数

# 执行一次高德地图地理编码的查询
# 输入值:locationList -> 地址的序列,currentKey -> 当前使用的Key
# 返回值:resultList -> 查询成功,返回结果坐标的序列
#        -1 -> 执行当前查询时Key的配额用完了
#        -2 -> 执行当前查询出错
def ExcuteSingleQuery(locationList,currentkey):# 1-将locationList中的地址连接成高德地图API能够识别的样子locationString = ""     # 当前locationList组成的stringfor location in locationList:locationString += location + '|'# 2-地理编码查询需要的Urloutput = 'json'    # 查询返回的形式batch = 'true'     # 是否支持多个查询base = 'https://restapi.amap.com/v3/geocode/geo?'    # 地理编码查询Url的头currentUrl = base + "output=" + output + "&batch=" + batch + "&address=" + locationString + "&key=" + currentkey# 3-提交请求response = requests.get(currentUrl)    # 提交请求answer = response.json()   # 接收返回# 4-解析Json的内容resultList = []    # 用来存放地理编码结果的空序列if answer['status'] == '1' and answer['info'] == 'OK':# 4.1-请求和返回都成功,则进行解析tmpList = answer['geocodes']    # 获取所有结果坐标点for i in range(0,len(tmpList)):try:# 解析','分隔的经纬度coordString = tmpList[i]['location']coordList = coordString.split(',')# 放入结果序列resultList.append((float(coordList[0]),float(coordList[1])))except:# 如果发生错误则存入NoneresultList.append(None)return resultListelif answer['info'] == 'DAILY_QUERY_OVER_LIMIT':# 4.2-当前账号的余额用完了,返回-1return -1else:# 4.3-如果发生其他错误则返回-2return -2

接下来,用真实的数据对上面的函数进行测试,并输出返回结果

if __name__ == '__main__':# 创建测试地址数据集locationList = ["四川省成都市崇州市崇阳街道晋康北路313号","四川省成都市成都高新区盛华北路107号1楼","四川省成都市四川省成都市金堂县赵镇迎宾大道一段8号","四川省成都市崇州市三江镇崇新村5组","四川省成都市大邑县鹤鸣乡联和村二十组","四川省成都市成都市蒲江县复兴乡庙峰村3组52号","四川省成都市成都高新区新乐路125号1楼","四川省成都市成都市青羊区锦里西路127号1层3号","四川省成都市成都高新区天府一街616号8栋附203号","四川省成都市四川省成都市成华区东三环路二段宝耳路2号1号办公楼3楼1号",]# 进行地理编码print(ExcuteSingleQuery(locationList=locationList, currentkey="365ac412d6e22f49ce3d345270ecc643"))

下面为函数测试的结果,可以看到返回结果为10个地址的经纬度坐标,测试成功!

C:UsersAdministratorAppDataLocalProgramsPythonPython37python.exe C:/Users/Administrator/PycharmProjects/Geocoding/Geocoding.py
(103.68455, 30.64138)
(104.051735, 30.558456)
(104.409448, 30.858932)
(103.797445, 30.529827)
(103.391601, 30.598182)
(103.42105, 30.313147)
(104.04065, 30.605325)
(104.047531, 30.653964)
(104.054761, 30.559163)
(104.163724, 30.692028)Process finished with exit code 0

利用上述代码可以将文本格式的地址转换为数字形式的坐标数据,但是值得注意的是利用高德地图API返回的经纬度为GCJ-02坐标系,在实际使用前需要先进行坐标转换。

下面的链接讲述了地理坐标系统的原理及转换算法

师大Giser:干货|利用Python进行地理坐标系统的转换​zhuanlan.zhihu.com

下面的链接提供了一个不写代码就可以进行地理坐标系统转换的工具

师大Giser:工具|一个不写代码就能够实现地理坐标系统转换的工具​zhuanlan.zhihu.com

如果需要本文中出现的代码,请加关注私聊或者评论区留邮箱地址。

利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标相关推荐

  1. python查看电脑配置_教你怎么查看电脑配置

    导读:小编根据大家的需要整理了一份关于<教你怎么查看电脑配置>的内容,具体内容: 正准备买笔记本或者看到组装好了的电脑,或者已经买好电脑的朋友,想知道电脑的配置参数.电脑的配置高低.下面是 ...

  2. python查看电脑配置_怎么查看电脑配置

    怎么查看电脑配置 导语:正准备买笔记本或者看到组装好了的电脑,或者已经买好电脑的朋友,想知道电脑的配置参数.电脑的配置高低,我们可以通过以下方式来判断,一起来看看吧! 一.打开电脑 在桌面上[我的电脑 ...

  3. python查看电脑配置_怎么查看电脑配置(教你如何查看电脑配置信息和型号)

    如今,由于游戏.影音.学习或者工作的需要,用户都会有购买电脑的时候,不过对于一些不懂电脑的小白来说,如果连电脑配置都不会差的话,是十分容易被宰的.比如组装台式机的时候,可能一个不注意就被JS调包了,如 ...

  4. python sql查询返回记录_干货!Python与MySQL数据库的交互实战

    安装PyMySQL库 如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个库的安装很简单,直接使用pip install pymysql:假如这种方式还是安装不上,就用 ...

  5. python查看电脑配置_怎么看电脑配置_怎么查看电脑配置好坏|信息【图文】-太平洋IT百科...

    怎么看电脑配置?怎么查看电脑配置好坏和配置信息?查看电脑配置有两种方法,一种是查看电脑中的设备管理器,但这种方法通常无法完整地查看到电脑的配置信息;另外一种方法是使用软件查看,例如鲁大师.驱动精灵等. ...

  6. python查看电脑配置_查看电脑配置_如何查看电脑配置参数

    2016-11-30 15:58:27 首选,把电脑打开,然后再桌面找到我的电脑(或者计算机)这个图标找到之后就对着这个图片单击右键,会出现一些属性栏,选择属性,单击属性之后会出现一个对话框,然后再单 ...

  7. python查看电脑配置_笔记本如何查看电脑配置?

    笔记本如何查看电脑配置?? 现在许多人都会选中体积小方便携带的笔记本电脑,大家熟悉不同电脑配置不同的硬件,配置好坏决定一台笔记本电脑的性能,尤其是玩游戏或做设计的朋友,都非常关心笔记本电脑配置,那么要 ...

  8. 菜鸟裹裹电脑版_干货|利用菜鸟裹裹商家版低价寄快递

    大家好,今天依旧是勤勤恳恳更新的小杨,上一期给大家发了一篇:"摆地摊进货渠道平台分享",那对于不想摆地摊,想发展微商等需要邮寄物品的朋友们,今天小杨给大家带来了:"利用菜 ...

  9. python数据处理电脑配置_『大数据python计算机基础教学视频教程』入门学python需要什么配置的电脑...

    x = 1 if x 4.2 1) else匹前的缩进相同且最接近的if 2) 改之前y=x 2行,之后是y=x 1先执行 第5题 代码还n = 1 while n <= 5: i = 1 wh ...

最新文章

  1. Mybatis常用查找的总结
  2. 链表删除最小值,倒叙
  3. css 语音,用css完成语音助手小动画
  4. hibernate处理懒加载异常的方法
  5. 举例说明计算机在六个方面的应用,第六章 计算机应用基础简答题答案.doc
  6. 什么是虚拟DOM(React16源码分析)
  7. canvas与svg的区别
  8. 智能翻译android,离线翻译SDK,让智能小设备如虎添翼
  9. 呆瓜半小时入门python数据分析_金融和生物信息学多个实战案例
  10. 给定一个净值序列,计算年化收益、最大回撤、夏普比率
  11. python如何合并txt文件_Python实现将目录中TXT合并成一个大TXT文件的方法
  12. 安装office2007 1706错误
  13. 模型及贴图的细节及优化
  14. 腾达路由器显示远程服务器无响应,腾达路由器设置及可能出现的问题
  15. Spring Cloud 基本理论概述
  16. linux—rm命令详解(一天一个命令)
  17. MPC5748g基于源码实现ENET-PING实验(编译+调试)
  18. 什么是深拷贝和浅拷贝?以及怎么实现深拷贝和浅拷贝?
  19. xgboost 参数 scale_pos_weight 详解
  20. 基于MATLAB的农业病虫害识别系统

热门文章

  1. 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇
  2. Hopcroft-Carp(有点难)
  3. 计算机二级教程书pdf MS,全国计算机等级考试二级教程MS Office高级应用教学大纲4.pdf...
  4. android音乐播放器实验报告总结,音乐播放器设计实验报告.docx
  5. Ubuntu 12.10 禁用来宾账户和远程登录
  6. 苏世民:25条工作和生活原则
  7. print spooler打印服务启动后,自动停止的解决方法。
  8. C语言程序设计授课记录202003
  9. 入手评测 锐龙r7 5825u和i5 1240p选哪个好
  10. 关于哈密顿路是否存在的遍历算法