新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
创新互联服务项目包括九江网站建设、九江网站制作、九江网页制作以及九江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,九江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到九江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!小编给大家分享一下用Python调用百度地图正/逆地理编码API的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!
一、背景
百度地图提供了相应的API,可以方便调用。相应的说明文档如下:
具体API的参数可以查看相应的“服务文档”:
不过首次使用时需要申请,具体在控制台。申请AK的方式可参见其他文章。
二、源码
废话不多说,直接放源码。这里提供了Python调用这两个API的方法。
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Author: Wild Orange # @Email: jixuanfan_seu@163.com # @Date: 2020-06-21 16:06:14 # @Last Modified time: 2020-07-01 19:35:28 import requests AK='[这里填写自己申请的AK值]' def Pos2Coord(name): ''' @func: 通过百度地图API将地理名称转换成经纬度 @note: 官方文档 http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding @output: lng: 经度 lat: 纬度 conf: 打点绝对精度(即坐标点的误差范围) comp: 描述地址理解程度。分值范围0-100,分值越大,服务对地址理解程度越高 level: 能精确理解的地址类型 ''' url = 'http://api.map.baidu.com/geocoding/v3/?address=%s&output=json&ak=%s'%(name,AK) res = requests.get(url) if res.status_code==200: val=res.json() if val['status']==0: retVal={'lng':val['result']['location']['lng'],'lat':val['result']['location']['lat'],\ 'conf':val['result']['confidence'],'comp':val['result']['comprehension'],'level':val['result']['level']} else: retVal=None return retVal else: print('无法获取%s经纬度'%name) def Coord2Pos(lng,lat,town='true'): ''' @func: 通过百度地图API将经纬度转换成地理名称 @input: lng: 经度 lat: 纬度 town: 是否获取乡镇级地理位置信息,默认获取。可选参数(true/false) @output: address:解析后的地理位置名称 province:省份名称 city:城市名 district:县级行政区划名 town: 乡镇级行政区划 adcode: 县级行政区划编码 town_code: 镇级行政区划编码 ''' url='http://api.map.baidu.com/reverse_geocoding/v3/?output=json&ak=%s&location=%s,%s&extensions_town=%s'%(AK,lat,lng,town) res=requests.get(url) if res.status_code==200: val=res.json() if val['status']==0: val=val['result'] retVal={'address':val['formatted_address'],'province':val['addressComponent']['province'],\ 'city':val['addressComponent']['city'],'district':val['addressComponent']['district'],\ 'town':val['addressComponent']['town'],'adcode':val['addressComponent']['adcode'], 'town_code':val['addressComponent']['town_code']} else: retVal=None return retVal else: print('无法获取(%s,%s)的地理信息!'%(lat,lng))