日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/8 python 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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數據繪圖結果

如下:

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相關數據繪圖

速度模型繪圖結果如下:

marmousi模型正演的炮集數據繪圖結果如下:

測試備忘

1

cygwin執行指令,可以看到反饋信息為彩色,分析信息很方便。

相比之下,cmd終端執行指令后的反饋信息可讀性較差。

2

本地數據出現異常后,通過cwp中的segyread, sushw, sugain, segywrite等程序進行修改,滿足繪圖程序要求。

1)3200字節的卷頭必須規范

2)道頭字中的cdpt取值必須規范(xline)

3)道采樣值最好歸一化處理。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

總結

以上是生活随笔為你收集整理的python 读取地震道头数据_python地震数据可视化详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。