栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012459.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号