使用 Python 地图绘制工具 -- folium 全攻略
咱们用folium
进行过多次地图绘制,有粉丝反馈在进行地图绘制的时候坐标点可能是百度地图经纬度、高德地图经纬度或者腾讯地图经纬度等情况,然后发现用默认的地图底图绘制的时候存在明显的偏移
另外,还有小伙伴进行地图绘制用于论文的发表,而论文要求地图是英文或者中英文显示;同样的,还有粉丝表示想用卫星影像图显示等等
那么,今天我们就针对这些情况来介绍一下 folium
更换地图底图样式的全攻略
目录:
1. 准备工作
2. 关于folium.Map()
3. 内建地图底图样式
4. 多种第三方地图底图样式
4.1. 高德地图
4.2. 智图GeoQ
4.3. 腾讯地图
4.4. 天地图
5. 补充
1. 准备工作
有朋友可能没用过folium
,它其实就是python
的一个专业绘制地图的第三方库,所以在使用之前需要先安装它。
pip install folium
在安装完成之后,我们可以在jupyterlab
进行演示如下:
import foliumm = folium.Map()
m
默认
对于上面的输出,其实是一个可交互
的地图,支持放大缩写拖拽等等。
如果你想将输出存在本地,可以这样来:
m.save('map.html')
可以看到本地就存了这个一个文件,浏览器打开就可以进行交互式操作了。
map文件
以上就是一个平平淡淡的过程......
2. 关于folium.Map()
在上一部分我们可以看到这个map
玩意直接就是一个地图啦,这里我们就介绍一下它常用的几个参数。
folium.Map(location=None,width='100%',height='100%',left='0%',top='0%',position='relative',tiles='OpenStreetMap',attr=None,min_zoom=0,max_zoom=18,zoom_start=10,min_lat=-90,max_lat=90,min_lon=-180,max_lon=180,max_bounds=False,crs='EPSG3857',control_scale=False,prefer_canvas=False,no_touch=False,disable_3d=False,png_enabled=False,zoom_control=True,**kwargs,
)
参数可真多啊!!
没有参数的
folium.Map()
将得到一张世界地图。
location:地图中心,[40.002694, 116.322373]是清华大学校区;
zoom_start:比例尺,默认为10级,大约是一个城市的范围;
其他常用参数包括:
width
和height
:地图的长宽,如果是int则表示像素值,如果是str则表示百分比;
max_zoom
:地图可以手动调节的最大比例,默认为18级;
control_scale
:是否在地图上添加比例尺,默认为False;
no_touch
:是否禁止手动操作,默认为False;tiles:地图样式,默认为OpenStreetMap
attr
:如果设置非内建地图样式,则需要传入这个值,可以理解为你选择的地图样式名称
以上是常用的一些参数,而最常用的莫过于 location
、zoom_start
和tiles
等。
内建地图样式还有一下几种:
- "OpenStreetMap"
- "Mapbox Bright" (Limited levels of zoom for free tiles)
- "Mapbox Control Room" (Limited levels of zoom for free tiles)
- "Stamen" (Terrain, Toner, and Watercolor)
- "Cloudmade" (Must pass API key)
- "Mapbox" (Must pass API key)
- "CartoDB" (positron and dark_matter)
我们简单试下location
和zoo_start
参数:
import foliumm = folium.Map([40.002694, 116.322373],zoom_start=15,control_scale=True)
m
可以看到清华大学校区
清华大学校区
以上对Map
的参数进行了简单的介绍,接下来,我们就来看看地图底图样式的选取情况吧~
3. 内建地图底图样式
我们看到folium
其实有好几种内建地图底图样式,其中部分需要去申请key
,由于我这边没有申请成功就不做演示了。
"OpenStreetMap"
"Mapbox Bright" (Limited levels of zoom for free tiles)
"Mapbox Control Room" (Limited levels of zoom for free tiles)
"Stamen" (Terrain, Toner, and Watercolor)
"Cloudmade" (Must pass API key)
"Mapbox" (Must pass API key)
"CartoDB" (positron and dark_matter)
地势地形底图
m = folium.Map([40.002694, 116.322373],tiles='Stamen Terrain',zoom_start=15,control_scale=True)
m
黑白无标记底图
m = folium.Map([40.002694, 116.322373],tiles='Stamen Toner',zoom_start=15,control_scale=True)
m
水墨画底图
m = folium.Map([40.002694, 116.322373],tiles='Stamen Watercolor',zoom_start=15,control_scale=True)
m
以上就是内建地图底图样式的一些展示,部分需要key的大家可以去这个网站申请:
http://openwhatevermap.xyz/(可惜我上不去)
另外,在这里也可以找到一些地图底图
http://leaflet-extras.github.io/leaflet-providers/preview/
我后续也会去研究这些地图底图样式,试着分享更多有趣的地图分享给大家。
当然了,国内咱们用的较多的地图是高德、百度和腾讯地图等,接下来我们就来玩玩!
4. 多种第三方地图底图样式
这里我将演示高德地图、智图GeoQ和腾讯地图等
4.1. 高德地图
高德地图的 中英文地图、卫星影像图、街道图与常规图
中英文地图
folium.Map([40.002694, 116.322373],tiles='https://webrd02.is.autonavi.com/appmaptile?lang=zh_en&size=1&scale=1&style=8&x={x}&y={y}&z={z}',attr='高德-中英文对照',zoom_start=15,)
纯英文地图
folium.Map([40.002694, 116.322373],tiles='https://webrd02.is.autonavi.com/appmaptile?lang=en&size=1&scale=1&style=8&x={x}&y={y}&z={z}',attr='高德-纯英文对照',zoom_start=15,)
卫星影像图
tiles = 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
folium.Map([40.002694, 116.322373],tiles= tiles,attr='高德-卫星影像图',zoom_start=15,)
街道图
folium.Map([40.002694, 116.322373],tiles= 'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8<ype=11',attr='高德-街道路网图',zoom_start=10,)
常规图
folium.Map([40.002694, 116.322373],tiles= 'https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7',attr='高德-常规图',zoom_start=15,)
4.2. 智图GeoQ
反正我觉得这个蛮好的,用起来简单
多种风格地图,即拿即用
彩色版
m = folium.Map([40.002694, 116.322373],tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}',attr='彩色版',zoom_start=15,)
m
暖色版
m = folium.Map([40.002694, 116.322373],tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}',attr='暖色版',zoom_start=15,)
m
灰色版
m = folium.Map([40.002694, 116.322373],tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}',attr='灰色版',zoom_start=15,)
m
蓝黑版
m = folium.Map([40.002694, 116.322373],tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}',attr='蓝黑版',zoom_start=15,)
m
英文版
m = folium.Map([40.002694, 116.322373],tiles='http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunityENG/MapServer/tile/{z}/{y}/{x}',attr='英文版',zoom_start=15,)
m
中国行政区划边界
m = folium.Map([40.002694, 116.322373],tiles='http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/administrative_division_boundaryandlabel/MapServer/tile/{z}/{y}/{x}',attr='中国行政区划边界',)
m
水系专题
m = folium.Map([40.002694, 116.322373],tiles='http://thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}',attr='水系专题',)
m
街道网图
m = folium.Map([40.002694, 116.322373],tiles='http://thematic.geoq.cn/arcgis/rest/services/StreetThematicMaps/Gray_OnlySymbol/MapServer/tile/{z}/{y}/{x}',attr='街道网图',)
m
暖色街道网图
m = folium.Map([40.002694, 116.322373],tiles='http://thematic.geoq.cn/arcgis/rest/services/StreetThematicMaps/Warm_OnlySymbol/MapServer/tile/{z}/{y}/{x}',attr='暖色-街道网图',)
m
4.3. 腾讯地图
tiles = 'https://rt0.map.gtimg.com/tile?z={z}&x={x}&y={-y}'
folium.Map([39.904989, 116.405285],tiles= tiles,attr='腾讯地图' )
4.4. 天地图
https://www.tianditu.gov.cn/
需要注册一个key
天地图影像
m = folium.Map([40.002694, 116.322373],tiles='http://t7.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='天地图-影像')
m
天地图影像注记
m = folium.Map([40.002694, 116.322373],tiles='http://t7.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='天地图-影像标注')
m
天地图矢量
m = folium.Map([40.002694, 116.322373],tiles='http://t7.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='天地图-矢量',zoom_start=10,)
m
天地图矢量注记
m = folium.Map([40.002694, 116.322373],tiles='http://t7.tianditu.gov.cn/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='天地图-矢量注记')
m
天地图地形
m = folium.Map([40.002694, 116.322373],tiles='http://t7.tianditu.gov.cn/ter_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ter&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='天地图-地形',zoom_start=3,)
m
天地图地形注记
m = folium.Map([40.002694, 116.322373],tiles='http://t7.tianditu.gov.cn/cta_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cta&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='天地图-地形标记',zoom_start=3,)
m
百度地图我这边测试失败了,暂时没有找到合适的替换方案。
5. 补充
其实,我们还可以找更多的地图底图瓦片 URL 来进行替换,多样化我们的地图绘制。
另外,大家在用经纬度坐标点进行地图绘制的时候,比如:标记点、绘制区域、热力图绘制等等,需要考虑经纬度坐标是哪个地图系下面的,然后再用对应地图系的相关底图进行绘制才准确
使用 Python 地图绘制工具 -- folium 全攻略相关推荐
- Python 地图绘制工具 -- folium
暂存3个链接,以备查阅与后续操作. 1. folium入门多种参数尝试 2. 多种底图选择 3. 绘制线路
- 3 vue 线条箭头_教程|PPT绘制箭头最全攻略,收藏一下!
微信公众号:有宝物的柜子编辑:落水无波 2020-05-02 原创 由于没有较好的方向,公众号的更新一直暂停,根据昨天的留言,今天更新一篇关于绘制各类箭头的PPT教程,希望帮到需要的同学. 那么,我们 ...
- Hibernate代码生成工具 设计全攻略
1.简述Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,提供HQL查询语言,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.使用Hibernat ...
- 用Python实现磁盘IO操作全攻略,让数据流动起来!
导读:IO在计算机中指的是Input/Output,也就是输入输出.凡是用到数据交换的地方,都会涉及IO编程,例如磁盘.网络的数据传输. 在IO编程中,Stream(流)是一种重要的概念,分为输入流( ...
- 用python实现yale人脸数据集降维_用Python实现磁盘IO操作全攻略,让数据流动起来!...
导读:IO在计算机中指的是Input/Output,也就是输入输出.凡是用到数据交换的地方,都会涉及IO编程,例如磁盘.网络的数据传输. 在IO编程中,Stream(流)是一种重要的概念,分为输入流( ...
- 数据地图绘制工具汇总
转自:http://www.civn.cn/p/11293.html CIVN之前介绍过TileMill.unfolding.Batchgeo等地图工具,Nathan Yau在他的著作<鲜活的数 ...
- 基于python的时间序列案例-时间序列预测全攻略(附带Python代码)
原标题:时间序列预测全攻略(附带Python代码) 介绍 时间序列(简称TS)被认为是分析领域比较少人知道的技能.(我也是几天前才知道它).但是你一定知道最近的小型编程马拉松就是基于时间序列发展起来的 ...
- matlab绘制布尔运算图,最强干货——PPT布尔运算最全攻略
原标题:最强干货--PPT布尔运算最全攻略 在开始之前要强调一下, 小可爱们,请先检查一下你用的是WPS还是office?WPS是没有布尔运算这个功能的!! 如果你非要用WPS,那小编也是没有办法, ...
- 这个地图绘制工具太赞了,推荐~~
来源:DataCharm 之前小编在公众号中介绍了多篇关于空间可视化图表绘制内容,受到了很多同学的喜欢,但也有很多同学说没有Python的版本,今天小编就推荐一个超赞的学术科研类地图可视化绘制工具-P ...
最新文章
- Sublime 快捷键及使用技巧
- 做一件事情的3个关键指标:兴趣、能力和回报
- 保驾护航金三银四,妈妈再也不用担心我找工作了!
- Linux下安装LAMP的步骤
- Go语言编程(旧读书笔记)
- 黑客都使用什么编程语言?
- PyTorch 学习笔记:transforms的二十二个方法(transforms用法非常详细)
- odoo 重写unlink方法
- Maya2022安装教程
- VC遍历文件夹下所有文件和文件夹
- steam 无法连接远程计算机,steam联机连不上 steam联不上网
- 整数无序数组求第k大数
- ISIS如何选举DIS的,DIS的具体作用,和OSPF的DR有什么相同和不同点。举例说明
- C51---PWM 脉冲宽度调制
- 月饼电商“内卷”?看数据如何驱动营销,全链路精细化运营抢占C位!
- mybatis-introduce-有传统实现类
- linux 山东大学 试卷_绝密·启用前丨《2019年山东大学研究生高考试题》
- vue.js毕业设计,基于vue.js前后端分离在线教育视频点播系统(H5移动项目) 开题报告
- 试用微软 必应输入法 功能简洁
- 利用Python爬虫爬取网页福利图片