I tried to convert segd format to su format using seismic unix by below command:

segdread tape=1.segd > 1.su

but I have an error:

segdread: Error with length of first record
    ... first record = 270320 bytes differs from ((1 + n_gh + n_str * (n_cs + n_sk) + n_ec + n_ex) * 32)
        with n_gh=2, n_str=1, n_cs=16, n_sk=0, n_ec=32, n_ex=32

I would be grateful if you could help me to fix it.


2 Answers 2


SEG-D is an uncommon format. From my experience, here is how you need to approach this problem. You can't easily jump straight from SEG-D to SU. I've had extensive experience with SU and the best methodology is to first take your current seismic data type (SEG-D) and convert to SEG-Y. Only after converting to SEG-Y format can you then jump to SU.

So, here is an outline and workflow of a solution:

1.) Download and use this tool for SEG-D to SEG-Y format: http://users.chariot.net.au/~witek/segd2segy.htm

2.) Now that you have all your SEG-D data converted to SEG-Y data, use the following BASH script to convert a single SEG-Y file to SU:

echo Provide Input File: ;
read sdata;
segyread tape=${sdata} verbose=1 endian=0 segyclean > ${sdata}.su
echo "New File: ${sdata}.su";
rm -rf binary header;
echo Done.;

***Keep in mind that - based on the type of machine you have - endian may need to be set to 1.


for pipe, disk and fixed-block 8mm drives ,you need set param use_stdio=1

segdread tape=1.segd use_stdio=1 > 1.su

  • $\begingroup$ Are you sure? I don't know these programs, but it looks as stdout redirection to me. $\endgroup$
    – peterh
    Commented Mar 23, 2020 at 7:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.