使用folium制作出行地图

写在前面

如标题所示,绘制地图所需要的核心库便是folium官方文档中有对folium更全面的使用教程,本篇博文仅限于在地图上标记、注释等部分。

使用环境

所有的代码及演示均默认在Jupyter Notebook下运行。

正式开始

folium的安装

要完成这个实例,首先要先将所需的库import进来,如果没有安装该库,可用conda安装:
conda install folium -c conda-forge

当然,也可以用pip install folium安装,不过安装Anaconda以后会附带Jupyter Notebook,正好可以用于此次开发:
在这里插入图片描述

显示地图

首先,我们展示一张世界地图,直接使用语句folium.Map()即可:
在这里插入图片描述
显然,这一张粗略的世界地图能展示的信息少得可怜,我们需要将地图变得更加细致,精确到某一地区,这样才有足够的价值。

于是,我们可以给folium.Map()函数传递一个初始坐标,这个坐标用一个长度为2的list表示,0位为纬度,1位为经度,以广州为例:
m = folium.Map(location=[23.13,113.27])
在这里插入图片描述
同时,我们可以调整初始的放大比例,这需要用到zoomstart参数:
在这里插入图片描述
除了zoomstart参数,folium.Map()函数还有许多别的参数,可以用来更换图层风格、地图数据来源:
在这里插入图片描述
这些操作,可在官方文档做进一步学习,这里采用默认的OpenStreetMap。

为地图做标记

做标记主要用到folium.Marker().add_to()函数,Marker()后面的括号可以对标记做一些设置,add_to()后面的括号自然就是要添加标记的地图名字。

最基础的就是加一个普通的空白标记,只需要在Marker()中传入经纬度坐标即可,下图就把广州塔所在的位置标注了出来:

import folium
m = folium.Map(location=[23.13,113.27], zoom_start=12)
CantonTower=[23.10900,113.31915]
folium.Marker(CantonTower).add_to(m)

在这里插入图片描述
除了位置,这些标记还可以携带一些文字信息,分为popuptooltip。其中,popup是点击标签后弹出的内容,而tooltip则是鼠标停在标签上就会显示的内容。

folium.Marker(CantonTower,popup=parse_zhch('中国第一高塔'),tooltip=parse_zhch('广州塔')).add_to(m)为例,鼠标悬停时:
在这里插入图片描述
点击标签时:
在这里插入图片描述
要注意,直接传入中文会导致乱码,需要下面的函数进行一次转换:

def parse_zhch(s):
    return str(str(s).encode('ascii' , 'xmlcharrefreplace'))[2:-1]

除了文字信息,标记的图案和颜色也是可以修改的,例如:

folium.Marker(Cailan,popup=parse_zhch('特色点心'),tooltip=parse_zhch('蔡澜港式点心'),icon=folium.Icon(color='green',icon='glyphicon-cutlery')).add_to(m)

在这里插入图片描述
更多的图案,可以在这个网站上寻找。

由于是外国网站,所以访问和使用图案的时候,需要“科学上网”。

能够提供图案的不止这一家网站,例如另一个网站,只是调用图案的语句有所不同:

folium.Marker(
    location = Cailan, 
    popup=parse_zhch('233'), 
    icon=folium.Icon(color='green' , prefix='fa' , icon='adjust')
).add_to(m)

在这里插入图片描述
但是这个网站上的一些图案博主即使开“科学上网”也无法正常使用,有些不开就能用,令人摸不着头脑。

人机交互

除了上述打标记并弹出文字的方式外,还有一些其他的与地图交互的方式,比如加上如下语句,就可以在点击地图时显示对应坐标的纬度与经度:

m.add_child(folium.LatLngPopup())

在这里插入图片描述
还可以通过这个语句,使得点击过后会在地图上生成新的标记,这个标记同样可以有popup。不过,上述其他对标记的魔改似乎无法在这种情况下生效:

m.add_child(folium.ClickForMarker(popup='wow'))

失败案例:
在这里插入图片描述
成功案例:
在这里插入图片描述

保存地图

保存就很简单,使用地图名.save("文件名.html")即可,生成的文件会保存在.ipynb同一目录下:
在这里插入图片描述
在这里插入图片描述
需要注意的是,如果用国外网站的图案魔改了标记,保存时也要打开“科学上网”才行。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值