Python+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)
【Python+folium绘制精美地图的示例详解】我们简单试下
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绘制地图的资料请关注脚本之家其它相关文章!
推荐阅读
- SVG 绘制自适应的菱形
- Python超简单分析评论提取关键词制作精美词云流程
- 【译】绘制一棵漂亮的树
- Qt使用QWT绘制柱状图详解
- 再不用怕 Markdown 中的绘图了,GitHub 官方支持 Mermaid 图表绘制工具
- python密度函数曲线_python – 用matplotlib样本绘制概率密度函数
- python如何绘制曲线图_如何使用Python的Pandas库绘制折线图
- python统计数据画概率曲线_[python常用图件绘制#04]核密度曲线图(峰值点显示)...
- python读取excel画折线图_python读取excel数据绘制简单曲线图的完整步骤记录
- python|Python绘制概率曲线三