1. 筹备工作
有敌人可能没用过folium
,它其实就是python
的一个业余绘制地图的第三方库,所以在应用之前须要先装置它。
pip install folium
在装置实现之后,咱们能够在jupyterlab
进行演示如下:
import foliumm = folium.Map()m
对于下面的输入,其实是一个可交互
的地图,反对放大缩写拖拽等等。
如果你想将输入存在本地,能够这样来:
m.save('map.html')
能够看到本地就存了这个一个文件,浏览器关上就能够进行交互式操作了。
以上就是一个平平淡淡的过程......
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....
我后续也会去钻研这些地图底图款式,试着分享更多乏味的地图分享给大家。
当然了,国内咱们用的较多的地图是高德、百度和腾讯地图等,接下来咱们就来玩玩!
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干货,交换Python技术。
对文章有何见解,或者有何技术问题,欢送在评论区一起留言探讨!