python地震数据可视化详解
作者:幻影03 发布时间:2021-05-14 15:41:52
本文实例为大家分享了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数据绘图结果
如下:
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相关数据绘图
速度模型绘图结果如下:
marmousi模型正演的炮集数据绘图结果如下:
测试备忘
1
cygwin执行指令,可以看到反馈信息为彩色,分析信息很方便。
相比之下,cmd终端执行指令后的反馈信息可读性较差。
2
本地数据出现异常后,通过cwp中的segyread, sushw, sugain, segywrite等程序进行修改,满足绘图程序要求。
1)3200字节的卷头必须规范
2)道头字中的cdpt取值必须规范(xline)
3)道采样值最好归一化处理。
来源:https://blog.csdn.net/sinat_27917465/article/details/86517738
猜你喜欢
- 工作中,我们经常会遇到数据异常,比如说浏览量突增猛降,交易量突增猛降,但是这些数据又不是符合正太分布的,如果用几倍西格玛就不合适,那么我们如
- 文章所罗列的问题虽然看似简单,但是每个背后都涵盖了一个或几个大家容易忽视的基础知识点,希望能够帮助到你的面试和平时工作。Q1第一个问题关于弱
- 前言本文目的:根据本人的习惯与理解,用最简洁的表述,介绍爬虫的定义、组成部分、爬取流程,并讲解示例代码。基础爬虫的定义:定向抓取互联网内容(
- 进程和线程的区别和联系终于开始加深难度,来到进程和线程的知识点~单就这两个概念,就难倒过不少初学者—&mdash
- 常见的SQL问题:◆选择重复,消除重复和选择出序列有例表:empemp_no name age001 Tom 17002 Sun 14003
- 本文实例为大家分享了python使用tcp传输图片数据的具体代码,供大家参考,具体内容如下数据包格式如下客户端:import socketi
- 如果我需要在运行有SQL Server的机器上运行病毒扫描软件,怎样做才不会影响性能? 这取决于您希望运行的病毒扫描软件的类型。目前有三种类
- 介绍我们可以通过控制HeaderStyle, RowStyle, AlternatingRowStyle和其他一些属性来改变GridView
- javascript模仿alert提示效果,如果你听厌倦了系统自带的那个,可以使用这个alert提示效果,听不错的。相关文章推荐《类似于新浪
- asp之家注:有时候我们想让程序运行变慢下来,asp中该怎么做呢?原理很简单就是在运行程序前运行一段无关紧要的程序就可以了,要实现加长程序的
- 西贝做了许久的交互设计工作,每年的目标都有不同,却发现今年没有什么提高和改进的地方。也许是自己没有回头总结,总是被这样那样的借口推脱。最近休
- 八卦为先八卦是种优良品质,特别是用在技术上时。来看几个Reset CSS的八卦问题吧:你知道世界上第一份reset.css在哪么?* { m
- import cv2import numpy as npimport matplotlib.pyplot as plt# Grayscale
- 前言最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面
- 目录通过python的tkinter实现简单的注册登录代码截图登录页面注册页面个人主页修改个人信息失败修改个人信息成功重新登录twb总结通过
- css当中有许多平时很少用的属性,但是这些属性有时候被发掘出来以后就会立刻引起一些人的追逐,首字大写就是这样一种效果。最近越来越多的blog
- 具体代码如下所示:import numpy as npfrom matplotlib import pyplot as pltfrom sc
- 这篇文章主要介绍了基于python操作ES实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 使用python制作好看的时钟,供大家参考,具体内容如下游戏用到初高中使用的三角函数等知识开发,长话短说,上完整程序。#-*- coding
- 获取首页元素信息:目标 test_URL:http://www.xxx.com.cn/首先检查元素,a 标签下是我们需要爬取得链接,通过获取