找回密码
 会员注册
查看: 23|回复: 0

Python采用高德api实现地图功能

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70595
发表于 2024-9-10 04:23:20 | 显示全部楼层 |阅读模式
前言        最近打算做一些地图可视化的工作,然后发现可以借助高德api来在地图上进行批量标记、画多边形。介绍        高德地图为个人开发者开放了一定免费次数的api,包括地理/逆地理编码、路径规划、行政区域查询、交通事件、IP定位、坐标转换等服务。(详情可见高德开放平台高德开放平台|高德地图API(amap.com))准备工作1.申请高德地图api服务   搜索“高德地图开放平台”或者“高德地图api”,进入官网,登录账号。2.进入控制台(右上方),点击应用管理-我的应用,然后添加key3.添加key,服务平台选择Web服务,其他的自己随意填写咯4.记下key,后面的每次调用都需要这个key开冲1.地理/逆地理编码           地理编码/逆地理编码API是通过HTTP/HTTPS协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能力。适用场景  地理编码:将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。   逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。I.地理编码地理api服务地址URLhttps://restapi.amap.com/v3/geocode/geo?parameters请求方式GET        parameters代表可选参数,参数间使用符号“&”连接,参数见下表。请求参数参数名含义是否必须缺省值key高德key,用户在官网申请Web服务API类型的key必须无address结构化的地址信息必须无city指定查询的城市,可选输入内容包括:指定城市的中文(如北京)、指定城市的中文全拼(beijing)、citycode(010)、adcode(110000)可选无,会进行全国范围内的搜索sig数字签名可选无output返回数据格式类型,json或xml可选jsoncallback回调函数,只在output参数设置为JSON时有效可选无返回参数参数名含义规则说明status返回结果状态值返回值为0或1,0表示请求失败,1表示请求成功count返回结果数目返回结果个数info返回状态说明当status为0时,info会返回具体错误原因,否则返回“OK”(info详情见官网)geocodes地理编码信息列表返回结果对象列表country国家默认返回中国province省例如:北京市。此处需要注意的是,中国的四大直辖市也算作省级单位。city市例如:北京市citycode城市编码例如:010district行政区例如:朝阳区street街道例如:阜通东大街number门牌例如:6号adcode区域编码例如:110101location坐标点经度,纬度level匹配级别示例查询北京市朝阳区阜通东大街6号的地址信息importrequestsurl='https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&key='response=requests.get(url)json_response=response.json()使用特定浏览器查询headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36',}url='https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&key='response=requests.get(url,headers=headers)json_response=response.json()模糊查找    全国有很多同名街道,当地址不规范的时候,往往会返回很多个结果,此时添加限定条件将提高搜索的准确性。                                                             添加城市headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36',}url='https://restapi.amap.com/v3/geocode/geo?address=北京路&key='response=requests.get(url,headers=headers)json_response=response.json()          如果仅仅搜索北京路,会返回多个地方的信息,例如白银市的北京路、金昌市的北京路。      若要查找广州市的北京路,则需加上city=广州的限定条件。以下几种写法均可:#拼音url='https://restapi.amap.com/v3/geocode/geo?address=北京路&city=guangzhou&key='#中文字符url='https://restapi.amap.com/v3/geocode/geo?address=北京路&city=广州&key='url='https://restapi.amap.com/v3/geocode/geo?address=北京路&city=广州市&key='#区号url='https://restapi.amap.com/v3/geocode/geo?address=北京路&city=020&key='#adcodeurl='https://restapi.amap.com/v3/geocode/geo?address=北京路&city=440100&key='    II.逆地理编码                                          逆地理api服务地址URLhttps://restapi.amap.com/v3/geocode/regeo?parameters请求方式GET       parameters代表可选参数,参数间使用符号“&”连接,参数见下表。请求参数参数名含义是否必须缺省值key高德key,用户在官网申请Web服务API类型的key必须无location经纬度坐标,经度在前,纬度在后,经纬度间以“,”分割,经纬度小数点后不要超过6位。必须无poitypePOI类型,逆地理编码在进行坐标解析之后不仅可以返回地址描述,也可以返回经纬度附近符合限定要求的POI内容(在extensions字段值为all时才会返回POI内容)。设置POI类型参数相当于为上述操作限定要求。可选无radius搜索半径,radius取值范围:0~3000,默认值:1000。单位:米可选1000extensions返回结果控制,取值为base时返回基本地址信息,取值为all时返回基本地址信息、附近POI内容、道路信息以及道路交叉口信息可选baseroadlevel道路等级,该参数需要extensions为all时生效。可选值:0或1,当roadlevel为0显示所有道路,当roadlevel为1时过滤非主干路,仅输出主干路信息可选无sig数字签名,详情参考官网可选无output返回数据类型格式,可选输入json或xml。设置 JSON 返回结果数据将会以 JSON 结构构成;如果设置 XML 返回结果数据将以 XML 结构构成可选jsoncallback回调函数,callback 值是用户定义的函数名称,此参数只在 output 参数设置为 JSON 时有效可选无homeorcorp是否优化poi的返回顺序,以下内容需要 extensions 参数为 all 时才生效。homeorcorp 参数的设置可以影响召回 OI 内容的排序策略,目前提供三个可选参数:0:不对召回的排序策略进行干扰。1:综合大数据分析将居家相关的 OI 内容优先返回,即优化返回结果中 pois 字段的poi 顺序。2:综合大数据分析将公司相关的 OI 内容优先返回,即优化返回结果中 pois 字段的poi 顺序可选0返回参数示例查询特定坐标的地址信息importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36',}url='https://restapi.amap.com/v3/geocode/regeo?location=116.310003,39.991957&key='response=requests.get(url,headers=headers)json_response=response.json()print(json_response)查询特定坐标方圆三公里内的地址信息importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36',}url='https://restapi.amap.com/v3/geocode/regeo?location=116.310003,39.991957&radius=3000&key='response=requests.get(url,headers=headers)json_response=response.json()print(json_response)返回详细的道路信息、附近POI等url='https://restapi.amap.com/v3/geocode/regeo?location=116.310003,39.991957&extensions=all&key='仅返回主干路url='https://restapi.amap.com/v3/geocode/regeo?location=116.310003,39.991957&roadlevel=1&key='一些小问题如何知道headers的值不输入headers的话自动使用默认浏览器进行,而如果我想要指定浏览器就需要输入相应的headers。本人用的是火狐浏览器,就以这个作为例子,其他浏览器也是这种操作。先随便打开一个网页然后打开开发者模式(按F12)    等左边的事务加载完成后,随便点击一个接着右边往下拉,找到User-Agent这一项,这个就是headers啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 11:56 , Processed in 0.410462 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表