本文简单介绍python语言的地图可视化库Folium
Folium地址:https://github.com/python-visualization/folium
Leaflet地址:https://leafletjs.com
高德地图坐标拾取器:https://lbs.amap.com/console/show/picker
底图合集:http://openwhatevermap.xyz
高德底图:https://blog.csdn.net/fredricen/article/details/77189453
https://blog.csdn.net/ldlzhy1984/article/details/81015180
github预览:http://htmlpreview.github.io/?https://github.com/PancakeCard/GroceryPublic/blob/master/visual/python_visualization_folium.html
效果图
能力概述
- Python语言
- 地图可视化
- 可以换(高德)底图
- 有添加点线面和简单配色的功能
- 可以导出为html页
简介
Folium是Leaflet.js的Python的API,即可以使用Python语言调用Leaflet的地图可视化能力。
其中,Leaflet是一个非常轻的前端地图可视化库。
实验
安装
pip install folium
初始化地图
默认参数为OpenStreetMap地图,(0,0)经纬度坐标,全球范围缩放
最简单的配置,初始化中心位置和缩放尺度
内置底图样式
文档说内置“Mapbox Bright”和“Mapbox Control Room”,本次实验中无法加载
瓦片底图(WGS84)
瓦片地址参考http://openwhatevermap.xyz
-
mapbox底图(需要自行申请Key)
-
水彩图
高德底图
瓦片地址参考页面顶部链接
- 街道图
http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
- 影像图
http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}
添加点、线、面要素
各种要素可以设置颜色、大小、文字标记等属性,具体看操作手册
这里以高德地图为底图,添加点、线、面形状
import folium
Map=folium.Map(location=[30.527831,114.361304],
zoom_start=14,
tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
attr='default'
)
folium.Marker([30.527831,114.361304],
popup=folium.Popup('武汉大学·信息学部<br>星湖田径场',max_width=1000),
tooltip='click here'
).add_to(Map)
folium.Polygon([
[30.532729,114.363],
[30.529162,114.354245],
[30.525262,114.358644]
]).add_to(Map)
folium.PolyLine([
[30.533,114.37],
[30.53,114.364],
[30.525,114.368]
],color='green').add_to(Map)
folium.Circle([30.529162,114.354245]
, 500
,color='red'
,fill_color='red'
,fillOpacity=0.5
).add_to(Map)
Map
坐标系统
以高德地图API的坐标提取器为准,取操场位置的坐标,并打在默认地图和高德地图上,可以看到坐标不同
导出html
Map.save('xixi.html')
其他
- 那么Folium的能力可以参照leaflet。Folium的例子不多,可以看看leaftlet有没有相关的东西,但还是要以Folium的手册为准。
- Folium可以可视化GeoJson文件,具体看手册;对于其他类型的数据格式,可以结合shapely、Geopandas等一起使用。
大背景
做地图可视化的方法,通常有
- 前端地图API,如高德、百度、Mapbox、OpenLayers、Leaflet、Cesium等;
- GIS桌面软件,如ArcGIS、QGIS等
- 其他可视化方法的一部分,如桌面软件Tabluea、Excel,前端的Echarts、D3.js,还有CorelDraw、PhotoShop等
其中
- 前端的需要一定的JavaScript技能点,至少要会改官网Examples;
- 桌面软件部分,手动操作不灵活,精细配图会比较好看,功能比较全;
- 其他方法各取所需,看用途和技能点,如有在Echarts基础上做pyecharts的,也具有一点地图的内容,CorelDraw做地图很好看。。。
python语言近年来比较热,也有很多可视化库可以用,但是在地图的可视化方面很弱。有一些可视化库也支持一点点,如plotly内置的mapbox可视化;还有上面提到的的pyecharts可以做形状,底图(应该)可以用百度地图。但是这些或者不灵活、或者限定了底图,基本能力还是有的,虽然都不全。
背景完,具体内容到页面顶部。