天天看点

python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)

摘要:本文以天然地震为例介绍用Python语言读取Excel格式数据文件,并绘制全球地震分布图、中国地震分布图及地震时间分布图,从地震时间分布图上可以清晰地看到2018年下半年以来5级以上地震明显增多。

地震是自然灾害中最重要的灾害类型之一,它的破坏了很大,遗憾的是目前人类尚不能有效预测地震的发生,也不能彻底消除地震所造成的破坏。但是,人类仍然在坚持不懈地破解地震的密码,期待有一天能有效降低这类自然灾害的破坏力。这一努力的基础工作就是监测地球上地震的发生,并对所有数据进行全球共享和合作研究。

本文就以天然地震分布图绘制为例,来介绍Python编程语言的应用。

一、地震数据集的获取

从中国地震台网(网络地址为www.ceic.ac.cn)可以获得全球地震监控实时数据,也可以查询历史数据,查询的历史数据可以以Excel格式的数据文件下载并保存到本地。

笔者下载了2013以来至2020年5月3日的历史地震数据,其中的Excel格式的数据文件中包含了7115次地震数据,其中1-8级地震分布为8、579、3785、1094、806、735、99、9个,当然其中忽略了许多弱小的地震。每次地震记录了6个参数,即“发震时刻、震级、维度、经度、深度、参考位置”,也就是全面描述了地震发生的时间、空间与强度,如下图所示:

python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)

二、Excel格式地震数据的读取

在Python编程中如何读取Excel格式的天然地震数据记录,是绘制地震分布图的基础和前提。在Python编程环境中,有丰富的软件包满足不同应用的需求,幸运的是就有两个软件包(xlrd和xlwt)用于Excel格式数据文件的读写,我们这里用到了xlrd软件包来读取Excel格式的天然地震数据记录。

如果你的编程环境中没有安装xlrd软件包,可以用如下命令安装:

> conda install xlrd

为简明起见,笔者编写了一个readExcel函数读取Excel格式的天然地震数据记录,如下所示。其中主要由几方面的功能语句组成:打开文件,读取sheet表名称,获取sheet表的行数和列数,获取每个记录(行)的数据内容和数据类型,获取每个记录的内容并转换成需要的数据类型(这里是将字符串格式转换成浮点格式)。函数返回如下参量:地震记录数、震级、经纬度和深度、时间,这些是地震分布图绘制和分析的基础。

python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)

  三、地震分布图绘制读取了Excel格式的数据文件,获得了地震记录数和每次地震的震级、经纬度、深度、时间参数后,就可以绘制全球地震分布图、中国地震分布图及地震时间分布图。

绘制全球地震分布图、中国地震分布图,需要在世界地图和中国地图的底图基础上绘制,笔者在《基于Python的地图类图形绘制》一文中介绍了采用pyshp软件包读取地理信息数据、采用matplotlib绘制图形的方法,并给出Python源代码,读者可参考,这里就不再详细介绍。

笔者在世界地图和中国地图上绘制了2013年以后7100多次地震的分布图,并用不同颜色和点的大小区分地震的震级,从图中可以清晰地看到地震的分布具有明显的分带性和高发区,环太平洋是地震的主要高发区之一,而我国的地震多分布于西部。

python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)

我们将地震记录以时间为横轴、震级为纵轴绘图可以得到地震事件的时间分布图,从地震时间分布图上可以分析地震发生的频次和强度随时间变化的规律。从笔者绘制的全球2013-2020年地震时间分布图上,我们可以清晰地看到2018年下半年以来5级地震显著增多,6级地震也由少许增加,而3-4级地震的频次却基本平稳。这是否意味着2018年下半年以来我们进入了地震的高发期?或者是由于观测数据所造成的假象?希望有专家给我们释疑解惑。

python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)

   四、Python程序源代码

实现上述功能的Python程序源代码如下所示,约300行代码,运用了shapefile(读取地理信息文件)、xlrd(读取Excel文件)、matplotlib(绘图)多个软件包。

python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)
python读取文件_基于Python的Excel文件读取与地震分布图绘制(附源代码)

2020年5月5日于宁

2020年《地学新视野》文章:

  • 三维打印模型文件格式及地形模型生成(附源代码)
  • 基于Python+Gdal的地形图绘制(附源代码)
  • 基于Python的地图类图形绘制(附源代码)
  • 基于Arduino的GPS+北斗定位功能实现(附源代码)
  • AliOS Things物联网操作系统与AliOS Studio软件开发环境
  • 主要物联网操作系统简介
  • 疫情防控发展趋势和功与罪的数字化论证
  • 新型冠状病毒肺炎疫情优化模型预测与分析
  • 新型冠状病毒肺炎防控隔离措施极端重要性数字模拟
  • 节点地震监测数据分析Python编程实践与源代码
  • 《地学新视野》2019年文章汇编(PDF文件分享)