有一个 SEGD 文件,其中包含一些地震数据。如何解码任何跟踪?
Python 脚本可以根据 SEGD Rev 2.1 文档读取和解码 header 。如何解码和绘制任何迹线。曾尝试使用1字节四位指数数据记录方法。但结果错误。 数据主体:
'10111110', '00101001', '11001111', '00010010', '10111101', '10100110', '00110010', '00100100', '10111100', '10010000', '10000100', '10010101', '00111101', '10101001', '00010110', '00100010', '00111110', '00001000', '10010001', '11011010', '00111101', '10101001', '00010110', '00100010', '00111100', '10011100', '00010100', '10001011',
期望得到类似的东西
1.000e+00, 1.000e+00, 1.000e+00, 1.000e+00, 3.125e-02,
1.000e+00, 1.000e+00, 1.000e+00, 1.000e+00, 1.000e+00,
1.000e+00, 1.000e+00, 1.000e+00, 3.125e-02, 3.125e-02,
3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02,
3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02,
3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02,
3.125e-02, 3.125e-02, -1.000e+00, -1.000e+00, -1.000e+00,
-1.000e+00, -1.000e+00, -1.000e+00, -1.000e+00, -1.000e+00,
3.125e-02, 3.125e-02, 3.125e-02, 3.125e-02, 7.000e+00,
2.600e+01, 4.100e+01, 6.100e+01, 7.500e+01, 7.400e+01,
5.900e+01, 3.600e+01, 1.500e+01, 1.000e+00, -7.000e+00,
-1.200e+01, -1.300e+01, -1.400e+01, -1.200e+01, -1.000e+01,
最佳答案
使用结构体。创建一种格式,并使用它在跟踪开始处读取文件,即。
tracedataformat = '!' + str('f' * ns)
f.seek(pos)
tr = np.zeros(ns, np.float)
tr = np.array(struct.unpack(format, f.read(4 * ns)))
- 读取 IEEE 格式的 32 位 float
- ns - 要读取的样本数(从 channel 描述符中获取)
- pos - 相对于跟踪开头的文件开头的位置(以字节为单位)。
关于python - 解码 SEGD 文件并绘制其中的任何轨迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58573857/