mirror of
https://github.com/wassname/segpy.git
synced 2026-06-27 18:25:38 +08:00
Example program to print a report of important SEG Y file characteristics.
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
"""Displays a simple report of a SEG Y file.
|
||||
|
||||
Usage:
|
||||
|
||||
report.py <in.segy>
|
||||
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
import os
|
||||
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
from segpy.reader import create_reader
|
||||
|
||||
|
||||
def report_segy(in_filename):
|
||||
with open(in_filename, 'rb') as in_file:
|
||||
|
||||
segy_reader = create_reader(in_file)
|
||||
print()
|
||||
print("Filename: ", segy_reader.filename)
|
||||
print("SEG Y revision: ", segy_reader.revision)
|
||||
print("Number of traces: ", segy_reader.num_traces())
|
||||
print("Data format: ",
|
||||
segy_reader.data_sample_format_description)
|
||||
print("Dimensionality: ", segy_reader.dimensionality)
|
||||
|
||||
try:
|
||||
print("Number of CDPs: ", segy_reader.num_cdps())
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
print("Number of inlines: ", segy_reader.num_inlines())
|
||||
print("Number of crosslines: ", segy_reader.num_xlines())
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
print("=== BEGIN TEXTUAL REEL HEADER ===")
|
||||
for line in segy_reader.textual_reel_header:
|
||||
print(line[3:])
|
||||
print("=== END TEXTUAL REEL HEADER ===")
|
||||
print()
|
||||
print("=== BEGIN EXTENDED TEXTUAL HEADER ===")
|
||||
print(segy_reader.extended_textual_header)
|
||||
print("=== END EXTENDED TEXTUAL_HEADER ===")
|
||||
|
||||
for trace_index in segy_reader.trace_indexes():
|
||||
trace_header = segy_reader.trace_header(trace_index)
|
||||
print("Inline {}, Crossline {}, Shotpoint {}".format(trace_header.Inline3D, trace_header.Crossline3D,
|
||||
trace_header.ShotPoint))
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
if argv is None:
|
||||
argv = sys.argv[1:]
|
||||
|
||||
try:
|
||||
in_filename = argv[0]
|
||||
except IndexError:
|
||||
print(globals()['__doc__'], file=sys.stderr)
|
||||
return os.EX_USAGE
|
||||
|
||||
try:
|
||||
report_segy(in_filename)
|
||||
except (FileNotFoundError, IsADirectoryError) as e:
|
||||
print(e, file=sys.stderr)
|
||||
return os.EX_NOINPUT
|
||||
except PermissionError as e:
|
||||
print(e, file=sys.stderr)
|
||||
return os.EX_NOPERM
|
||||
except Exception as e:
|
||||
traceback.print_exception(type(e), e, e.__traceback__, file=sys.stderr)
|
||||
return os.EX_SOFTWARE
|
||||
return os.EX_OK
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user