python地震数据可视化详解


Posted in Python onJune 18, 2019

本文实例为大家分享了python地震数据可视化的具体代码,供大家参考,具体内容如下

参考源码:seisplot

准备工作:

在windows10下安装python3.7,下载参考源码到本地。

1. demo绘图测试

demo绘图指令

cmd> python seisplot.py --demo

问题1)缺少依赖包

File "D:/Desktop/python可视化/seisplot/seisplot.py", line 16, in <module>
 import yaml
ModuleNotFoundError: No module named 'yaml'
 
>pip3 install yaml
 Could not find a version that satisfies the requirement yaml (from versions: )
No matching distribution found for yaml

查看environment.yml:

channels:
- defaults
- conda-forge
dependencies:
- matplotlib
- numpy
- obspy
- pillow
- pyyaml

安装相关依赖包,如 obspy pillow pyyaml 

cmd> pip3 install obspy

出现proxy error, 添加选项 --proxy server:port

安装ok

问题2)配置文件的编码异常

D:\Desktop\python可视化\seisplot>python seisplot.py --demo
[91m
 Welcome to
 ┌─┐┌─┐┬┌─┐┌─┐┬ ┌─┐┌┬┐
 └─┐├┤ │└─┐├─┘│ │ │ │
 └─┘└─┘┴└─┘┴ ┴─┘└─┘ ┴
    Good luck[0m
Traceback (most recent call last):
 File "seisplot.py", line 421, in <module>
 cfg = yaml.load(f)
 File "D:\ProgramFiles\Python36\lib\site-packages\yaml\__init__.py", line 70, in load
 loader = Loader(stream)
 File "D:\ProgramFiles\Python36\lib\site-packages\yaml\loader.py", line 34, in __init__
 Reader.__init__(self, stream)
 File "D:\ProgramFiles\Python36\lib\site-packages\yaml\reader.py", line 85, in __init__
 self.determine_encoding()
 File "D:\ProgramFiles\Python36\lib\site-packages\yaml\reader.py", line 124, in determine_encoding
 self.update_raw()
 File "D:\ProgramFiles\Python36\lib\site-packages\yaml\reader.py", line 178, in update_raw
 data = self.stream.read(size)
UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 2003: illegal multibyte sequence

分析源码中参数传递情况:

def load(stream, Loader=Loader):
 """
 Parse the first YAML document in a stream
 and produce the corresponding Python object.
 """
 print(stream) ## debug by huanying03
 loader = Loader(stream)
 try:
  return loader.get_single_data()
 finally:
  loader.dispose()

打印结果如下:

<_io.TextIOWrapper name='config.yml' mode='r' encoding='cp936'>

编码不对?

65001  :UTF-8代码页

936 :默认的GBK

437 :是美国英语

仔细检查发现config.yml中有异常字符,更正config.yml中错误字符:ok

问题3)python调试打印语句

print ("value=%d"%value)

demo数据绘图结果

如下:

python地震数据可视化详解

2. 本地数据绘图测试

应用指令

cmd > python seisplot.py data/my.sgy

问题1)数据道的采样值异常

filename data2/t10.sgy
seismic.py:104:dt=4000
seismic.py:104:ns=512
seismic.py:144:header=b'C 1 CLIENT'
n_traces 500
n_samples 512
dt   0.004
t_start 0
t_end  2.044
max_val inf
min_val -inf
clip_val 180462501764003194804057887685476352
Read data in 0.4 s
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PLOTTING
plot width 17.00 in
plot height 11.00 in
Traceback (most recent call last):
 File "seisplot.py", line 442, in <module>
 main(t, cfg)
 File "seisplot.py", line 214, in main
 cfg)
 File "D:\Desktop\python可视化\seisplot\plotter.py", line 123, in plot_histogram
 y, x, _ = ax.hist(np.ravel(data), bins=int(100.0 / (clip_val / largest)),
OverflowError: cannot convert float infinity to integer

解决办法:将数据做归一化处理

问题2)数据文件的卷头异常

filename data2/marmousi_vel.segy.hdrs.sgy.cdp.sgy
seismic.py:104:dt=10000
seismic.py:104:ns=350
seismic.py:144:header=b'\xc3@\xf1@\xc3\xd3\xc9\xc5\xd5\xe3'
Traceback (most recent call last):
 File "seisplot.py", line 442, in <module>
 main(t, cfg)
 File "seisplot.py", line 40, in main
 s = Seismic.from_segy(target, params={'ndim': cfg['ndim']})
 File "D:\Desktop\python可视化\seisplot\seismic.py", line 164, in from_segy
 return cls.from_obspy(stream, params=params)
 File "D:\Desktop\python可视化\seisplot\seismic.py", line 147, in from_obspy
 x =np.array(list(stream.textual_file_header.decode()))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte

解决办法:重写3200字节的segy卷头

marmousi相关数据绘图

速度模型绘图结果如下:

python地震数据可视化详解

marmousi模型正演的炮集数据绘图结果如下:

python地震数据可视化详解

测试备忘

1

cygwin执行指令,可以看到反馈信息为彩色,分析信息很方便。

相比之下,cmd终端执行指令后的反馈信息可读性较差。

2

本地数据出现异常后,通过cwp中的segyread, sushw, sugain, segywrite等程序进行修改,满足绘图程序要求。

1)3200字节的卷头必须规范

2)道头字中的cdpt取值必须规范(xline)

3)道采样值最好归一化处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python检测是文件还是目录的方法
Jul 03 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Django验证码的生成与使用示例
May 20 Python
Python + selenium自动化环境搭建的完整步骤
May 19 Python
Django中使用Celery的方法示例
Nov 29 Python
用vue.js组件模拟v-model指令实例方法
Jul 05 Python
Python实现Restful API的例子
Aug 31 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
Python实现FM算法解析
Jun 18 #Python
python pygame实现五子棋小游戏
Oct 26 #Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 #Python
python制作简单五子棋游戏
Jun 18 #Python
Python利用pandas处理Excel数据的应用详解
Jun 18 #Python
PyQt5固定窗口大小的方法
Jun 18 #Python
Python格式化字符串f-string概览(小结)
Jun 18 #Python
You might like
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
移动节点的jquery代码
2014/01/13 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
angular2中使用第三方js库的实例
2018/02/26 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
python中二维阵列的变换实例
2014/10/09 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
Python实现密码薄文件读写操作
2019/12/16 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
医生自荐信
2013/10/11 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript
Python答题卡识别并给出分数的实现代码
2021/06/22 Python