当前位置: 首页 > 后端技术 > Python

使用Python地图绘制工具——folium指南

时间:2023-03-25 20:18:26 Python

1。准备工作有些朋友可能没有用过folium,它其实是一个python专业地图绘制的第三方库,所以使用前需要先安装。pipinstallfolium安装完成后,我们可以在jupyterlab中演示如下:importfoliumm=folium.Map()m对于上面的输出,其实是一个交互式地图,支持缩略图放大、拖拽等操作。如果想把输出保存到本地,可以这样:m.save('map.html')可以看到这个文件保存在本地,浏览器可以打开进行交互操作。以上就是一个普通的流程...2.关于folium.Map()在前面的部分我们可以看到这个map这个东西直接就是一个map。下面我们就介绍一下它的一些常用参数。folium.Map(location=None,width='100%',height='100%',left='0%',top='0%',position='relative',tiles='OpenStreetMap',attr=无,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:地图样式,默认为OpenStreetMapattr:如果你设置的是非内置地图样式,需要传入这个值,可以理解为你选择的地图样式的名称。以上是一些常用的参数,最常用的是location、zoom_start和tileswait。有几种内置地图样式:-“OpenStreetMap”-“MapboxBright”(免费图块的有限缩放级别)-“MapboxControlRoom”(免费图块的有限缩放级别)-“Stamen”(地形,碳粉和Watercolor)-“Cloudmade”(必须传递API密钥)-“Mapbox”(必须传递API密钥)-“CartoDB”(正电子和dark_matter)让我们简单地尝试一下location和zoo_start参数:importfoliumm=folium.Map([40.002694,116.322373],zoom_start=15,control_scale=True)m可以看到上面的清华校园简单介绍了Map的参数。接下来我们来看看地图底图样式的选择~3。内置地图底图样式我们看到folium其实内置了几种地图底图样式,其中一些需要申请一个key。由于我这里没有申请成功,就不做演示了。“OpenStreetMap”“MapboxBright”(免费图块的有限缩放级别)“MapboxControlRoom”(免费图块的有限缩放级别)“Stamen”(地形、墨粉和水彩)“Cloudmade”(必须通过API密钥)“Mapbox”(必须通过API密钥)“CartoDB”(正电子和dark_matter)terrain地形底图m=folium.Map([40.002694,116.322373],tiles='StamenTerrain',zoom_start=15,control_scale=True)mblackand白色无标注底图m=folium.Map([40.002694,116.322373],tiles='花蕊墨粉',zoom_start=15,control_scale=True)m水墨画底图m=folium.Map([40.002694,116.322373],tiles='StamenWatercolor',zoom_start=15,control_scale=True)m以上是内置地图底图样式的一些展示,需要钥匙的小伙伴可以去这个网站申请: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,)satelliteimagetiles='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='Automap-RegularMap',zoom_start=15,)4.2.SmartMapGeoQ反正我觉得这个挺不错的。它很容易使用。各种风格的地图,即开即用的彩色版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='streetmap',)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='暖色-路网地图',)m4.3.腾讯地图tiles='https://rt0.map.gtimg.com/tile?z={z}&x={x}&y={-y}'folium.Map([39.904989,116.405285],tiles=瓦片,attr='腾讯地图')4.4.天地图https://www.tianditu.gov.cn/需要注册一个密钥天地图图片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='Tianditu-image')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-day地图向量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='天图地图-Vector',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='天地图-Terrain',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我在百度地图上测试失败,暂时没有找到合适的替代方案。另外,在使用经纬度坐标点进行地图绘制时,如标记点、绘制区域、热点图绘制等,需要考虑经纬度坐标属于哪个地图系统,然后用相应地图系统的相关底图才准确!文末你们的点赞和收藏是对我最大的鼓励!欢迎关注我,分享Python干货,交流Python技术。如果大家对文章有什么见解,或者有什么技术问题,欢迎在评论区留言讨论!