找回密码
 会员注册
查看: 26|回复: 0

PythonFolium库:地理数据可视化

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
67441
发表于 2024-9-4 20:42:09 | 显示全部楼层 |阅读模式
更多Python学习内容:ipengtao.comFolium是一个基于Python的地理数据可视化库,它通过简洁的接口将Python的数据操作能力与Leaflet.js的地图呈现能力结合在一起。Folium使得创建交互式地图变得非常简单,广泛应用于数据分析、地理信息系统(GIS)和Web应用程序。本文将详细介绍Folium库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。安装Folium可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:pip install folium主要功能地图创建:支持多种地图图层和底图。标记和弹出信息:支持在地图上添加标记和弹出信息。绘制形状:支持绘制多边形、折线和圆形等几何图形。热力图和聚合图:支持创建热力图和点聚合图。数据集成:支持与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 foliumfrom folium.plugins import HeatMap# 创建一个地图对象m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)# 示例数据data = [    [45.5236, -122.6750, 1],    [45.5289, -122.6829, 1],    [45.5289, -122.6674, 1]]# 添加热力图HeatMap(data).add_to(m)# 保存地图到HTML文件m.save('map_with_heatmap.html')创建点聚合图以下示例展示了如何使用Folium创建点聚合图:import foliumfrom 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.5236, 45.5289, 45.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 foliumimport pandas as pd# 创建一个地图对象m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)# 示例数据data = pd.DataFrame({    'lat': [45.5236, 45.5289, 45.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.6750, 45.5236]            },            "properties": {                "name": "Portland"            }        }    ]}# 添加GeoJSON图层folium.GeoJson(geojson_data).add_to(m)# 保存地图到HTML文件m.save('map_with_geojson.html')实践应用可视化地理数据集以下示例展示了如何使用Folium可视化一个地理数据集,例如城市人口数据:import foliumimport pandas as pd# 示例数据data = pd.DataFrame({    'city': ['Portland', 'San Francisco', 'Los Angeles'],    'lat': [45.5236, 37.7749, 34.0522],    'lon': [-122.6750, -122.4194, -118.2437],    'population': [652503, 884363, 3999759]})# 创建一个地图对象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 gpdimport folium# 加载示例GeoDataFramegdf = 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 oint').add_to(m)folium.Marker(    location=[45.5289, -122.6829],    popup='Middle oint').add_to(m)folium.Marker(    location=[45.5289, -122.6674],    popup='End oint').add_to(m)# 保存地图到HTML文件m.save('map_with_travel_route.html')可视化实时数据以下示例展示了如何使用Folium可视化实时数据,例如城市温度数据:import foliumimport 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库,提高地理数据可视化的效率和效果。如果你觉得文章还不错,请大家 点赞、分享、留言 ,因为这将是我持续输出更多优质文章的最强动力!更多Python学习内容:ipengtao.com如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!往期推荐Python中的iter()函数:迭代器的生成工具Python中的isinstance()函数:类型检查的利器Python中的sorted()函数:排序的利器Python中的hash()函数:哈希值的奥秘Python中的slice()函数:切片的利器Python的tuple()函数:创建不可变序列点击下方“阅读原文”查看更多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 01:12 , Processed in 0.454136 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表