创建引人入胜的交互式可视化可以极大地增强对数据的理解和影响。
交互式地图是地理空间数据最有效的可视化方法之一。地图提供固有的上下文,并允许直观地探索模式、集群和异常值。
本文将演示如何使用 Folium 库通过 Python 构建交互式地图。
该地图将包含两层 - 一层显示火山位置和海拔,另一层显示国家人口密度。这让读者可以直观地了解火山与全球人口之间的空间关系。
完整的代码可以在我的GitHub 存储库(https://github.com/Scofield-Idehen/Map_Building_python.git)中找到。现在,查看交互式地图以了解哪些见解,分叉它并开始。
我们将首先介绍使用 Folium 和 Pandas 在 Python 中的实现。这将涉及读取数据集、准备数据、配置地图参数、添加图层和标记以及保存最终可视化。
然后,我们将重点介绍交互式地图中可观察到的一些关键见解和模式。Folium 提供了一种简单而强大的方法来生成引人注目的基于浏览器的地图。最后,读者将了解如何将 Python 和 Folium 用于各种地图和地理空间分析应用程序。
执行
首先,我们导入 Folium 和 Pandas 库,它们提供所需的映射功能和数据工具:
import folium import pandas
接下来,我们阅读按国家/地区划分的火山位置和人口估计的原始数据:
data =pandas.read_csv('Volcanoes.txt')
这提供了一个 Pandas 数据框,其中包含全球 1,500 多个火山的纬度、经度和海拔列。
我们将使用 GeoJSON 文件“world.json”作为国家/地区人口数据,其中包含所有国家/地区的多边形轮廓和人口统计数据。GeoJSON 是一种地理数据交换格式,可以与 Folium 等地图库完美配合。
我们可以从火山数据框中解析并提取我们需要的关键数据列:
lat = list(data["LAT"]) lon = list(data["LON"]) ele = list(data["ELEV"])
这提供了要绘制的每个火山的纬度、经度和海拔的列表。
接下来,我们定义一个颜色比例函数,它将根据火山标记的海拔值动态为其着色:
def colour_marker(elevation): if elevation < 1000: return 'red' elif 1000 <= elevation < 3000: return 'orange' else: return 'green'
低海拔地区为红色,中海拔地区为橙色,高海拔地区为绿色。这将火山海拔高度直观地编码到地图中。
解析数据后,我们现在可以创建以北美为中心的基本 Folium 地图:
map = folium.Map(location=[38.58, -99.08], zoom_start=6, tiles='OpenStreetMap')
我们添加两个要素组图层 - 一层用于火山,一层用于人口数据。Folium 中的要素组允许轻松打开/关闭不同地图元素的可见性。
f = folium.FeatureGroup(name="Volcanoes") fg = folium.FeatureGroup(name="Population")
在这些组中,我们可以添加相应的标记和叠加层。对于火山,我们循环遍历纬度/经度/海拔列表,为每个火山添加一个 CircleMarker:
for lt, ln, el in zip(lat, lon, ele): f.add_child(folium.CircleMarker(location=[lt, ln], radius=6, popup=str(el)+" m", fill_color=colour_marker(el), color = 'grey', fill=True, fill_opacity=0.7))
CircleMarkers 由高程颜色函数着色,并根据半径参数调整大小。悬停会显示一个带有高度的弹出窗口。
对于人口图层,我们添加基于 GeoJSON 数据的分区统计图叠加:
fg.add_child(folium.GeoJson(data=open('world.json', 'r', encoding='utf-8-sig').read(), style_function=lambda x: {'fillColor':'green' if x['properties']['POP2005'] < 10000000 else 'orange' if 10000000 <= x['properties']['POP2005'] < 20000000 else 'red'}))
这会根据人口阈值范围为每个国家/地区多边形着色。GeoJSON 属性提供每个要素的人口值。
最后,我们使用图层控件将火山和人口图层添加到地图中:
map.add_child(f) map.add_child(fg) map.add_child(folium.LayerControl())
图层控件添加了一个开关,可以打开/关闭不同的数据层。
然后我们可以将完成的地图导出到 HTML 文件以在本地查看:
map.save("Population_Volcanoes.html")
见解与分析
由此产生的可视化提供了火山位置、海拔和附近国家人口密度的直观全球视图。以下是一些关键见解:
火山集中在与板块边界相关的不同区域,例如太平洋周围的太平洋火环。沿活动大陆边界可见绿色的高海拔火山。
红色的低海拔火山出现在板内热点地区,例如美国的夏威夷和黄石公园。这些地区的活火山与主要板块边界隔离。
亚洲和欧洲人口稠密的中心远离大多数火山,而中美洲和南美洲人口中等的国家则直接位于火山带内。这凸显了墨西哥、哥伦比亚和印度尼西亚等国家面临的重大火山风险。
非洲和南极洲火山稀疏,人口覆盖范围广,而澳大利亚则在人烟稀少的地区拥有海拔较低的火山。
总体而言,火山和乡村人口之间的空间相互作用程度为灾害规划和活动区域的地质建模提供了重要的见解。
打开和关闭人口图层的功能使您可以轻松关注火山点图案。交互式平移和缩放可驱动对数据的直观探索,这是静态图表或图表无法实现的。
配色方案还可以实现快速视觉查询 - 例如,突出显示红色高人口中心附近的高风险橙色国家。
总体而言,这张地图有助于更深入地了解全球火山位置及其与人类的关系。Python 和 Folium 只需 20 行代码即可生成它。
结论
在本文中,我们演示了如何使用 Python 中的 Folium 库快速构建交互式地图可视化。
将火山点数据与国家多边形人口数据相结合,用最少的代码创建了富有洞察力的地理空间视图。可视化及其在线存储库为任何想要使用 Python 创建自己的自定义交互式地图的人提供了一个起点。
该代码可以通过绘制实时地震数据、添加更多火山属性(例如上次喷发日期)、根据火山大小调整标记大小以及合并边界和道路的矢量图层来扩展。还可以通过抓取火山附近国家和城市的额外人口统计信息来丰富数据。
Folium 是众多强大的 Python 地理空间库之一,包括 GeoPandas、笛卡尔和 Contextily。每个都提供了处理矢量和栅格数据类型、执行空间分析以及生成静态和动态地图的补充功能。利用这些工具可以为定制地图应用程序提供无限可能。
无论是可视化火山风险、模拟气候变化模式还是了解城市动态,交互式地图都提供了重要的价值。他们将抽象数据集转化为有形的故事和见解。Python 已经巩固了自己作为为任何领域制作可定制、引人入胜的地图可视化的引人注目的选择的地位。文章来源:https://www.toymoban.com/diary/python/355.html
文章来源地址https://www.toymoban.com/diary/python/355.html
到此这篇关于使用Folium和Python创建交互式地图 | 地图可视化教程的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!