嵌入地图跳转高德地图_Python高德地图可视化

本文介绍了如何使用Python结合高德地图开放平台,将成都酒吧分布数据进行标记并生成地图。首先,需要获取高德API Key,然后爬取并处理城市数据,存储到MongoDB。接着,将数据转换为Excel格式,并通过高德地图开发平台生成定制化的地图样式。
摘要由CSDN通过智能技术生成

   昨晚上公司完会,酒喝多了,状态不好,睡得早,今天也醒得早,就把本该昨天写的补上了。

  上周的时候突然收到一个很久很久很久没有联系的丹露同事发来一条打招呼的消息,我第一反应就是,又要我干苦力了。不过结果要求比我想象中要轻松很多,需求大概是:要做一个成都市的酒吧地图分布标记,直接从地图上搜索出来数量很少,需要把地图上能搜索到的都标记出来。

  于是我想到了很久很久以前做过的一件事情,把全国所有城市的烟酒店爬取了一遍,只需要稍微改一改就可以拿来用了。过程中最困难的问题是,怎么找到以前的文档,怎么才能读懂那一串不规范的代码,经过比一点点多一点的时间,终于还是搞定了,下面就是这个过程,记录一下,以后应该就不用到处去找了。

d35c6c887be47aa6f9ae2b21f6be9595.png

需要用到的工具:

    1.Python

    2.高度地图开放平台

    3.MongoDB

  开始...

【注册一个高德key】

dfe6378f9970b09dd916222e9a6413ad.png

  这个key可以用来做很多事情,首先需要把高德所有的省市区信息爬取下来,这个是另一个工作了,这里不介绍,下次有缘再说。

【城市数据准备】

ef24f680535a60372d6a96c3cbc1a1c6.png

  大概就是这种,放到CSV或者Excel文档里面就可以了,精确到区县一级。

【代码】

import osos.chdir(r'F:\Python\新经销')import requestsimport pandas as pdfrom pymongo import MongoClientimport timeclass Location(object):    def __init__(self, keyword=f'酒吧'):        self.keyword = keyword        self.key = 'key'  # 你申请的高德地图API key        self.url = 'https://restapi.amap.com/v3/place/text?keywords={}&city={}&' \                   'output=json&offset=20&page={}&key={}&extensions=all'        self.data = pd.read_csv('city.csv')        client = MongoClient(host='localhost', port=27017)        db = client.Amap        self.col = db.Store    def get_location_data(self):        for index, row in self.data.iterrows():            page = 1            while 1:                url = self.url.format(self.keyword,                                      row['name'],                                      page,                                      self.key)                try:                    res = requests.get(url)                except:                    try:                        time.sleep(15)                        res = requests.get(url)                    except:                        time.sleep(15)                        res = requests.get(url)                if int(res.json()['count']) > 0:                    pois = res.json()['pois']                    if len(pois) > 0:                        self.col.insert_many(pois)                        print('成功爬取并保存城市:{}第{}页的数据!'.format(row['name'], page))                        time.sleep(0.1)                    page += 1                else:                    print('城市:{}第{}页无数据!{}'.format(row['name'], page,self.keyword))                    time.sleep(3)                    breakif __name__ == '__main__':    loc = Location(f'酒吧')    loc.get_location_data()

  结果会保存到MongoDB里面,大概是这样↓

50177c0f60e6c7ef77629a37c4dbdd22.png

【保存Excel】

  MongoDB里面的格式不是标准的表格格式,还需要转换成标准的表格格式,再把多余的字段给摈弃了。操作如下↓

import pymongoimport pandas as pdimport osos.chdir(r'F:\Python\新经销')# 连接数据库client = pymongo.MongoClient('localhost', 27017)db = client['Amap']table = db['Store']# 读取数据data = pd.DataFrame(list(table.find()))# 选择需要显示的字段data = data[['id','name','address', 'adname','cityname','pname','location','type','tel','timestamp']]lonlat = data['location'].str.split(",",n=2,expand=True)data['lon'] = lonlat[0]data['lat'] = lonlat[1]data.drop_duplicates(subset=['name','location'],inplace=True)data.to_excel('成都酒吧.xlsx',index=False)

  于是就得到了我们想要的Excel↓

948caf8862d0d3682b7c157312cf66a7.png

【生成地图】

  最后只需要把我们的数据导入高德开发平台就行了。

  有很多样式可以设定,根据自己需求来就行了。

569ea9e3cc524ee216fa7e408aa37d57.png

1a015fd8fdbbaa4e1e54e0674405f448.png

4bb21daa2b5805a0264c584ecbdd497a.png

99e8017fd98aa8866b7929f2117a180a.png

50199e64ec0f873d4c1e9ed3276d4324.gif

End

015c2f8f7ae44a3c8d5bbafe1483d96b.gif

◆  统计_集中和离散趋势 ◆ Python拼音 ◆  Excel时间序列预测函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值