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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
python实现linux下使用xcopy的方法
Jun 28 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
python原类、类的创建过程与方法详解
Jul 19 Python
Django数据库操作之save与update的使用
Apr 01 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
Django实现后台上传并显示图片功能
May 29 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
python中温度单位转换的实例方法
Dec 27 Python
python re.match()用法相关示例
Jan 27 Python
pytest进阶教程之fixture函数详解
Mar 29 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版)
2006/10/09 PHP
joomla内置的表单验证功能使用方法
2010/06/11 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
js实现无限瀑布流实例方法
2019/09/16 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python实现读取文件最后n行的方法
2017/02/23 Python
python爬取m3u8连接的视频
2018/02/28 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
大学毕业生个人自荐信范文
2014/01/08 职场文书
11月红领巾广播稿
2014/01/17 职场文书
党支部鉴定意见
2015/06/02 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
Python语言中的数据类型-序列
2022/02/24 Python