今天碰到一个奇怪的问题,想在seismic unix下绘制 .su 文件的程序,在mac里很简单的利用suxgraph很简单的就实现了
但是,在Windows我的WSL系统下,同样的程序,同样的命令居然出问题了,提示:suxgraph: fgettr.c: on trace #1, number of samples in header (4798) differs from number for first trace (4)
难道seismic unix 读入 .su 数据在不同电脑上结果不同吗?查找资料后发现,由于.su 数据不是一种标准的数据交换格式,不同电脑读入后(可能是big-endian / small-endian的问题),会产生数据交换swapping data的现象,具体可以参考这个帖子:http://toto-share.com/2011/02/seismic-unix-cant-open-su-file/
解决的方法:
(1)处理前,使用 suswapbytes 解决数据交换问题后,在进行后续处理;
(2)使用 suoldtonew 将原来的数据格式转成 XDR format, 然后进行后续处理
可以参考这个帖子:https://www.detectation.com/forum/viewtopic.php?t=2258
多说两句,之前做偏底层开发的数据处理时,也碰到过这种因为计算机不同读入数据发生swapping data的情况,感觉标准化的可交换数据格式还是挺重要的哈。
最典型是就是windows系统和linux系统关于回车的不同表示,windows是换行+回车,linux是回车。还有类似于big-endian / small-endian的问题,有时候也是挺烦人的。