python 读取地震道头数据_python地震数据可视化详解

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

准备工作:

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

1. demo绘图测试

demo绘图指令

cmd> python seisplot.py --demo

问题1)缺少依赖包

File "D:/Desktop/python可视化/seisplot/seisplot.py", line 16, in

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

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()

打印结果如下:

编码不对?

65001  :UTF-8代码页

936 :默认的GBK

437 :是美国英语

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

问题3)python调试打印语句

print ("value=%d"%value)

demo数据绘图结果

如下:

71aac3159048cb40f4ae1ff374dd277e

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

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

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相关数据绘图

速度模型绘图结果如下:

2a5b46f4c2d6841d477beeff4b8581a4

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

5e57c8c04621066d83b00baae28e3b97

测试备忘

1

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

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

2

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

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

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

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

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

您可能感兴趣的文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在MySQL查询山东省男生信息_MySQL-查询

来一波英语单词解释(意思)create 创建show 显示database 数据库use 使用select 选择table 表from 来自…distinct 消除重复行as 同样地(用于其别名)where 范围like 模糊查询rlike 正则查询In 范围查询not in 不非连续的范围之内between ... and …表示…

java 导入world数据_java读取world文件,把world文件中的内容,原样输出到页面上。...

POI,处理可以。样式在Java代码中添加就可以。给了一个例子这个是Excel的。package cn.com.my.common;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.sql.Connection;import java.sql.ResultSet…

java程序员 css_Java程序员从笨鸟到菜鸟之(十七)CSS基础积累总结(下)

七.组织元素(span和div)span和div元素用于组织和结构化文档,并经常联合class和id属性一起使用。在这一课中,我们将进一步探究span和div的用法,因为这两个HTML元素对于CSS是很重要的。用span组织元素用div组织元素用span组织元素span元素可以说…

redlock java_Redlock分布式锁

这篇文章主要是对 Redis 官方网站刊登的 Distributed locks with Redis 部分内容的总结和翻译。什么是 RedLockRedis 官方站这篇文章提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock,此种方式比原先的单节点的方法更安全。它可以保证以下特性&#xff1…

java 两个数组交叉_java – 如何交叉两个没有重复的排序整数数组?

这个问题本质上减少到一个连接操作,然后是一个过滤器操作(删除重复,只保留内部匹配).由于输入都已经排序,所以可以通过O(O(size(a)size(b))的merge join来有效地实现连接.过滤器操作将为O(n),因为连接的输出被排序,并且要删除重复项,所有您需要做的是检查每个元素是否与之​​前…

java retentionpolicy_Java注解之如何利用RetentionPolicy.SOURCE生存周期

上一篇文章简单讲了下Java注解的学习之元注解说明,学习了Java注解是如何定义的,怎么使用的,但是并没有介绍Java的注解是怎么起作用的,像Spring Boot里面的那些注解,到底是怎么让程序这样子运行起来的?特别是…

在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!

三、填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有“关闭”字样的标签对象gb的语句为。3.方法是一种仅有方法头,没...三、填空(每小题…

java 同步 变量,在java中的对象上同步,然后更改同步的变量的值

I came across a code like thissynchronized(obj) {obj new Object();}Something does not feel right about this , I am unable to explain, Is this piece of code OK or there is something really wrong in it, please point it out.Thanks解决方案Its probably not wha…

java set泛型_Java 集合二 泛型、Set相关

泛型1、在定义一个类的方法时,因为不确定返回值类型,所以用一个符号代替,这个符号就是泛型eg:ArrayList list new ArrayList();2、泛型的好处:1、提高了数据的安全性,将运行时的问题提前暴露在编译阶段2、避免了强转的…

java annotation 实现_在Java中如何实现自己的annotation

1. 先定义annotation2. 使用annotation例子:import java.lang.annotation.*;import java.lang.reflect.Method;Target(ElementType.METHOD)Retention(RetentionPolicy.RUNTIME)interface Test {String info() default "";}class Annotated {Test(info &q…

登录界面拦截java_java拦截通过url访问页面,必须通过登录页面访问目标页面

在web.xml中配置过滤:LoginFiltercom.verification.action.LoginFilterLoginFiltery/form/dealParse.do/* 拦截所有请求/.do 拦截以“.do”结尾的请求/index.jsp 拦截指定的jsp/artery/form/* 拦截该目录下的所有请求等等拦截器,拦截请求类&#xf…

python textwrap_[Python标准库]textwrap——格式化文本段落

textwrap——格式化文本段落作用:通过调整换行符在段落中出现的位置来格式化文本。 Python 版本:2.5 及以后版本 需要美观打印时,可以用 textwrap 模块来格式化要输出的文本。这个模块允许通过编程提供类似段落自动换行或填充…

java 字符串 1_java 字符串操作大全1

1、length() 字符串的长度例:char chars[]{a,b.c};String snew String(chars);int lens.length();2、charAt() 截取一个字符例:char ch;ch"abc".charAt(1); 返回b3、getChars() 截取多个字符void getChars(int sourceStart,int sourceEnd,char…

java实现权限_Java实现权限管理的两种方式

编辑特别推荐:种方式:利用filter、xml文件和用户信息表配合使用来实现权限管理。1.过滤器filterpackage cn.com.aaa.bbb.filter;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List…

java 输入16进制_尝试使用十六进制输入来使用小端和大端

我试图用这两个原型编写C函数:int extract_little (char* str, int ofset, int n);int extract_big(char* str, int ofset, int n);现在一般的想法是我需要从地址str ofset开始以两种格式返回一个n字节整数 . 附: Ofset还没有做任何事情,我计…

java gson_Java 中 Gson的使用

JSON 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便;解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等一、Gson的基本用法Gson提供了fromJson() 和toJson…

spring注入普通java类_普通java类如何取得注入spring Ioc容器的对象

[除了使用XML配置外,还可以选择使用基于注解(annotation)的配置方式,其依赖于字节码来织入组件。注解注入在XML注入之前完成,因此在XML配置中可以重载注解注入的属性。一、建一个SpringUtil类package com.ceopen.eoss.spring; import org.spr…

java web 集成dom4j_[JavaWeb基础] 031.dom4j写入xml的方法

上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现。public static void main(String[] args) throws Exception {// 创建文档Document document DocumentHelper.createDocument();// 设置编码docu…

java servlet 调试日志 logger sae_java servlet 调试日志 lo

java servlet 调试日志 lo[2021-02-10 08:32:08] 简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#x…

java接口权限管理在哪里_java访问权限控制

为什么java要有访问权限的控制?访问权限的设置和代码的重构有关。在一个项目中,大多数的时间和金钱都投入到了代码的维护当中。维护中一定会修改已存在的不合理的代码。但是在重构的过程中,就出现了这样的问题:如何保证不影响那些使用了待修…