在python中使用geopy的百度API解析经纬度

需求

将经纬度解析为地址,使用geopy默认提供的东西解析单个经纬度够用了,但是成批的解析会经常超时。查阅资料发现可以在geopy中使用百度的api。超时的问题就容易解决了。

百度api

webapi/guide/webservice-geocoding-abroad - Wiki点击链接到百度的全球逆地理编码服务,在服务文档中可以查看到详细的接口信息。按步骤很容易创建自己的服务接口。http://lbsyun.baidu.com/apiconsole/key 在这个链接中创建服务。默认全部勾选就不管了。重要的是应用AK和请求校验方式改为sn校验方式得到的SK
在这里插入图片描述

geopy

参考时经常出现的用法

    from geopy.geocoders import Nominatim
    geolocator=Nominatim()
    location= geolocator.reverse("39.8694900405,116.0013866959")
    print(location.address)
    # 京昆路, 房山区, 中国
    print(location.raw['address']['country'])
    # 中国
    print(location.raw)
    # {'place_id': '187024808', 
    #'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright',
    #'osm_type': 'way', 'osm_id': '537178945', 'lat': '39.8730714477888', 'lon': '116.000163834226', 
    #'display_name': '京昆路, 房山区, 中国',
    # 'address': {'road': '京昆路', 'county': '房山区', 'country': '中国', 'country_code': 'cn'},
    # 'boundingbox': ['39.8639144', '39.8769233', '115.9720381', '116.015403']}

Welcome to GeoPy’s documentation! — GeoPy 1.17.0 documentation链接给出了geopy的官方地址,遇到问题还可以去github上找一找看看源码。
不管是地址到经纬度还是经纬度到地址,最后都和代码中的location相关。我们重点关注location.raw,可以把location.raw的内容放到json可视化工具查看。想要用的时候location.raw[‘key’]轻松解决。
在这里插入图片描述

百度API的用法

    from geopy.geocoders import Baidu
    geocoder = Baidu(
                api_key='ak',#自己修改
                security_key='sk',#自己修改
                timeout=200
            )
    lr=[]
    ilb=[('a',39.8694900405,116.0013866959),('b',39.8694900405,116.0013866959)]
	for _,i in enumerate(ilb):
	    location= geocoder.reverse(i[1]+','+i[2])
	    lr.append((i[0],location.raw))
	for _,i in enumerate(lr):
		addr=i[1]['addressComponent']
		addr['country']
		print(addr)  
		#     print(i)
		if _>1:
			break

如果容易超时建议把timeout调高

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值