2025年3月25日 星期二 甲辰(龙)年 月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python Folium库:地理数据可视化

时间:08-08来源:作者:点击数:24
城东书院 www.cdsy.xyz

Folium是一个基于Python的地理数据可视化库,它通过简洁的接口将Python的数据操作能力与Leaflet.js的地图呈现能力结合在一起。Folium使得创建交互式地图变得非常简单,广泛应用于数据分析、地理信息系统(GIS)和Web应用程序。本文将详细介绍Folium库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。

安装

Folium可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:

  • pip install folium

主要功能

  1. 地图创建:支持多种地图图层和底图。
  2. 标记和弹出信息:支持在地图上添加标记和弹出信息。
  3. 绘制形状:支持绘制多边形、折线和圆形等几何图形。
  4. 热力图和聚合图:支持创建热力图和点聚合图。
  5. 数据集成:支持与Pandas和GeoPandas数据框无缝集成。

基本操作

创建基础地图

以下示例展示了如何使用Folium创建一个基础地图:

  • import folium
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
  • # 保存地图到HTML文件
  • m.save('basic_map.html')
添加标记和弹出信息

以下示例展示了如何在地图上添加标记和弹出信息:

  • import folium
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 添加标记
  • folium.Marker(
  •     location=[45.5236-122.6750],
  •     popup='Portland, OR',
  •     icon=folium.Icon(icon='cloud')
  • ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_marker.html')
添加多边形

以下示例展示了如何在地图上添加多边形:

  • import folium
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 添加多边形
  • folium.Polygon(
  •     locations=[
  •         [45.5236, -122.6750],
  •         [45.5289, -122.6829],
  •         [45.5289, -122.6674]
  •     ],
  •     color='blue',
  •     fill=True,
  •     fill_color='blue'
  • ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_polygon.html')
添加折线

以下示例展示了如何在地图上添加折线:

  • import folium
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 添加折线
  • folium.PolyLine(
  •     locations=[
  •         [45.5236, -122.6750],
  •         [45.5289, -122.6829],
  •         [45.5289, -122.6674]
  •     ],
  •     color='red'
  • ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_polyline.html')

高级功能

创建热力图

以下示例展示了如何使用Folium创建热力图:

  • import folium
  • from folium.plugins import HeatMap
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 示例数据
  • data = [
  •     [45.5236-122.67501],
  •     [45.5289-122.68291],
  •     [45.5289-122.66741]
  • ]
  • # 添加热力图
  • HeatMap(data).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_heatmap.html')
创建点聚合图

以下示例展示了如何使用Folium创建点聚合图:

  • import folium
  • from folium.plugins import MarkerCluster
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
  • # 创建一个点聚合图层
  • marker_cluster = MarkerCluster().add_to(m)
  • # 添加标记到点聚合图层
  • for lat, lon in zip([45.523645.528945.5289], [-122.6750, -122.6829, -122.6674]):
  •     folium.Marker(location=[lat, lon]).add_to(marker_cluster)
  • # 保存地图到HTML文件
  • m.save('map_with_markercluster.html')
与Pandas集成

以下示例展示了如何将Pandas数据集成到Folium中:

  • import folium
  • import pandas as pd
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 示例数据
  • data = pd.DataFrame({
  •     'lat': [45.523645.528945.5289],
  •     'lon': [-122.6750-122.6829-122.6674],
  •     'name': ['Location 1''Location 2''Location 3']
  • })
  • # 添加标记
  • for i, row in data.iterrows():
  •     folium.Marker(
  •         location=[row['lat'], row['lon']],
  •         popup=row['name']
  •     ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_pandas.html')
绘制GeoJSON数据

以下示例展示了如何在Folium中绘制GeoJSON数据:

  • import folium
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 示例GeoJSON数据
  • geojson_data = {
  •     "type""FeatureCollection",
  •     "features": [
  •         {
  •             "type""Feature",
  •             "geometry": {
  •                 "type""Point",
  •                 "coordinates": [-122.675045.5236]
  •             },
  •             "properties": {
  •                 "name""Portland"
  •             }
  •         }
  •     ]
  • }
  • # 添加GeoJSON图层
  • folium.GeoJson(geojson_data).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_geojson.html')

实践应用

可视化地理数据集

以下示例展示了如何使用Folium可视化一个地理数据集,例如城市人口数据:

  • import folium
  • import pandas as pd
  • # 示例数据
  • data = pd.DataFrame({
  •     'city': ['Portland''San Francisco''Los Angeles'],
  •     'lat': [45.523637.774934.0522],
  •     'lon': [-122.6750, -122.4194, -118.2437],
  •     'population': [6525038843633999759]
  • })
  • # 创建一个地图对象
  • m = folium.Map(location=[37.7749, -122.4194], zoom_start=5)
  • # 添加标记和弹出信息
  • for i, row in data.iterrows():
  •     folium.Marker(
  •         location=[row['lat'], row['lon']],
  •         popup=f"{row['city']}{row['population']} people"
  •     ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_population.html')
结合GeoPandas进行空间分析

以下示例展示了如何结合GeoPandas和Folium进行空间分析和可视化:

  • import geopandas as gpd
  • import folium
  • # 加载示例GeoDataFrame
  • gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
  • # 过滤出美国
  • usa = gdf[gdf['name'] == 'United States']
  • # 创建一个地图对象
  • m = folium.Map(location=[37.7749-95.4194], zoom_start=4)
  • # 添加GeoDataFrame图层
  • folium.GeoJson(usa).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_geopandas.html')
创建可交互的旅行路线图

以下示例展示了如何使用Folium创建一个可交互的旅行路线图:

  • import folium
  • # 创建一个地图对象
  • m = folium.Map(location=[45.5236-122.6750], zoom_start=13)
  • # 添加旅行路线
  • folium.PolyLine(
  •     locations=[
  •         [45.5236, -122.6750],
  •         [45.5289, -122.6829],
  •         [45.5289, -122.6674]
  •     ],
  •     color='blue'
  • ).add_to(m)
  • # 添加标记
  • folium.Marker(
  •     location=[45.5236-122.6750],
  •     popup='Start Point'
  • ).add_to(m)
  • folium.Marker(
  •     location=[45.5289-122.6829],
  •     popup='Middle Point'
  • ).add_to(m)
  • folium.Marker(
  •     location=[45.5289-122.6674],
  •     popup='End Point'
  • ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_travel_route.html')
可视化实时数据

以下示例展示了如何使用Folium可视化实时数据,例如城市温度数据:

  • import folium
  • import requests
  • # 获取实时温度数据(这里使用一个虚拟API示例)
  • response = requests.get('https://api.example.com/cities/temperature')
  • data = response.json()
  • # 创建一个地图对象
  • m = folium.Map(location=[37.7749, -122.4194], zoom_start=5)
  • # 添加标记和弹出信息
  • for city in data:
  •     folium.Marker(
  •         location=[city['lat'], city['lon']],
  •         popup=f"{city['name']}{city['temperature']}°C"
  •     ).add_to(m)
  • # 保存地图到HTML文件
  • m.save('map_with_temperature.html')

总结

Folium库为Python开发者提供了一个强大且灵活的地理数据可视化工具。通过其简洁的API和丰富的功能,用户可以轻松创建交互式地图,并在地图上添加标记、绘制形状、创建热力图和点聚合图等。无论是在地理数据分析、Web地图应用开发还是实时数据可视化方面,Folium都能提供强大的支持和便利。本文详细介绍了Folium库的安装、主要功能、基本操作、高级功能及其实践应用,并提供了丰富的示例代码。希望在实际项目中能够充分利用Folium库,提高地理数据可视化的效率和效果。

城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐