Python绘制数据地图-MovingPandas

MovingPandas 是一个用于时空数据分析的 Python 库,它扩展了 Pandas 和 GeoPandas,使得处理和分析带有时间戳的地理数据变得更加方便。虽然 MovingPandas 本身不直接提供数据可视化功能,但你可以结合其他库如 matplotlibfoliumplotly 来绘制数据地图。

以下是一个简单的示例,展示如何使用 MovingPandasmatplotlib 来绘制带有时间戳的地理数据地图:

  1. 安装必要的库

    pip install movingpandas geopandas matplotlib pandas
    
  2. 导入库并准备数据

    import pandas as pd
    import geopandas as gpd
    from movingpandas import TrajectoryCollection, Trajectory
    import matplotlib.pyplot as plt# 示例数据:创建一些带有时间戳的地理数据点
    data = {'timestamp': ['2023-10-01 00:00:00', '2023-10-01 01:00:00', '2023-10-01 02:00:00','2023-10-01 00:00:00', '2023-10-01 01:00:00', '2023-10-01 02:00:00'],'geometry': ['POINT (1 1)', 'POINT (2 2)', 'POINT (3 3)','POINT (4 4)', 'POINT (5 5)', 'POINT (6 6)']
    }
    df = pd.DataFrame(data)
    df['timestamp'] = pd.to_datetime(df['timestamp'])
    gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.geometry.apply(lambda x: float(x.split()[1])),df.geometry.apply(lambda x: float(x.split()[0]))))# 创建轨迹对象
    trajectories = [Trajectory(gdf[gdf['geometry'] == f'POINT ({x} {y})'].copy().reset_index(drop=True))for x, y in zip([1, 4], [1, 4])]
    tc = TrajectoryCollection(trajectories)
    
  3. 绘制地图
    由于 MovingPandas 本身不提供绘图功能,我们可以使用 GeoPandas 的绘图功能来可视化地理数据。这里我们绘制每个时间点的位置。

    # 绘制所有轨迹点
    fig, ax = plt.subplots(1, 1, figsize=(10, 6))for trajectory in tc.trajectories:for point in trajectory.df.itertuples(index=False, name=None):plt.plot(point.geometry.x, point.geometry.y, 'bo')  # 'bo' 表示蓝色圆点# 设置坐标轴范围和标签
    plt.xlim(0, 7)
    plt.ylim(0, 7)
    plt.xlabel('Longitude')
    plt.ylabel('Latitude')
    plt.title('Trajectory Points')
    plt.grid(True)
    plt.show()
    

请注意,这个示例非常基础,只是简单地绘制了每个时间点的位置。如果你需要更复杂的时空数据可视化,比如动态地图或轨迹动画,可以考虑使用 foliumplotly

例如,使用 plotly 绘制动态轨迹:

import plotly.express as px# 将轨迹数据转换为适合 plotly 的格式
plotly_data = []
for trajectory in tc.trajectories:plotly_data.append(trajectory.df[['geometry', 'timestamp']].rename(columns={'geometry': 'geometry (lat, lon)'}))# 由于 plotly 不直接支持 GeoPandas 的 geometry 列,我们需要将其转换为经纬度列
for df in plotly_data:df['lat'] = df['geometry (lat, lon)'].apply(lambda x: float(x.y))df['lon'] = df['geometry (lat, lon)'].apply(lambda x: float(x.x))df.drop(columns=['geometry (lat, lon)'], inplace=True)# 合并轨迹数据
plotly_data = pd.concat(plotly_data).reset_index(drop=True)# 使用 plotly 绘制
fig = px.scatter_geo(plotly_data, lat='lat', lon='lon', color='index', hover_name='timestamp',animation_frame='timestamp', title='Trajectory Animation')
fig.show()

这个 plotly 示例需要安装 plotly 库,并且它展示了如何创建带有时间动画的轨迹地图。你可以根据需要调整这些代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4947.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

故障诊断 | BWO白鲸算法优化KELM故障诊断(Matlab)

目录 效果一览文章概述BWO白鲸算法优化KELM故障诊断一、引言1.1、研究背景及意义1.2、故障诊断技术的现状1.3、研究目的与内容二、KELM基本理论2.1、KELM模型简介2.2、核函数的选择2.3、KELM在故障诊断中的应用三、BWO白鲸优化算法3.1、BWO算法基本原理3.2、BWO算法的特点3.3、…

apisix的authz-casbin

目录 1、apisix的auth-casbin官方介绍 2、casbin介绍和使用 2.1基本知识: 2.2使用例子 3、配置插件 4、postman调用 5、auth-casbin的坑 1、apisix的auth-casbin官方介绍 authz-casbin | Apache APISIX -- Cloud-Native API Gateway 2、casbin介绍和使用 c…

基于python+Django+mysql鲜花水果销售商城网站系统设计与实现

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

【大模型】ChatGPT 高效处理图片技巧使用详解

目录 一、前言 二、ChatGPT 4 图片处理介绍 2.1 ChatGPT 4 图片处理概述 2.1.1 图像识别与分类 2.1.2 图像搜索 2.1.3 图像生成 2.1.4 多模态理解 2.1.5 细粒度图像识别 2.1.6 生成式图像任务处理 2.1.7 图像与文本互动 2.2 ChatGPT 4 图片处理应用场景 三、文生图操…

【0x0052】HCI_Write_Extended_Inquiry_Response命令详解

目录 一、命令概述 二、命令格式及参数 2.1. HCI_Write_Extended_Inquiry_Response命令格式 2.2. FEC_Required 2.3. Extended_Inquiry_Response 三、生成事件及参数 3.1. HCI_Command_Complete 事件 3.2. Status 四、命令执行流程 4.1. 命令准备阶段(主机端) 4.2…

函数递归的介绍

1.递归的定义 在C语言中,递归就是函数自己调用自己 上面的代码就是 main 函数在函数主体内 自己调用自己 但是,上面的代码存在问题:main 函数反复地 自己调用自己 ,不受限制,停不下来。 最终形成死递归,…

小白爬虫——selenium入门超详细教程

目录 一、selenium简介 二、环境安装 2.1、安装Selenium 2.2、浏览器驱动安装 三、基本操作 3.1、对页面进行操作 3.1.1、初始化webdriver 3.1.2、打开网页 3.1.3、页面操作 3.1.4、页面数据提取 3.1.5、关闭页面 ?3.1.6、综合小案例 3.2、对页面元素进行操作 3…

JDK长期支持版本(LTS)

https://blogs.oracle.com/java/post/the-arrival-of-java-23 jdk长期支持版本(LTS):JDK 8、11、17、21:

三格电子——MODBUS TCP 转 CANOpen 协议网关

一、产品概述 1.1 产品用途 SG-TCP-COE-210 网关可以实现将 CANOpen 接口设备连接到 MODBUS TCP 网络中。用户不需要了解具体的 CANOpen 和 Modbus TCP 协议即可实现将 CANOpen 设备挂载到 MODBUS TCP 接口的 PLC 上,并和 CANOpen 设备进行 数据交互。 1.2 产品…

在离线无管理员权限的情况下为Linux配置oh-my-zsh(zsh+oh my zsh+powerlevel10k)

0. 前言 最近接触到一台离线环境下的Linux(CentOS7),自带的终端实在过于丑陋(tcsh),但是搜半天改zsh的教程要么要网、要么要管理员权限,奋而自己折腾半天记录于此以作备忘。 所需环境 一台能…

C 语言雏启:擘画代码乾坤,谛观编程奥宇之初瞰

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。* 这一课主要是让大家初步了解C语言,了解我们的开发环境,main函数,库…

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接,这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发,并于2…

C语言内存之旅:从静态到动态的跨越

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一 动态内存管理的必要性二 动态…

气膜料仓:工业仓储的高效与安全新选择—轻空间

在工业仓储领域,如何实现高效、安全、环保的存储方式成为企业关注的重点。气膜料仓以其独特的无梁无柱设计和智能化功能,为工业仓储带来了全新的解决方案。 空间利用率高:无障碍的大容量仓储 气膜料仓内部无梁无柱,形成了完全开…

Windows FileZila Server共享电脑文件夹 映射21端口外网连接

我有这样一个使用场景,在外部网络环境下,通过手机便捷地读取存储在电脑上的视频文件。比如在外出旅行、出差,身边没有携带电脑,仅依靠手机设备,就能随时获取电脑里存储的各类视频,无论是学习资料视频、工作…

CentOS部署FastDFS+Nginx并实现远程访问本地服务器中文件

文章目录 前言1. 本地搭建FastDFS文件系统 1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址…

2023年江西省职业院校技能大赛网络系统管理赛项(Linux部分样题)

一、Linux项目任务描述 你作为一个Linux的技术工程师,被指派去构建一个公司的内部网络,要为员工提供便捷、安全稳定内外网络服务。你必须在规定的时间内完成要求的任务,并进行充分的测试,确保设备和应用正常运行。任务所有规划都基于Linux操作系统,请根据网络拓扑、基本配…

【Spring】定义的Bean缺少隐式依赖

问题描述 初学 Spring 时,我们往往不能快速转化思维。例如,在程序开发过程中,有时候,一方面我们把一个类定义成 Bean,同时又觉得这个 Bean 的定义除了加了一些 Spring 注解外,并没有什么不同。所以在后续使…

使用Chrome和Selenium实现对Superset等私域网站的截图

最近遇到了一个问题,因为一些原因,我搭建的一个 Superset 的 Report 功能由于节假日期间不好控制邮件的发送,所以急需一个方案来替换掉 Superset 的 Report 功能 首先我们需要 Chrome 浏览器和 Chrome Driver,这是执行数据抓取的…

vulnhub靶场【IA系列】之Tornado

前言 靶机:IA-Tornado,IP地址为192.168.10.11 攻击:kali,IP地址为192.168.10.2 都采用虚拟机,网卡为桥接模式 本文所用靶场、kali镜像以及相关工具,我放置在网盘中,可以复制后面链接查看 htt…