folium函数总结

本文介绍了如何使用folium在Jupyter Notebook中创建地图,包括设置经纬度、缩放级别,添加标记、热力图和小地图等基本操作。同时讲解了MarkerCluster的功能和不同地图样式的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

folium

folium的运行依赖于jupyter notebook , 或者保存html之后打开

创建一个简单的地图
import folium
m = folium.Map(location=[32.03,118.85],zoom_start=16)
m

HhxEbq.png

参数描述
location经纬度 , 注意是 [纬度,经度]
zoom_start缩放等级 , 数字越大图片上显示的越详细
control_scalebool , 可选是否显示缩放比例
width地图的宽度 , 默认’100%’ , 格式为 ‘xx%’
height地图的高度 , 默认’100%’ , 格式为 ‘xx%’
tiles地图风格 :
‘OpenStreetMap’ : 默认
‘Stamen Terrain’ : 带有地形与海拔
’Stamen Toner’ : 纯黑白
’Stamen Watercolor’ : 类似卡通涂鸦风格
’CartoDB positron’ : 浅白色简约 , 全英文
’CartoDB dark_matter’ : 黑色简约
保存html打开地图

这样地图会显得更加的大 , 截图更方便

import folium
import webbrowser as wb

m = folium.Map(location=[32.03,118.85],zoom_start=16)
m.save("m.html")
wb.open("m.html")
点击显示经纬度
m.add_child(folium.LatLngPopup())

HhxYa6.png

Latitude : 纬度

Longitude : 经度

对地点进行标记

使用之前最好翻墙

folium.Marker([32.0246,118.8518],
              popup='<i>My dormitory</i>',
              icon=folium.Icon(icon='cloud')
             ).add_to(m)

HhxrqI.png

参数描述
popup点击这个标记之后显示的文字
color这个标记的颜色
icon_color这个标记的icon的颜色
icon这个标记的符号 , 符号见附录1

在添加了多个标记时会显示数字 , 可以用来描述数量和密度 , 在添加标记的时候最好使用 MarkerCluster , MarkerCluster可以对添加的标记进行集群 , 类似于热力图在缩放时会集群 , 使用的时候只是改变了add_to的对象 , 以后都改变成了这个新的变量

MarkerCluster : Provides Beautiful Animated Marker Clustering functionality for maps.

from folium.plugins import MarkerCluster
marker_cluster = MarkerCluster().add_to(m)

folium.Marker(
    location=[32.03,118.85]
).add_to(marker_cluster)

folium.Marker(
    location=[32.04,118.86]
).add_to(marker_cluster)

folium.Marker(
    location=[32.02,118.84]
).add_to(marker_cluster)

HhxzLR.png

点击添加标记
m.add_child(folium.ClickForMarker())

HhzwkV.png

画一个圆
folium.Circle(
    radius=100,
    location=[32.03,118.85],
    color='hotpink',
    fill=True,
    fill_color='blue'
).add_to(m)

Hhz6X9.png

参数描述
radius圆的半径
location圆心的经纬度
color圆的线的颜色
fill是否填充阴影
fill_color填充阴影的颜色
画一个有填充的图形
folium.GeoJson(data={ "type": "Polygon","coordinates": [[[100.0, 0.0],[101.0, 0.0],[102.0,1]]]}).add_to(m)

H4SG4K.png

修改文中列表即可

画一条线
ls = folium.PolyLine(locations=[[32.03,118.85],[32.0246,118.8518]],
                     color='blue').add_to(m)

H4SDEt.png

location 里也可以有多个位置 , 然后他们将会被挨个连起来

画热力图
data = [[32.03,118.85,0.7],[32.13,118.86,0.03],[32.23,118.95,0.6]]
folium.plugins.HeatMap(data).add_to(m)

H4SXr9.png
H4SOKJ.png

  • 通过向HeatMap传入data参数画热力图
  • 形式为 [ [ l a t 1 , l o n g 1 , h e a t 1 ] , [ l a t 2 , l o n g 2 , h e a t 2 ] . . . [ l a t n , l o n g n , h e a t n ] ] [[lat_1,long_1,heat_1],[lat_2,long_2,heat_2]...[lat_n,long_n,heat_n]] [[lat1,long1,heat1],[lat2,long2,heat2]...[latn,longn,heatn]]
  • h e a t heat heat的取值为 [ 0 , 1 ] [0,1] [0,1]
  • 原理为在data的所有点处画一个热度 , 当地图缩放时 , 缩放点的 h e a t heat heat就会相加然后显示
添加小地图

最好先翻墙

minimap = folium.plugins.MiniMap(toggle_display=True,
                  tile_layer='OpenStreetMap',
                  position='topleft',
                  width=100,
                  height=100)
m.add_child(minimap)

H4pfzD.png

参考资料

folium基础内容介绍

folium进阶内容介绍

folium官网

拓展资料

jupyter 示例

geoplot上

geoplot下

地理信息可视化

附录

附录1

HhFqpV.png
HhFXXF.png
HhFLlT.png
HhFO6U.png
HhFvm4.png
HhFHf0.png

### Folium 中 `add_to` 方法的使用说明 Folium 是一个用于创建交互式地图的强大 Python 库,它基于 Leaflet.js 构建。`add_to` 方法是 Folium 的核心功能之一,主要用于将各种地理对象(如标记、多边形、热力图等)添加到地图实例中。 以下是关于 `add_to` 方法的具体介绍及其用法: #### 1. 基本概念 `add_to` 方法的作用是将某个 GeoJSON 对象或其他支持的地图元素绑定到指定的地图实例或父层上。通常情况下,该方法被用来向地图添加标记、弹窗提示框以及其他可视化组件[^1]。 #### 2. 参数描述 `add_to` 方法只有一个参数: - **map_or_layer**: 表示目标地图实例或者父层对象。可以是一个完整的地图 (`folium.Map`) 或者其他子层 (Layer)。 #### 3. 示例代码 下面通过几个具体的例子来展示如何使用 `add_to` 方法。 ##### 添加单个 Marker 到地图 ```python import folium # 创建地图实例 m = folium.Map(location=[45.5236, -122.6750], zoom_start=13) # 定义一个 Marker 并调用 add_to 方法将其添加至地图 marker = folium.Marker( location=[45.5236, -122.6750], popup="Portland" ).add_to(m) # 将地图保存为 HTML 文件 m.save('single_marker.html') ``` 上述代码展示了如何定义并添加单一标记到地图上。 ##### 批量添加多个 Markers 如果需要一次性批量添加多个标记,则可以通过循环操作完成。 ```python import folium # 初始化地图 m = folium.Map(location=[45.5236, -122.6750], zoom_start=13) # 预设位置列表 locations = [ {"loc": [45.5236, -122.6750], "popup_text": 'Marker A'}, {"loc": [45.5240, -122.6760], "popup_text": 'Marker B'} ] for loc_info in locations: marker = folium.Marker(loc_info["loc"], popup=loc_info["popup_text"]) marker.add_to(m) # 输出文件 m.save('multiple_markers.html') ``` 此脚本实现了多次调用 `add_to` 来加载不同坐标的标注点。 ##### 结合 FeatureGroup 进行分组管理 当项目复杂度增加时,推荐借助 `FeatureGroup` 组件统一管理和控制一组要素的行为。 ```python import folium # 新建基础地图框架 m = folium.Map([39.93, 116.40], zoom_start=10) # 创建特征群组 fg = folium.FeatureGroup(name="My Points") # 向 FG 内部追加若干 markers folium.Marker([39.93, 116.40], popup="<b>Point One</b>").add_to(fg) folium.Marker([39.94, 116.41], popup="<i>Point Two</i>").add_to(fg) # 把整个 FG 加载回主 map 上面 fg.add_to(m) # 开启图层控制器显示效果 folium.LayerControl().add_to(m) # 存储最终成果 m.save("feature_group_example.html") ``` 这里演示了先构建好一个容器型结构——即 feature group ——再逐条填充数据项最后整体挂接到全局视图中的流程[^2]。 --- ### 总结 综上所述,`add_to` 函数提供了灵活的方式让开发者能够轻松地把各类空间实体附加给既定的目标载体之上;无论是单独处理还是成批导入均能胜任良好表现。同时配合辅助类比如 FeatureGroups 可进一步增强程序逻辑清晰程度以及用户体验友好性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

d3ac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值