使用Folium和Python创建交互式地图 | 地图可视化教程

创建引人入胜的交互式可视化可以极大地增强对数据的理解和影响。

交互式地图是地理空间数据最有效的可视化方法之一。地图提供固有的上下文,并允许直观地探索模式、集群和异常值。

本文将演示如何使用 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

到此这篇关于使用Folium和Python创建交互式地图 | 地图可视化教程的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/python/355.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
上一篇 2023年10月07日 01:26
下一篇 2023年10月07日 01:39

相关文章

  • python:基于GeoPandas和GeoViews库将GEDI激光高程数据映射到交互式地图

    作者:CSDN @ _养乐多_ 本文将介绍 GEDI(Global Ecosystem Dynamics Investigation)激光雷达数据某数据点波形数据提取,并绘制图表,添加其他图表元素并使图表具有交互性。 在本文中,我们将探索如何打开、读取和处理GEDI数据,并利用地理信息处理库GeoPandas和地理空间数据可视化库

    2024年02月15日
    浏览(50)
  • 使用Gradio库进行交互式数据可视化:Timeseries模块介绍

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 博主原文链接:https://www.yourmetaverse.cn/nlp/439/ (封面图由文心一格生成) 在

    2024年02月13日
    浏览(51)
  • 神经网络的可视化:使用3D可视化和交互式界面来展示模型

    作者:禅与计算机程序设计艺术 作为人工智能领域的从业者,我们常常需要与其他技术人员或者领域内的专家进行交流。在这个过程中,一个关键的问题是如何让复杂的神经网络模型变得易于理解和分析。今天,我们将探讨如何使用3D可视化和交互式界面来展示神经网络模型

    2024年02月14日
    浏览(50)
  • 使用Gradio库创建交互式散点图

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 博主原文链接:https://www.yourmetaverse.cn/nlp/424/ (封面图由文心一格生成)

    2024年02月16日
    浏览(52)
  • 可视化工具:将多种数据格式转化为交互式图形展示的利器

    在数据驱动的时代,数据的分析和理解对于决策过程至关重要。然而,不同的数据格式和结构使得数据的解读变得复杂和困难。为了解决这个问题,一种强大的可视化工具应运而生。这个工具具有将多种数据格式(包括 JSON 、 YAML 、 XML 、 CSV 等)转化为交互式图形展示的能力

    2024年02月19日
    浏览(38)
  • YoloV8 +可视化界面+GUI+交互式界面目标检测与跟踪

    本项目旨在基于 YoloV8 目标检测算法开发一个直观的可视化界面,使用户能够轻松上传图像或视频,并对其进行目标检测。 通过图形用户界面,用户可以方便地调整检测参数、查看检测结果,并将结果保存或导出。同时,该界面还将提供实时目标检测功能,让用户能够在视频

    2024年02月20日
    浏览(45)
  • Dash,方便创建「交互式」Web图表!

    你好,我是郭震 这篇文章,探讨 Dash —— 一个由 Plotly 开发的优秀 Python 框架,专为构建丰富的网络分析应用而设计。 推荐使用这个Python工具包! Dash 使得数据分析师能够使用 Python 创建互动式的 web 应用,而无需深入了解复杂的前端技术如 HTML 或 JavaScript。 要开始使用 Das

    2024年02月22日
    浏览(64)
  • python opencv+tkinter 使用tkinter实现交互式图像处理工具

    tkinter 基本控件与使用 我们将学习如何使用Tkinter包编写一些图形用户界面程序。Tkinter是Python的一个标准包,因此我们并不需要安装它。我们将从创建一个窗口开始,然后我们在其之上加入一些小组件,比如按钮,复选框等,并使用它们的一些属性。话不多说,让我们开始吧

    2024年02月10日
    浏览(93)
  • 创建交互式用户体验:探索JavaScript中的Prompt功能

    在前端开发中,JavaScript的 prompt() 函数是一个强大而有用的工具,它可以创建交互式的用户体验。无论是接收用户输入、进行简单的验证还是实现高级的交互功能, prompt() 函数都能胜任。本篇博客将深入探讨 prompt() 函数的用法、最佳实践和一些示例代码,为您展示如何利用它

    2024年02月15日
    浏览(47)
  • 3D开发工具HOOPS Publish如何快速创建交互式3D PDF文档?

    HOOPS Publish是一款功能强大的SDK, 可以创作丰富的工程数据并将模型文件导出为各种行业标准格式,包括PDF、STEP、JT和3MF。 HOOPS Publish核心的3D数据模型是经过ISO认证的PRC格式(ISO 14739-1:2014),它为装配树、拓扑和几何、产品制造信息和视图等工程概念提供支持。 开发人员可以通

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包