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

使用Python地图绘制工具——folium全攻略

时间:2023-03-25 20:51:03 Python

我们用folium绘制地图已经多次,有爱好者反映坐标点可能是百度地图、高德地图或腾讯地图等的经纬度.,然后发现用默认的地图底图绘制时有明显的偏移。另外,有小伙伴为发表论文绘制地图,论文要求地图显示为英文或中英文;同样的,也有爱好者说如果要用卫星图来显示等等,那么,今天就来介绍一下根据这些情况改变folium的地图底图样式的完整指南:关于folium.Map()构建的准备工作-地图基础地图样式和各种第三方地图基础地图样式4.1。高德地图4.2。智图GeoQ4.3。腾讯地图4.4。天地地图-补充1.准备工作有些朋友可能没有用过folium,它其实是一个python专业地图绘制的第三方库,所以在使用前需要先安装。pipinstallfolium安装完成后,我们可以在jupyterlab中演示如下:importfoliumm=folium.Map()m默认就是上面的输出,其实就是一个交互式地图,支持缩略图放大,拖拽等操作。如果想把输出保存到本地,可以这样:m.save('map.html')可以看到这个文件保存在本地,浏览器可以打开进行交互操作。上面的map文件就是一个普通的流程...2.关于folium.Map()在前面的部分我们可以看到这个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',Fferscontrolvase,vase=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可以看到TsinghuaUniversityCampusTsinghuaUniversityCampus在上面简单介绍了Map的参数。接下来我们来看看地图底图样式的选择吧~3.内置地图底图样式我们看到folium其实内置了几种地图底图样式,其中一些需要申请key.由于我这里没有申请成功,就不做演示了。“OpenStreetMap”“MapboxBright”(免费图块的有限缩放级别)“MapboxControlRoom”(免费图块的有限缩放级别)“Stamen”(地形、墨粉和水彩)“Cloudmade”(必须通过API密钥)“mapbox”(必须通过API键)“cartodb”(potitronanddark_matter)地势m=m=folium.map([40.002694,116.322373],瓷砖='stamenTerrain',zoom_start=15,control_scale=true)无标注底图m=folium.map([40.002694,116.322373],tiles='stamentoner',zoom_start=15,control_scale=true)m水墨画底图m=folium.map([40.002694,116.322373],tilesStamenWatercolor',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='Gold-纯英文控件',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],avitiles='1.is.wprdauton0.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='colorversion',zoom_start=15,)m暖色版m=folium.Map([40.002694,2173.3]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],ge.tilesomap://q'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/administrativeMap_division/boundaryandlabel{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_OnlySyvermbol/MapSer/{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='暖色街道地图',)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=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=defaultFOTRfault&TI=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=',attr='daymap-vector',zoom_start=10,2233)mdaymapvectornotem=folium.Map([40.0117694,],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.32tiles)='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],cngo7tiles.it=and'http://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=',zstartoom_attr='天图-地形标记'=3,)mBaidumap我这里测试失败,暂时没有找到合适的替代方案。另外,当你使用经纬度坐标点进行地图绘制时,如:标记点、绘制区域、热力图绘制等,你需要考虑经纬度坐标是在哪个地图系统下,然后使用对应地图系统绘制的相关底图准确无误。