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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
用Python开发app后端有优势吗
Jun 29 Python
分享一个python的aes加密代码
Dec 22 Python
解决pytorch 保存模型遇到的问题
Mar 03 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设计模式 Facade(外观模式)
2011/06/26 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
不懂JavaScript应该怎样学
2008/04/16 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
Python深度优先算法生成迷宫
2018/01/22 Python
Python中作用域的深入讲解
2018/12/10 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
写求职信有什么意义
2014/02/17 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
React配置子路由的实现
2021/06/03 Javascript