Python高效办公|批量经纬度转地址

640?wx_fmt=png

01 问题描述

认识小编的老读者都知道,最早我是写Python爬虫的。平时就有很多读者问我爬虫有什么用,当时我的回答是这样的:爬虫是采集数据的一种方法,是数据分析中的一环,如果做数据分析,企业需要你具有爬虫技能(这种公司会在招聘中写到),你就得学。如果不需要的话,可以先把重点放在其他技能方面。

但有很多读者说,自己以后也不从事互联网相关的工作,这个爬虫有什么用?其实当时我也没有很好的解释,只能说提升自己总没错。在我工作后,也确实很久没有用到爬虫。但多一种技能,就少一个求人的理由,就在单位的项目中,我成功使用到了爬虫相关的内容。

大概的需求是这样的,需要根据属性表中的经纬度,得到详细的地址信息。

640?wx_fmt=png

02 高德地图API

如果不会编程来解决,只能在地图中,一个个输入经纬度,然后将返回的地址复制到属性表中。但属性表数据很多时,这种方法就太慢了。

其实,我们只需要调用高德地图的API就可以很轻松的完成,也不过是几行代码的事情,具体步骤如下:

① 输入高德API网址,然后选择 Web服务API。

640?wx_fmt=png

② 我们找到地理/逆地理编码(我们用到的就是逆地理编码),这就是我们需要使用的文档,之前我说过,API使用都很简单,只要认真查看其API文档即可。

640?wx_fmt=png

③ 通过阅读文档,我们可以确定以下几点:

  • 请求为get方式

  • url为 https://restapi.amap.com/v3/geocode/regeo?key={}&location={},这里的key大家申请就就好了,location就是经纬度,但是必须为十进制

  • 返回的地址信息在'regeocode'下的'formatted_address'

④ 这样,我们就可以很轻松的把代码写出来了。

import requests	
import json	
def getlocation(lon,lat):	
    new_lon = int(lon.split(u"° ")[0]) + float(lon.split(u"° ")[1].split("' ")[0])/60 + float(lon.split(u"° ")[1].split("' ")[1].split('" ')[0])/3600	
    new_lat = int(lat.split(u"° ")[0]) + float(lat.split(u"° ")[1].split("' ")[0])/60 + float(lat.split(u"° ")[1].split("' ")[1].split('" ')[0])/3600	
    try:	
        url = 'http://restapi.amap.com/v3/geocode/regeo?key={}&location=' + str(new_lon) + "," + str(new_lat)	
        res = requests.get(url)	
        json_data = json.loads(res.text)	
        return json_data['regeocode']['formatted_address']	
    except:	
        return 'error1'

特别主要的是,我们先要将经纬度转为十进制才可以。

640?wx_fmt=png

03 总结

所以,有时候的学习可能不是为了眼前的利益,你学的东西,总有一天会使用到的,加油!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值