报打开文件报错
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异常
参考: