一、简介

  folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leaflet的相关功能。通过定义一个Map对象并不断添加图层元素,最后将Map对象保存为html文件并在浏览器中进行显示。

二、安装

pip3 install folium --user

三、基本用法

#! /usr/bin/env pythonimport foliumdef run():'''创建Map对象'''m = folium.Map(location=[39.90,116.38], zoom_start=12, control_scale=True, tiles='CartoDB dark_matter') # 绘制地图,确定聚焦点, # TianAnMen 东经116.38 北纬:39.90# location:tuple或list类型输入,用于控制初始地图中心点的坐标,格式为(纬度,经度)或[纬度,经度],默认为None# max_zoom:int型,控制地图可以放大程度的上限,默认为18# control_scale:bool型,控制是否在地图上添加比例尺,默认为False即不添加# height:控制地图的高度,格式同width# width:int型或str型,int型时,传入的是地图宽度的像素值;str型时,传入的是地图宽度的百分比,形式为'xx%'。默认为'100%'# tiles:str型,用于控制绘图调用的地图样式,默认为'OpenStreetMap',也有一些其他的内建地图样式;也可以传入'None'来绘制一个没有风格的朴素地图,或传入一个URL来使用其它的自选osm# 可选的样式包括:OpenStreetMap、Stamen Terrain、Stamen Toner、Stamen Watercolor、CartoDB positron、CartoDB dark_matter、Mapbox Bright等# attr:str型,当在tiles中使用自选URL内的osm时使用,用于给自选osm命名'''画点'''lat = 39.90lon = 116.38folium.Marker([lat,lon], popup='lat:{0:.2f}'.format(lat) + '\nlon:{0:.1f}'.format(lon)).add_to(m)  # 定一个点,放到地图m上folium.Marker([39.90,116.41], popup='<i>浮标上面的那个文字</i>', icon=folium.Icon(color='red')).add_to(m) # 把浮标变成红色,i为斜体folium.Marker([39.90,116.35], popup='<b>浮标上面的那个文字</b>', icon=folium.Icon(color='green', icon='cloud')).add_to(m) # 浮标改图样,icon='info-sign',b为粗体# location:同folium.Map()中的同名参数,用于确定标记部件的经纬位置# popup:str型或folium.Popup()对象输入,用于控制标记部件的具体样式(folium内部自建了许多样式),默认为None,即不显示部件# icon:folium.Icon()对象,用于设置popup定义的部件的具体颜色、图标内容等'''画圆'''name = '天安门'position = '39.90,116.38'color = ['#FF66CC', '#E2DBF3', '#D3CAEE', '#B7A6E2', '#A895DD', '#9A83D7', '#8C71D1', '#7D60CC', '#6F4EC6','#613DC1', '#5938B0', '#50329E', '#472D8D', '#3E277B', '#35226A', '#2D1C58', '#241747', '#1B1135','#F0EDF9', '#E2DBF3', '#D3CAEE', '#C5B8E8', '#B7A6E2', '#A895DD', '#9A83D7', '#8C71D1', '#7D60CC','#6F4EC6', '#613DC1', '#5938B0', '#50329E', '#472D8D', '#3E277B', '#35226A', '#2D1C58', '#241747','#1B1135', '#F0EDF9']  # 38种folium.Circle(location=[39.90,116.38], radius=100, popup="{0}经纬度为:{1}".format(name, position), color='crimson', fill=True, fill_color=color[0]).add_to(m)# location:同folium.Map()中的location,用于控制圆圈的圆心坐标# radius:int型,用于控制圆圈的半径,单位米,注意,在folium.Circle()中,radius因为半径的单位是米,所以其大小随着我们对地图的缩放程度而进行相应的变化#         但在与folium.CircleMarker()方法中的radius参数单位为像素,即其为屏幕上大小固定的一个圆圈,随着地图的缩放,其大小也不会发生变化# popup:str型或folium.Popup()对象,用于控制圆圈的样式,默认为None,即无样式# color:str型,用于控制圆圈的颜色,默认为十六进制颜色'#3388ff',即一种蓝色# fill:bool型,当为True时,圆圈内部将被填充上色彩,默认不填充# fill_color:str型,控制圆圈内部填充的色彩,默认与color参数一致'''画多边形'''ls = folium.PolyLine(locations=[[39.91,116.39],[39.89,116.39],[39.89,116.37],[39.91,116.37],[39.91,116.39]], color='blue')ls.add_to(m)# locations:二级嵌套的list,用于指定需要按顺序连接的坐标点,若要绘制闭合的几何图像,需要在传入列表的首尾传入同样的坐标[lat, lon]# color:str型,传入十六进制的颜色,用于控制线条的颜色,默认为'#03f'# weight:float型,用于控制线条的宽度,默认为5# opacity:float型,用于控制线条的透明度,默认为0.5# popup:str型或folium.Popup()对象,用于控制线条样式'''添加点击显示经纬度的子功能'''m.add_child(folium.LatLngPopup())'''点击地图任意位置产生一个新的图标'''# m.add_child(folium.ClickForMarker())# m.add_child(folium.ClickForMarker(popup='Waypoint'))html_path = '/home/alan/alan_projects/folium_test/test.html'm.save(html_path)
if __name__ == '__main__':run()

四、常用案例:根据经纬度文件画轨迹

轨迹文件:/tmp/route.txt

24.1764,117.8250
24.1766,117.8252
24.1761,117.8255
24.1762,117.8257
24.1759,117.8259
24.1687,117.8271
24.1735,117.8368
24.1761,117.8387
24.1747,117.8416
24.1703,117.8451
24.1637,117.856
24.1600,117.8718
24.1650,117.8839
24.1675,117.8957
24.1692,117.9002
24.1694,117.9094
24.1770,117.9234
24.1842,117.9245
24.1921,117.9201
24.2074,117.9280
24.2114,117.9280
24.2157,117.9339
24.2178,117.9434
24.2353,117.9627
24.2322,117.9780
24.2395,117.9804
24.2411,117.9977
24.2370,118.0014
24.2357,118.0066
24.2318,118.0100
#! /usr/bin/env pythonimport numpy as np
import foliumdef run():file_path = "/tmp/route.txt"route = []lats, lons = [], []for line in open(file_path):latlon = line.split(',')lat = float(latlon[0])lon = float(latlon[1])lats.append(lat)lons.append(lon)route.append([lat, lon])center = np.mean(route, axis=0)bounds = [[min(lats), min(lons)], [max(lats), max(lons)]]# 高德地图m = folium.Map(location=center,zoom_start=12,control_scale=True, tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',attr="http://ditu.amap.com/")folium.PolyLine(locations=route,color='blue',popup=folium.Popup('file_path: {}<br>'.format(file_path), max_width=400),opacity=1.0).add_to(m)folium.Circle(location=route[0],popup=folium.Popup('<b>Start</b><br>'+'lat: {}<br>'.format(route[0][0])+'lon: {}<br>'.format(route[0][1]), max_width=400),radius=100,color='green',fill_color='clear',fill=True,fill_opacity=0.5).add_to(m)folium.Circle(location=route[-1],popup=folium.Popup('<b>End</b><br>'+'lat: {}<br>'.format(route[-1][0])+'lon: {}<br>'.format(route[-1][1]), max_width=400),radius=100,color='red',fill_color='clear',fill=True,fill_opacity=0.5).add_to(m)folium.vector_layers.Polygon(locations=[[center[0],center[1]],[center[0]+0.01,center[1]],[center[0]+0.01,center[1]+0.01],[center[0],center[1]+0.01]],popup=folium.Popup('direction', max_width=400),color='cyan',weight=1,fill_opacity=0.2,opacity=0.5,fill=True).add_to(m)m.fit_bounds(bounds)html_path = '/tmp/test.html'm.save(html_path)
if __name__ == '__main__':run()

双击打开生成的html文件,即可在浏览器中看到轨迹

参考:

官方文档:https://python-visualization.github.io/folium/

官方案例:https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/


import folium
from folium.plugins import MousePosition
from folium.plugins import MeasureControl
from folium.features import DivIcon
from folium.features import LatLngPopup
from folium import IFrame

地图数据可视化库folium相关推荐

  1. python使用pyecharts库画地图数据可视化

    python使用pyecharts库画地图数据可视化 导库 中国地图 代码 结果 世界地图 代码 结果 省级地图 代码 结果 地级市地图 代码 结果 导库 from pyecharts import ...

  2. python每行输出5个数据_12个流行的Python数据可视化库总结

    总结了10个不同领域的 Python 数据可视化库,有常用的,也有比较小众的. 1. matplotlib matplotlib是Python数据可视化库的OG.尽管它已有十多年的历史,但仍然是Pyt ...

  3. 最近很火的数据动图python_12个流行的Python数据可视化库总结

    总结了10个不同领域的 Python 数据可视化库,有常用的,也有比较小众的. 1.  matplotlib matplotlib是Python数据可视化库的OG.尽管它已有十多年的历史,但仍然是Py ...

  4. Python: 除matplotlib外还有哪些数据可视化库?

    Python: 除matplotlib外还有哪些数据可视化库? matplotlib算是python比较底层的可视化库,可定制性强.图表资源丰富.简单易用.达到出版质量级别. 其它的可视化库诸如: s ...

  5. json树状图可视化_12个流行的Python数据可视化库总结

    总结了10个不同领域的 Python 数据可视化库,有常用的,也有比较小众的. 1. matplotlib matplotlib是Python数据可视化库的OG.尽管它已有十多年的历史,但仍然是Pyt ...

  6. python数据可视化库_python和r中用于数据可视化的前9个库

    python数据可视化库 In the rapidly growing world of today, when technology is expanding at a rate like neve ...

  7. 视频教程-Python数据可视化库:Matplotlib视频课程-Python

    Python数据可视化库:Matplotlib视频课程 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师, ...

  8. 全领域通吃,12个经典Python数据可视化库盘点

    责编 | 寇雪芹 头图 | 下载于视觉中国 来源 | 博文视点Broadview Python有很多数据可视化库,这些数据可视化库主要分为探索式可视化库和交互式可视化库.前者透过简单直接的视觉图形,更 ...

  9. python数据可视化库 动态的_Python数据可视化:Pandas库,只要一行代码就能实现...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章一级AI入门学习 ,作者小伍哥 刚接触Python的新手.小白,可以复制下面的链接去免费观 ...

最新文章

  1. java表单 mysql 乱码_java web当中表单提交到后台出现乱码的解决方法
  2. inotify结合rsync监控目录的实时变化
  3. MySQL为什么要使用内连接而不用外连接
  4. 关于盒模型的一点总结
  5. Atititi tesseract使用总结
  6. python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能
  7. 2--OC -- 类的创建与实例化
  8. Ubuntu18.04系统中python3.7安装MultiNEAT库
  9. C++父类和子类同名函数及继承关系---多态
  10. android studio 导入一个已有的android studio project作为lib使
  11. win7休眠 计算机管理,Win7休眠功能怎么关闭?
  12. HTML5七夕情人节表白网页❤抖音超火的樱花雨3D相册❤ HTML+CSS+JavaScript
  13. 服务器端脚本语言和客户端脚本语言
  14. 预编译及预处理的理解
  15. 亭江鹰猫山探险---“比野猪还野猪了”
  16. Unity零基础到入门 ☀️| 一起走进游戏引擎界大佬——Unity 的陈情往事,Unity故事背景介绍
  17. esp8266编译固件问题 踏坑之旅
  18. IAR集成开发环境中无法设置断点的问题
  19. matlab有限域多项式除法_有限域GF(2^8)的四则运算及拉格朗日插值
  20. 欢天寨机器人餐厅_成都这6家高人气亲子餐厅,专治“熊孩子”!

热门文章

  1. 泥瓦匠想做一个与众不同的技术匠
  2. Mac安装ffmpeg时 Failed to download resource quot;texi2htmlquot; 的解决办法
  3. 火狐浏览器,访问腾讯云服务器的时候,出现建立安全连接失败的问题。
  4. Docker:架构分解
  5. 移动拼图游戏(八数码问题) BFS版
  6. windows2012R2安装Microsoft Visual C++ 2015 Redistributable报错,提示0x80240017错误代码
  7. 慢慢来,一切都来得及 2012-01-16 15:02:22
  8. 做数据必知的十本书,你读过几本?
  9. 浅谈Marlin2.0
  10. 如何安装配置eosjs并连接到EOS区块链