0
点赞
收藏
分享

微信扫一扫

使用segyio模块打开segy格式数据时出现RuntimeError: unable to find sorting


RuntimeError: unable to find sorting.Check iline, (189) and xline (193) in case you are sure the file is a 3D sorted volume

我的Python版本是3.8.5的,然后安装的segyio模块版本为1.6.4.4的。

在使用segyio.open()函数打开segy数据时(示例数据​​mysegydata.sgy点这里​​),会出现RuntimeError异常,示例代码如下:

import segyio

filename = r'mysegydata.sgy'

with segyio.open(filename) as f:
data=[f.trace[i] for i in range(len(f.trace))]

会报错:

RuntimeError: unable to find sorting.Check iline, (189) and xline (193) in case you are sure the file is a 3D sorted volume

上述异常产生的原因是segyio模块尝试以“strict mode”,即严格模式打开,而该模式假设打开的文件是已按规则排好序的3D数据体。因此打开的文件只是以任意次序顺序排列的数据道的集合时,就会失败。

解决方案

只需要在segyio.open()函数中传递​​strict=False​​​或者​​ignore_geometry=True​​​即可,二者的含义分别是允许/强制以非结构化模式打开。需要注意的是,这样做以后​​f.iline​​及类似的属性特征将会关闭,查看该类属性时会报错。示例代码如下:

import segyio

filename = r'mysegydata.sgy'

with segyio.open(filename,strict = False) as f1:
data1=[f1.trace[i] for i in range(len(f1.trace))] #成功

with segyio.open(filename,ignore_geometry=True) as f2:
data2=[f2.trace[i] for i in range(len(f2.trace))] #成功

print(f1.iline,f2.iline) #产生ValueError异常

结果会报错:

ValueError: File opened in unstructured mode.

参考文献:
​​​Schlumberger/segyio​​

使用segyio模块打开segy格式数据时出现RuntimeError: unable to find sorting_3D


举报

相关推荐

0 条评论