mirror of
https://github.com/wassname/segpy.git
synced 2026-08-03 13:10:55 +08:00
PEP8 cleanup
This commit is contained in:
@@ -5,12 +5,12 @@ SEG Y Header Definition
|
||||
from revisions import SEGY_REVISION_0, SEGY_REVISION_1
|
||||
|
||||
SH_def = {"Job": {"pos": 3200, "type": "int32", "def": 0}}
|
||||
SH_def["Line"]= {"pos": 3204, "type": "int32", "def": 0}
|
||||
SH_def["Reel"]= {"pos": 3208, "type": "int32", "def": 0}
|
||||
SH_def["DataTracePerEnsemble"]= {"pos": 3212, "type": "int16", "def": 0}
|
||||
SH_def["Line"] = {"pos": 3204, "type": "int32", "def": 0}
|
||||
SH_def["Reel"] = {"pos": 3208, "type": "int32", "def": 0}
|
||||
SH_def["DataTracePerEnsemble"] = {"pos": 3212, "type": "int16", "def": 0}
|
||||
SH_def["AuxiliaryTracePerEnsemble"] = {"pos": 3214, "type": "int16", "def": 0}
|
||||
SH_def["dt"]= {"pos": 3216, "type": "uint16", "def": 1000}
|
||||
SH_def["dtOrig"]= {"pos": 3218, "type": "uint16", "def": 1000}
|
||||
SH_def["dt"] = {"pos": 3216, "type": "uint16", "def": 1000}
|
||||
SH_def["dtOrig"] = {"pos": 3218, "type": "uint16", "def": 1000}
|
||||
SH_def["ns"] = {"pos": 3220, "type": "uint16", "def": 0}
|
||||
SH_def["nsOrig"] = {"pos": 3222, "type": "uint16", "def": 0}
|
||||
SH_def["DataSampleFormat"] = {"pos": 3224, "type": "int16", "def": 5}
|
||||
@@ -47,7 +47,7 @@ SH_def["DataSampleFormat"]["datatype"][SEGY_REVISION_1] = {
|
||||
1: 'ibm',
|
||||
2: 'l',
|
||||
3: 'h',
|
||||
# 5: 'float',
|
||||
# 5: 'float',
|
||||
5: 'f',
|
||||
8: 'B'}
|
||||
|
||||
@@ -68,7 +68,8 @@ SH_def["MeasurementSystem"] = {"pos": 3254, "type": "int16", "def": 0}
|
||||
SH_def["ImpulseSignalPolarity"] = {"pos": 3256, "type": "int16", "def": 0}
|
||||
SH_def["VibratoryPolarityCode"] = {"pos": 3258, "type": "int16", "def": 0}
|
||||
SH_def["Unassigned1"] = {"pos": 3260, "type": "int16", "n": 120, "def": 0}
|
||||
SH_def["SegyFormatRevisionNumber"] = {"pos": 3500, "type": "uint16", "def": 100}
|
||||
SH_def["SegyFormatRevisionNumber"] = {
|
||||
"pos": 3500, "type": "uint16", "def": 100}
|
||||
SH_def["FixedLengthTraceFlag"] = {"pos": 3502, "type": "uint16", "def": 0}
|
||||
SH_def["NumberOfExtTextualHeaders"] = {"pos": 3504, "type": "uint16", "def": 0}
|
||||
SH_def["Unassigned2"] = {"pos": 3506, "type": "int16", "n": 47, "def": 0}
|
||||
|
||||
+3
-2
@@ -1,5 +1,6 @@
|
||||
import struct
|
||||
|
||||
|
||||
def ibm2ieee2(ibm_float):
|
||||
"""
|
||||
ibm2ieee2(ibm_float)
|
||||
@@ -13,9 +14,9 @@ def ibm2ieee2(ibm_float):
|
||||
return 0.0
|
||||
istic, a, b, c = struct.unpack('>BBBB', ibm_float)
|
||||
if istic >= 128:
|
||||
sign= -1.0
|
||||
sign = -1.0
|
||||
istic -= 128
|
||||
else:
|
||||
sign = 1.0
|
||||
mant= float(a << 16) + float(b << 8) + float(c)
|
||||
mant = float(a << 16) + float(b << 8) + float(c)
|
||||
return sign * 16 ** (istic - 64) * (mant / dividend)
|
||||
|
||||
+3
-4
@@ -9,6 +9,7 @@ def imageSegy(Data):
|
||||
pylab.grid(True)
|
||||
pylab.show()
|
||||
|
||||
|
||||
def wiggle(Data, SH, skipt=1, maxval=8, lwidth=0.1):
|
||||
"""
|
||||
wiggle(Data, SH)
|
||||
@@ -19,7 +20,7 @@ def wiggle(Data, SH, skipt=1, maxval=8, lwidth=0.1):
|
||||
|
||||
for i in range(0, SH['ntraces'], skipt):
|
||||
|
||||
trace = Data[: , i]
|
||||
trace = Data[:, i]
|
||||
trace[0] = 0
|
||||
trace[SH['ns'] - 1] = 0
|
||||
pylab.plot(i + trace / maxval, t, color='black', linewidth=lwidth)
|
||||
@@ -27,9 +28,7 @@ def wiggle(Data, SH, skipt=1, maxval=8, lwidth=0.1):
|
||||
if trace[a] < 0:
|
||||
trace[a] = 0
|
||||
|
||||
pylab.fill(i + Data[: , i] / maxval, t, 'k', linewidth=0)
|
||||
pylab.fill(i + Data[:, i] / maxval, t, 'k', linewidth=0)
|
||||
pylab.title(SH['filename'])
|
||||
pylab.grid(True)
|
||||
pylab.show()
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ from numpy import reshape
|
||||
from numpy import zeros
|
||||
from numpy import arange
|
||||
|
||||
from revisions import SEGY_REVISION_0, SEGY_REVISION_1
|
||||
from revisions import SEGY_REVISION_1
|
||||
from header_definition import SH_def
|
||||
from trace_header_definition import STH_def
|
||||
from ibm_float import ibm2ieee2
|
||||
@@ -56,31 +56,32 @@ l_uchar = struct.calcsize('B')
|
||||
l_float = struct.calcsize('f')
|
||||
|
||||
|
||||
DATA_SAMPLE_FORMAT = { 1: 'ibm',
|
||||
2: 'l',
|
||||
3: 'h',
|
||||
5: 'f',
|
||||
8: 'B' }
|
||||
DATA_SAMPLE_FORMAT = {1: 'ibm',
|
||||
2: 'l',
|
||||
3: 'h',
|
||||
5: 'f',
|
||||
8: 'B'}
|
||||
|
||||
CTYPES = {'l': 'l', 'long' : 'l', 'int32': 'l',
|
||||
'L': 'L', 'ulong' : 'L', 'uint32': 'L',
|
||||
'h': 'h', 'short' : 'h', 'int16': 'h',
|
||||
CTYPES = {'l': 'l', 'long': 'l', 'int32': 'l',
|
||||
'L': 'L', 'ulong': 'L', 'uint32': 'L',
|
||||
'h': 'h', 'short': 'h', 'int16': 'h',
|
||||
'H': 'H', 'ushort': 'H', 'uint16': 'H',
|
||||
'c': 'c', 'char' : 'c',
|
||||
'B': 'B', 'uchar' : 'B',
|
||||
'f': 'f', 'float' : 'f',
|
||||
'c': 'c', 'char': 'c',
|
||||
'B': 'B', 'uchar': 'B',
|
||||
'f': 'f', 'float': 'f',
|
||||
'ibm': 'ibm'}
|
||||
|
||||
# TODO This is redundant with data in the SH_def below
|
||||
CTYPE_DESCRIPTION = { 'ibm' : 'IBM float',
|
||||
'l' : '32 bit integer',
|
||||
'h' : '16 bit integer',
|
||||
'f' : 'IEEE float',
|
||||
'B' : '8 bit char' }
|
||||
CTYPE_DESCRIPTION = {'ibm': 'IBM float',
|
||||
'l': '32 bit integer',
|
||||
'h': '16 bit integer',
|
||||
'f': 'IEEE float',
|
||||
'B': '8 bit char'}
|
||||
|
||||
|
||||
def size_in_bytes(ctype):
|
||||
if ctype == 'l' and struct.calcsize(ctype) == 8:
|
||||
return 4 #64-bit issue?
|
||||
return 4 # 64-bit issue?
|
||||
return struct.calcsize(ctype) if ctype != 'ibm' else struct.calcsize('f')
|
||||
|
||||
|
||||
@@ -94,7 +95,7 @@ def getDefaultSegyHeader(ntraces=100, ns=100):
|
||||
for key in SH_def.keys():
|
||||
|
||||
tmpkey = SH_def[key]
|
||||
if tmpkey.has_key('def'):
|
||||
if 'def' in tmpkey:
|
||||
val = tmpkey['def']
|
||||
else:
|
||||
val = 0
|
||||
@@ -103,7 +104,6 @@ def getDefaultSegyHeader(ntraces=100, ns=100):
|
||||
SH["ntraces"] = ntraces
|
||||
SH["ns"] = ns
|
||||
|
||||
|
||||
return SH
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ def getDefaultSegyTraceHeaders(ntraces=100, ns=100, dt=1000):
|
||||
|
||||
for key in STH_def.keys():
|
||||
|
||||
tmpkey = STH_def[key]
|
||||
tmpkey = STH_def[key] # TODO: What is going on here?
|
||||
STH[key] = zeros(ntraces)
|
||||
|
||||
for a in range(ntraces):
|
||||
@@ -128,6 +128,7 @@ def getDefaultSegyTraceHeaders(ntraces=100, ns=100, dt=1000):
|
||||
STH["dt"][a] = dt
|
||||
return STH
|
||||
|
||||
|
||||
def read_trace_header(f, reel_header, trace_header_name='cdp', endian='>'):
|
||||
"""
|
||||
read_trace_header(reel_header, TraceHeaderName)
|
||||
@@ -137,7 +138,9 @@ def read_trace_header(f, reel_header, trace_header_name='cdp', endian='>'):
|
||||
|
||||
# MAKE SOME LOOKUP TABLE THAT HOLDS THE LOCATION OF HEADERS
|
||||
trace_header_pos = STH_def[trace_header_name]["pos"]
|
||||
trace_header_format = STH_def[trace_header_name]["type"] # TODO: Be consistent between 'type' and 'format' here.
|
||||
|
||||
# TODO: Be consistent between 'type' and 'format' here.
|
||||
trace_header_format = STH_def[trace_header_name]["type"]
|
||||
ntraces = reel_header["ntraces"]
|
||||
trace_header_values = zeros(ntraces)
|
||||
binary_reader = create_binary_reader(f, trace_header_format, endian)
|
||||
@@ -148,11 +151,13 @@ def read_trace_header(f, reel_header, trace_header_name='cdp', endian='>'):
|
||||
trace_header_values[i] = binary_reader(pos)
|
||||
return trace_header_values
|
||||
|
||||
|
||||
# TODO: Get the parameter ordering of reel_header and f to be consistent
|
||||
def read_all_trace_headers(f, reel_header):
|
||||
trace_headers = { 'filename': reel_header["filename"] }
|
||||
trace_headers = {'filename': reel_header["filename"]}
|
||||
|
||||
logger.debug('read_all_trace_headers : trying to get all segy trace headers')
|
||||
logger.debug('read_all_trace_headers : '
|
||||
'trying to get all segy trace headers')
|
||||
|
||||
for key in STH_def.keys():
|
||||
trace_header = read_trace_header(f, reel_header, key)
|
||||
@@ -175,33 +180,47 @@ def readSegy(f, filename, endian='>'):
|
||||
Data, SegyHeader, trace_headers = read_reel_header(f)
|
||||
"""
|
||||
|
||||
#data = open(filename, 'rb').read()
|
||||
|
||||
# data = open(filename, 'rb').read()
|
||||
|
||||
file_size = file_length(f)
|
||||
|
||||
#file_size = len(data)
|
||||
# file_size = len(data)
|
||||
logger.debug("readSegy : Length of data : {0}".format(file_size))
|
||||
|
||||
reel_header = read_reel_header(f, filename, endian) # modified by A Squelch
|
||||
reel_header = read_reel_header(f,
|
||||
filename,
|
||||
endian) # modified by A Squelch
|
||||
|
||||
# GET TRACE
|
||||
index = REEL_HEADER_NUM_BYTES
|
||||
bytes_per_sample = getBytePerSample(reel_header)
|
||||
num_data = (file_size - REEL_HEADER_NUM_BYTES) / bytes_per_sample
|
||||
|
||||
Data, reel_header, trace_headers = read_traces(f, reel_header, num_data, bytes_per_sample, index, endian)
|
||||
Data, reel_header, trace_headers = read_traces(f,
|
||||
reel_header,
|
||||
num_data,
|
||||
bytes_per_sample,
|
||||
index,
|
||||
endian)
|
||||
|
||||
logger.debug("readSegy : Read segy data") # modified by A Squelch
|
||||
|
||||
return Data, reel_header, trace_headers
|
||||
|
||||
|
||||
def read_traces(f, reel_header, num_data, bytes_per_sample, index, endian='>'): # added by A Squelch
|
||||
def read_traces(f,
|
||||
reel_header,
|
||||
num_data,
|
||||
bytes_per_sample,
|
||||
index,
|
||||
endian='>'): # added by A Squelch
|
||||
"""Read the trace data.
|
||||
|
||||
values, SegyHeader, SegyTraceHeaders = read_traces(data, reel_header, num_data, bytes_per_sample, index)
|
||||
|
||||
values, SegyHeader, SegyTraceHeaders = read_traces(data,
|
||||
reel_header,
|
||||
num_data,
|
||||
bytes_per_sample,
|
||||
index)
|
||||
"""
|
||||
|
||||
# Calculate number of dummy samples needed to account for Trace Headers
|
||||
@@ -216,13 +235,17 @@ def read_traces(f, reel_header, num_data, bytes_per_sample, index, endian='>'):
|
||||
dsf = reel_header["DataSampleFormat"]
|
||||
ctype = DATA_SAMPLE_FORMAT[dsf]
|
||||
description = CTYPE_DESCRIPTION[ctype]
|
||||
logger.debug("read_traces : Assuming DSF = {0}, {1}".format(dsf, description))
|
||||
logger.debug("read_traces : Assuming DSF = {0}, {1}".format(
|
||||
dsf, description))
|
||||
values, _ = read_binary_value(f, index, ctype, endian, num_data)
|
||||
|
||||
logger.debug("read_traces : - reshaping")
|
||||
values = reshape(values, (reel_header['ntraces'], reel_header['ns'] + num_dummy_samples))
|
||||
values = reshape(values,
|
||||
(reel_header['ntraces'],
|
||||
reel_header['ns'] + num_dummy_samples))
|
||||
logger.debug("read_traces : - stripping header dummy data")
|
||||
values = values[: , num_dummy_samples: (reel_header['ns'] + num_dummy_samples)]
|
||||
values = values[:, num_dummy_samples:
|
||||
(reel_header['ns'] + num_dummy_samples)]
|
||||
logger.debug("read_traces : - transposing")
|
||||
values = transpose(values)
|
||||
|
||||
@@ -242,7 +265,7 @@ def read_reel_header(f, filename, endian='>'):
|
||||
"""
|
||||
reel_header = read_reel_header(filename)
|
||||
"""
|
||||
#data = open(filename, 'rb').read()
|
||||
# data = open(filename, 'rb').read()
|
||||
|
||||
reel_header = {'filename': filename}
|
||||
for key in SH_def.keys():
|
||||
@@ -251,13 +274,17 @@ def read_reel_header(f, filename, endian='>'):
|
||||
|
||||
reel_header[key], index = read_binary_value(f, pos, format, endian)
|
||||
|
||||
logger.debug(str(pos) + " " + str(format) + " Reading " + key + "=" + str(reel_header[key]))
|
||||
logger.debug(str(pos) + " " +
|
||||
str(format) +
|
||||
" Reading " + key +
|
||||
"=" + str(reel_header[key]))
|
||||
|
||||
# SET NUMBER OF BYTES PER DATA SAMPLE
|
||||
bps = getBytePerSample(reel_header)
|
||||
|
||||
file_size = file_length(f)
|
||||
ntraces = (file_size - REEL_HEADER_NUM_BYTES) / (reel_header['ns'] * bps + TRACE_HEADER_NUM_BYTES)
|
||||
ntraces = (file_size - REEL_HEADER_NUM_BYTES) / \
|
||||
(reel_header['ns'] * bps + TRACE_HEADER_NUM_BYTES)
|
||||
reel_header["ntraces"] = ntraces
|
||||
|
||||
logger.debug('read_reel_header : successfully read ' + filename)
|
||||
@@ -265,7 +292,7 @@ def read_reel_header(f, filename, endian='>'):
|
||||
return reel_header
|
||||
|
||||
|
||||
def writeSegy(filename, Data, dt = 1000, STHin={}, SHin={}):
|
||||
def writeSegy(filename, Data, dt=1000, STHin={}, SHin={}):
|
||||
"""
|
||||
writeSegy(filename, Data, dt)
|
||||
|
||||
@@ -300,11 +327,14 @@ def writeSegy(filename, Data, dt = 1000, STHin={}, SHin={}):
|
||||
print key
|
||||
SH[key] = SHin[key]
|
||||
|
||||
|
||||
writeSegyStructure(filename, Data, SH, STH)
|
||||
|
||||
|
||||
def writeSegyStructure(filename, Data, SH, STH, endian='>'): # modified by A Squelch
|
||||
def writeSegyStructure(filename,
|
||||
Data,
|
||||
SH,
|
||||
STH,
|
||||
endian='>'): # modified by A Squelch
|
||||
"""
|
||||
writeSegyStructure(filename, Data, SegyHeader, SegyTraceHeaders)
|
||||
|
||||
@@ -327,12 +357,16 @@ def writeSegyStructure(filename, Data, SH, STH, endian='>'): # modified by A Sq
|
||||
try: # block added by A Squelch
|
||||
DataDescr = SH_def["DataSampleFormat"]["descr"][revision][dsf]
|
||||
except KeyError:
|
||||
logging.critical(" An error has ocurred interpreting a SEGY binary header key")
|
||||
logging.critical(" Please check the Endian setting for this file: {0}".format(SH["filename"]))
|
||||
logging.critical(" An error has ocurred interpreting a SEGY binary"
|
||||
"header key")
|
||||
logging.critical(" Please check the Endian setting for this "
|
||||
"file: {0}".format(SH["filename"]))
|
||||
sys.exit()
|
||||
|
||||
logger.debug("writeSegyStructure : SEG-Y revision = " + str(revision))
|
||||
logger.debug("writeSegyStructure : DataSampleFormat = " + str(dsf) + "(" + DataDescr + ")")
|
||||
logger.debug("writeSegyStructure : DataSampleFormat = " +
|
||||
str(dsf) +
|
||||
"(" + DataDescr + ")")
|
||||
|
||||
# WRITE SEGY HEADER
|
||||
|
||||
@@ -346,25 +380,31 @@ def writeSegyStructure(filename, Data, SH, STH, endian='>'): # modified by A Sq
|
||||
ctype = SH_def['DataSampleFormat']['datatype'][revision][dsf]
|
||||
bps = SH_def['DataSampleFormat']['bps'][revision][dsf]
|
||||
|
||||
|
||||
sizeT = TRACE_HEADER_NUM_BYTES + SH['ns'] * bps
|
||||
|
||||
for itrace in range(SH['ntraces']):
|
||||
index = REEL_HEADER_NUM_BYTES + itrace * sizeT
|
||||
logger.debug('Writing Trace #' + str(itrace + 1) + '/' + str(SH['ntraces']))
|
||||
logger.debug('Writing Trace #' +
|
||||
str(itrace + 1) +
|
||||
'/' + str(SH['ntraces']))
|
||||
# WRITE SEGY TRACE HEADER
|
||||
for key in STH_def.keys():
|
||||
pos = index + STH_def[key]["pos"]
|
||||
format = STH_def[key]["type"]
|
||||
value = STH[key][itrace]
|
||||
logger.debug(str(pos) + " " + str(format) + " Writing " + key + "=" + str(value))
|
||||
logger.debug(str(pos) + " " +
|
||||
str(format) +
|
||||
" Writing " + key +
|
||||
"=" + str(value))
|
||||
putValue(value, f, pos, format, endian)
|
||||
|
||||
# Write Data
|
||||
cformat = endian + ctype
|
||||
for s in range(SH['ns']):
|
||||
strVal = struct.pack(cformat, Data[s, itrace])
|
||||
f.seek(index + TRACE_HEADER_NUM_BYTES + s * struct.calcsize(cformat))
|
||||
f.seek(index +
|
||||
TRACE_HEADER_NUM_BYTES +
|
||||
s * struct.calcsize(cformat))
|
||||
f.write(strVal)
|
||||
|
||||
f.close()
|
||||
@@ -386,6 +426,7 @@ def putValue(value, fileid, index, ctype='l', endian='>', number=1):
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
def create_binary_reader(f, ctype='l', endian='>'):
|
||||
"""Create a unary callable which reads a given binary data type from a file.
|
||||
"""
|
||||
@@ -433,9 +474,15 @@ def read_binary_value(f, index, ctype='l', endian='>', number=1):
|
||||
Value = struct.unpack(cformat, data)
|
||||
|
||||
if ctype == 'B':
|
||||
logger.warning('read_binary_value : Inefficient use of 1 byte Integer...', 1)
|
||||
logger.warning('read_binary_value : '
|
||||
'Inefficient use of 1 byte Integer...', 1)
|
||||
|
||||
logger.debug('read_binary_value : ' + 'start = ' + str(index) + ' size = ' + str(size) + ' number = ' + str(number) + ' Value = ' + str(Value) + ' cformat = ' + str(cformat))
|
||||
logger.debug('read_binary_value : ' +
|
||||
'start = ' + str(index) +
|
||||
' size = ' + str(size) +
|
||||
' number = ' + str(number) +
|
||||
' Value = ' + str(Value) +
|
||||
' cformat = ' + str(cformat))
|
||||
|
||||
if number == 1:
|
||||
return Value[0], index_end
|
||||
@@ -443,8 +490,6 @@ def read_binary_value(f, index, ctype='l', endian='>', number=1):
|
||||
return Value, index_end
|
||||
|
||||
|
||||
|
||||
|
||||
def getBytePerSample(SH):
|
||||
revision = SH["SegyFormatRevisionNumber"]
|
||||
|
||||
@@ -456,9 +501,12 @@ def getBytePerSample(SH):
|
||||
try: # block added by A Squelch
|
||||
bps = SH_def["DataSampleFormat"]["bps"][revision][dsf]
|
||||
except KeyError:
|
||||
# TODO: This should not be a critical failure - should just convert exception
|
||||
logging.critical(" An error has occurred interpreting a SEGY binary header key")
|
||||
logging.critical("Please check the Endian setting for this file: {0}".format(SH["filename"]))
|
||||
# TODO: This should not be a critical failure - should just convert
|
||||
# exception
|
||||
logging.critical(" An error has occurred interpreting a SEGY "
|
||||
"binary header key")
|
||||
logging.critical("Please check the Endian setting for "
|
||||
"this file: {0}".format(SH["filename"]))
|
||||
sys.exit()
|
||||
|
||||
logger.debug("getBytePerSample : bps = " + str(bps))
|
||||
@@ -466,6 +514,7 @@ def getBytePerSample(SH):
|
||||
return bps
|
||||
|
||||
if __name__ == '__main__':
|
||||
filename = r'C:\Users\rjs\opendtectroot\Blake_Ridge_Hydrates_3D\stack_final_scaled50_int8.sgy'
|
||||
filename = r'C:\Users\rjs\opendtectroot\Blake_Ridge_Hydrates_3D'\
|
||||
r'\stack_final_scaled50_int8.sgy'
|
||||
with open(filename, 'rb') as segy:
|
||||
Data, SH, SegyTraceHeaders = readSegy(segy, filename)
|
||||
Data, SH, SegyTraceHeaders = readSegy(segy, filename)
|
||||
|
||||
+663
-589
File diff suppressed because it is too large
Load Diff
+19
-21
@@ -2,44 +2,42 @@
|
||||
#
|
||||
# testsegy.py
|
||||
#
|
||||
import struct
|
||||
|
||||
import segypy
|
||||
|
||||
filename='ld0057_file_00095.sgy';
|
||||
#filename='mini.sgy'
|
||||
#filename='data_IEEE.segy';
|
||||
#filename='data_IBM_REV1.segy';
|
||||
#filename='data_IBM_REV0.segy';
|
||||
#filename='data_1byteINT.segy';
|
||||
#filename='data_2byteINT.segy';
|
||||
#filename='data_4byteINT.segy';
|
||||
filename = 'ld0057_file_00095.sgy'
|
||||
# filename='mini.sgy'
|
||||
# filename='data_IEEE.segy';
|
||||
# filename='data_IBM_REV1.segy';
|
||||
# filename='data_IBM_REV0.segy';
|
||||
# filename='data_1byteINT.segy';
|
||||
# filename='data_2byteINT.segy';
|
||||
# filename='data_4byteINT.segy';
|
||||
|
||||
# Read Segy File
|
||||
Data,SH,STH=segypy.readSegy(filename);
|
||||
|
||||
Data, SH, STH = segypy.readSegy(filename)
|
||||
|
||||
|
||||
exit
|
||||
|
||||
|
||||
filename_out='testout.segy';
|
||||
SH['DataSampleFormat']=5;
|
||||
SH['SegyFormatRevisionNumber']=100;
|
||||
segypy.writeSegyStructure(filename_out,Data,SH,STH);
|
||||
filename_out = 'testout.segy'
|
||||
SH['DataSampleFormat'] = 5
|
||||
SH['SegyFormatRevisionNumber'] = 100
|
||||
segypy.writeSegyStructure(filename_out, Data, SH, STH)
|
||||
|
||||
segypy.wiggle(Data,SH,2,.1,.1)
|
||||
segypy.wiggle(Data, SH, 2, .1, .1)
|
||||
|
||||
f_ieee='data_IEEE.segy';
|
||||
f_ibm='data_IBM_REV1.segy';
|
||||
d_ieee,SH,STH=segypy.readSegy(f_ieee);
|
||||
d_ibm,SH,STH=segypy.readSegy(f_ibm);
|
||||
f_ieee = 'data_IEEE.segy'
|
||||
f_ibm = 'data_IBM_REV1.segy'
|
||||
d_ieee, SH, STH = segypy.readSegy(f_ieee)
|
||||
d_ibm, SH, STH = segypy.readSegy(f_ibm)
|
||||
|
||||
|
||||
import pylab
|
||||
|
||||
|
||||
#imshow(Data)
|
||||
# imshow(Data)
|
||||
pylab.figure(1)
|
||||
pylab.imshow(d_ieee)
|
||||
pylab.title('ieee')
|
||||
|
||||
+133
-124
@@ -1,13 +1,13 @@
|
||||
from revisions import SEGY_REVISION_0, SEGY_REVISION_1
|
||||
|
||||
STH_def = {"TraceSequenceLine": {"pos": 0, "type": "int32"}}
|
||||
STH_def["TraceSequenceFile"]= {"pos": 4, "type": "int32"}
|
||||
STH_def["FieldRecord"]= {"pos": 8, "type": "int32"}
|
||||
STH_def["TraceNumber"]= {"pos": 12, "type": "int32"}
|
||||
STH_def["EnergySourcePoint"]= {"pos": 16, "type": "int32"}
|
||||
STH_def["cdp"]= {"pos": 20, "type": "int32"}
|
||||
STH_def["cdpTrace"]= {"pos": 24, "type": "int32"}
|
||||
STH_def["TraceIdentificationCode"] = {"pos": 28 , "type": "uint16"}
|
||||
STH_def["TraceSequenceFile"] = {"pos": 4, "type": "int32"}
|
||||
STH_def["FieldRecord"] = {"pos": 8, "type": "int32"}
|
||||
STH_def["TraceNumber"] = {"pos": 12, "type": "int32"}
|
||||
STH_def["EnergySourcePoint"] = {"pos": 16, "type": "int32"}
|
||||
STH_def["cdp"] = {"pos": 20, "type": "int32"}
|
||||
STH_def["cdpTrace"] = {"pos": 24, "type": "int32"}
|
||||
STH_def["TraceIdentificationCode"] = {"pos": 28, "type": "uint16"}
|
||||
STH_def["TraceIdentificationCode"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "Seismic data",
|
||||
2: "Dead",
|
||||
@@ -19,16 +19,16 @@ STH_def["TraceIdentificationCode"]["descr"] = {SEGY_REVISION_0: {
|
||||
8: "Water Break"}}
|
||||
STH_def["TraceIdentificationCode"]["descr"][SEGY_REVISION_1] = {
|
||||
-1: "Other",
|
||||
0: "Unknown",
|
||||
1: "Seismic data",
|
||||
2: "Dead",
|
||||
3: "Dummy",
|
||||
4: "Time break",
|
||||
5: "Uphole",
|
||||
6: "Sweep",
|
||||
7: "Timing",
|
||||
8: "Waterbreak",
|
||||
9: "Near-field gun signature",
|
||||
0: "Unknown",
|
||||
1: "Seismic data",
|
||||
2: "Dead",
|
||||
3: "Dummy",
|
||||
4: "Time break",
|
||||
5: "Uphole",
|
||||
6: "Sweep",
|
||||
7: "Timing",
|
||||
8: "Waterbreak",
|
||||
9: "Near-field gun signature",
|
||||
10: "Far-field gun signature",
|
||||
11: "Seismic pressure sensor",
|
||||
12: "Multicomponent seismic sensor - Vertical component",
|
||||
@@ -42,28 +42,28 @@ STH_def["TraceIdentificationCode"]["descr"][SEGY_REVISION_1] = {
|
||||
20: "Vibrator estimated ground force",
|
||||
21: "Vibrator reference",
|
||||
22: "Time-velocity pairs"}
|
||||
STH_def["NSummedTraces"] = {"pos": 30 , "type": "int16"}
|
||||
STH_def["NStackedTraces"] = {"pos": 32 , "type": "int16"}
|
||||
STH_def["DataUse"] = {"pos": 34 , "type": "int16"}
|
||||
STH_def["NSummedTraces"] = {"pos": 30, "type": "int16"}
|
||||
STH_def["NStackedTraces"] = {"pos": 32, "type": "int16"}
|
||||
STH_def["DataUse"] = {"pos": 34, "type": "int16"}
|
||||
STH_def["DataUse"]["descr"] = {0: {
|
||||
1: "Production",
|
||||
2: "Test"}}
|
||||
STH_def["DataUse"]["descr"][1] = STH_def["DataUse"]["descr"][0]
|
||||
STH_def["offset"] = {"pos": 36 , "type": "int32"}
|
||||
STH_def["ReceiverGroupElevation"] = {"pos": 40 , "type": "int32"}
|
||||
STH_def["SourceSurfaceElevation"] = {"pos": 44 , "type": "int32"}
|
||||
STH_def["SourceDepth"] = {"pos": 48 , "type": "int32"}
|
||||
STH_def["ReceiverDatumElevation"] = {"pos": 52 , "type": "int32"}
|
||||
STH_def["SourceDatumElevation"] = {"pos": 56 , "type": "int32"}
|
||||
STH_def["SourceWaterDepth"] = {"pos": 60 , "type": "int32"}
|
||||
STH_def["GroupWaterDepth"] = {"pos": 64 , "type": "int32"}
|
||||
STH_def["ElevationScalar"] = {"pos": 68 , "type": "int16"}
|
||||
STH_def["SourceGroupScalar"] = {"pos": 70 , "type": "int16"}
|
||||
STH_def["SourceX"] = {"pos": 72 , "type": "int32"}
|
||||
STH_def["SourceY"] = {"pos": 76 , "type": "int32"}
|
||||
STH_def["GroupX"] = {"pos": 80 , "type": "int32"}
|
||||
STH_def["GroupY"] = {"pos": 84 , "type": "int32"}
|
||||
STH_def["CoordinateUnits"] = {"pos": 88 , "type": "int16"}
|
||||
STH_def["offset"] = {"pos": 36, "type": "int32"}
|
||||
STH_def["ReceiverGroupElevation"] = {"pos": 40, "type": "int32"}
|
||||
STH_def["SourceSurfaceElevation"] = {"pos": 44, "type": "int32"}
|
||||
STH_def["SourceDepth"] = {"pos": 48, "type": "int32"}
|
||||
STH_def["ReceiverDatumElevation"] = {"pos": 52, "type": "int32"}
|
||||
STH_def["SourceDatumElevation"] = {"pos": 56, "type": "int32"}
|
||||
STH_def["SourceWaterDepth"] = {"pos": 60, "type": "int32"}
|
||||
STH_def["GroupWaterDepth"] = {"pos": 64, "type": "int32"}
|
||||
STH_def["ElevationScalar"] = {"pos": 68, "type": "int16"}
|
||||
STH_def["SourceGroupScalar"] = {"pos": 70, "type": "int16"}
|
||||
STH_def["SourceX"] = {"pos": 72, "type": "int32"}
|
||||
STH_def["SourceY"] = {"pos": 76, "type": "int32"}
|
||||
STH_def["GroupX"] = {"pos": 80, "type": "int32"}
|
||||
STH_def["GroupY"] = {"pos": 84, "type": "int32"}
|
||||
STH_def["CoordinateUnits"] = {"pos": 88, "type": "int16"}
|
||||
STH_def["CoordinateUnits"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "Length (meters or feet)",
|
||||
2: "Seconds of arc"}}
|
||||
@@ -72,68 +72,72 @@ STH_def["CoordinateUnits"]["descr"][SEGY_REVISION_1] = {
|
||||
2: "Seconds of arc",
|
||||
3: "Decimal degrees",
|
||||
4: "Degrees, minutes, seconds (DMS)"}
|
||||
STH_def["WeatheringVelocity"] = {"pos": 90 , "type": "int16"}
|
||||
STH_def["SubWeatheringVelocity"] = {"pos": 92 , "type": "int16"}
|
||||
STH_def["SourceUpholeTime"] = {"pos": 94 , "type": "int16"}
|
||||
STH_def["GroupUpholeTime"] = {"pos": 96 , "type": "int16"}
|
||||
STH_def["SourceStaticCorrection"] = {"pos": 98 , "type": "int16"}
|
||||
STH_def["GroupStaticCorrection"] = {"pos": 100 , "type": "int16"}
|
||||
STH_def["TotalStaticApplied"] = {"pos": 102 , "type": "int16"}
|
||||
STH_def["LagTimeA"] = {"pos": 104 , "type": "int16"}
|
||||
STH_def["LagTimeB"] = {"pos": 106 , "type": "int16"}
|
||||
STH_def["DelayRecordingTime"] = {"pos": 108 , "type": "int16"}
|
||||
STH_def["MuteTimeStart"] = {"pos": 110 , "type": "int16"}
|
||||
STH_def["MuteTimeEND"] = {"pos": 112 , "type": "int16"}
|
||||
STH_def["ns"] = {"pos": 114 , "type": "uint16"}
|
||||
STH_def["dt"] = {"pos": 116 , "type": "uint16"}
|
||||
STH_def["GainType"] = {"pos": 119 , "type": "int16"}
|
||||
STH_def["WeatheringVelocity"] = {"pos": 90, "type": "int16"}
|
||||
STH_def["SubWeatheringVelocity"] = {"pos": 92, "type": "int16"}
|
||||
STH_def["SourceUpholeTime"] = {"pos": 94, "type": "int16"}
|
||||
STH_def["GroupUpholeTime"] = {"pos": 96, "type": "int16"}
|
||||
STH_def["SourceStaticCorrection"] = {"pos": 98, "type": "int16"}
|
||||
STH_def["GroupStaticCorrection"] = {"pos": 100, "type": "int16"}
|
||||
STH_def["TotalStaticApplied"] = {"pos": 102, "type": "int16"}
|
||||
STH_def["LagTimeA"] = {"pos": 104, "type": "int16"}
|
||||
STH_def["LagTimeB"] = {"pos": 106, "type": "int16"}
|
||||
STH_def["DelayRecordingTime"] = {"pos": 108, "type": "int16"}
|
||||
STH_def["MuteTimeStart"] = {"pos": 110, "type": "int16"}
|
||||
STH_def["MuteTimeEND"] = {"pos": 112, "type": "int16"}
|
||||
STH_def["ns"] = {"pos": 114, "type": "uint16"}
|
||||
STH_def["dt"] = {"pos": 116, "type": "uint16"}
|
||||
STH_def["GainType"] = {"pos": 119, "type": "int16"}
|
||||
STH_def["GainType"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "Fixes",
|
||||
2: "Binary",
|
||||
3: "Floating point"}}
|
||||
STH_def["GainType"]["descr"][SEGY_REVISION_1] = STH_def["GainType"]["descr"][SEGY_REVISION_0]
|
||||
STH_def["InstrumentGainConstant"] = {"pos": 120 , "type": "int16"}
|
||||
STH_def["InstrumentInitialGain"] = {"pos": 122 , "type": "int16"}
|
||||
STH_def["Correlated"] = {"pos": 124 , "type": "int16"}
|
||||
STH_def["GainType"]["descr"][SEGY_REVISION_1] = STH_def[
|
||||
"GainType"]["descr"][SEGY_REVISION_0]
|
||||
STH_def["InstrumentGainConstant"] = {"pos": 120, "type": "int16"}
|
||||
STH_def["InstrumentInitialGain"] = {"pos": 122, "type": "int16"}
|
||||
STH_def["Correlated"] = {"pos": 124, "type": "int16"}
|
||||
STH_def["Correlated"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "No",
|
||||
2: "Yes"}}
|
||||
STH_def["Correlated"]["descr"][SEGY_REVISION_1] = STH_def["Correlated"]["descr"][SEGY_REVISION_0]
|
||||
STH_def["Correlated"]["descr"][SEGY_REVISION_1] = STH_def[
|
||||
"Correlated"]["descr"][SEGY_REVISION_0]
|
||||
|
||||
STH_def["SweepFrequencyStart"] = {"pos": 126 , "type": "int16"}
|
||||
STH_def["SweepFrequencyEnd"] = {"pos": 128 , "type": "int16"}
|
||||
STH_def["SweepLength"] = {"pos": 130 , "type": "int16"}
|
||||
STH_def["SweepType"] = {"pos": 132 , "type": "int16"}
|
||||
STH_def["SweepFrequencyStart"] = {"pos": 126, "type": "int16"}
|
||||
STH_def["SweepFrequencyEnd"] = {"pos": 128, "type": "int16"}
|
||||
STH_def["SweepLength"] = {"pos": 130, "type": "int16"}
|
||||
STH_def["SweepType"] = {"pos": 132, "type": "int16"}
|
||||
STH_def["SweepType"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "linear",
|
||||
2: "parabolic",
|
||||
3: "exponential",
|
||||
4: "other"}}
|
||||
STH_def["SweepType"]["descr"][SEGY_REVISION_1] = STH_def["SweepType"]["descr"][SEGY_REVISION_0]
|
||||
STH_def["SweepType"]["descr"][SEGY_REVISION_1] = STH_def[
|
||||
"SweepType"]["descr"][SEGY_REVISION_0]
|
||||
|
||||
STH_def["SweepTraceTaperLengthStart"] = {"pos": 134 , "type": "int16"}
|
||||
STH_def["SweepTraceTaperLengthEnd"] = {"pos": 136 , "type": "int16"}
|
||||
STH_def["TaperType"] = {"pos": 138 , "type": "int16"}
|
||||
STH_def["SweepTraceTaperLengthStart"] = {"pos": 134, "type": "int16"}
|
||||
STH_def["SweepTraceTaperLengthEnd"] = {"pos": 136, "type": "int16"}
|
||||
STH_def["TaperType"] = {"pos": 138, "type": "int16"}
|
||||
STH_def["TaperType"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "linear",
|
||||
2: "cos2c",
|
||||
3: "other"}}
|
||||
STH_def["TaperType"]["descr"][SEGY_REVISION_1] = STH_def["TaperType"]["descr"][SEGY_REVISION_0]
|
||||
STH_def["TaperType"]["descr"][SEGY_REVISION_1] = STH_def[
|
||||
"TaperType"]["descr"][SEGY_REVISION_0]
|
||||
|
||||
STH_def["AliasFilterFrequency"] = {"pos": 140 , "type": "int16"}
|
||||
STH_def["AliasFilterSlope"] = {"pos": 142 , "type": "int16"}
|
||||
STH_def["NotchFilterFrequency"] = {"pos": 144 , "type": "int16"}
|
||||
STH_def["NotchFilterSlope"] = {"pos": 146 , "type": "int16"}
|
||||
STH_def["LowCutFrequency"] = {"pos": 148 , "type": "int16"}
|
||||
STH_def["HighCutFrequency"] = {"pos": 150 , "type": "int16"}
|
||||
STH_def["LowCutSlope"] = {"pos": 152 , "type": "int16"}
|
||||
STH_def["HighCutSlope"] = {"pos": 154 , "type": "int16"}
|
||||
STH_def["YearDataRecorded"] = {"pos": 156 , "type": "int16"}
|
||||
STH_def["DayOfYear"] = {"pos": 158 , "type": "int16"}
|
||||
STH_def["HourOfDay"] = {"pos": 160 , "type": "int16"}
|
||||
STH_def["MinuteOfHour"] = {"pos": 162 , "type": "int16"}
|
||||
STH_def["SecondOfMinute"] = {"pos": 164 , "type": "int16"}
|
||||
STH_def["TimeBaseCode"] = {"pos": 166 , "type": "int16"}
|
||||
STH_def["AliasFilterFrequency"] = {"pos": 140, "type": "int16"}
|
||||
STH_def["AliasFilterSlope"] = {"pos": 142, "type": "int16"}
|
||||
STH_def["NotchFilterFrequency"] = {"pos": 144, "type": "int16"}
|
||||
STH_def["NotchFilterSlope"] = {"pos": 146, "type": "int16"}
|
||||
STH_def["LowCutFrequency"] = {"pos": 148, "type": "int16"}
|
||||
STH_def["HighCutFrequency"] = {"pos": 150, "type": "int16"}
|
||||
STH_def["LowCutSlope"] = {"pos": 152, "type": "int16"}
|
||||
STH_def["HighCutSlope"] = {"pos": 154, "type": "int16"}
|
||||
STH_def["YearDataRecorded"] = {"pos": 156, "type": "int16"}
|
||||
STH_def["DayOfYear"] = {"pos": 158, "type": "int16"}
|
||||
STH_def["HourOfDay"] = {"pos": 160, "type": "int16"}
|
||||
STH_def["MinuteOfHour"] = {"pos": 162, "type": "int16"}
|
||||
STH_def["SecondOfMinute"] = {"pos": 164, "type": "int16"}
|
||||
STH_def["TimeBaseCode"] = {"pos": 166, "type": "int16"}
|
||||
STH_def["TimeBaseCode"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "Local",
|
||||
2: "GMT",
|
||||
@@ -143,29 +147,33 @@ STH_def["TimeBaseCode"]["descr"][SEGY_REVISION_1] = {
|
||||
2: "GMT",
|
||||
3: "Other",
|
||||
4: "UTC"}
|
||||
STH_def["TraceWeightingFactor"] = {"pos": 168 , "type": "int16"}
|
||||
STH_def["GeophoneGroupNumberRoll1"] = {"pos": 170 , "type": "int16"}
|
||||
STH_def["GeophoneGroupNumberFirstTraceOrigField"] = {"pos": 172 , "type": "int16"}
|
||||
STH_def["GeophoneGroupNumberLastTraceOrigField"] = {"pos": 174 , "type": "int16"}
|
||||
STH_def["GapSize"] = {"pos": 176 , "type": "int16"}
|
||||
STH_def["OverTravel"] = {"pos": 178 , "type": "int16"}
|
||||
STH_def["TraceWeightingFactor"] = {"pos": 168, "type": "int16"}
|
||||
STH_def["GeophoneGroupNumberRoll1"] = {"pos": 170, "type": "int16"}
|
||||
STH_def["GeophoneGroupNumberFirstTraceOrigField"] = {
|
||||
"pos": 172, "type": "int16"}
|
||||
STH_def["GeophoneGroupNumberLastTraceOrigField"] = {
|
||||
"pos": 174, "type": "int16"}
|
||||
STH_def["GapSize"] = {"pos": 176, "type": "int16"}
|
||||
STH_def["OverTravel"] = {"pos": 178, "type": "int16"}
|
||||
STH_def["OverTravel"]["descr"] = {SEGY_REVISION_0: {
|
||||
1: "down (or behind)",
|
||||
2: "up (or ahead)",
|
||||
3: "other"}}
|
||||
STH_def["OverTravel"]["descr"][SEGY_REVISION_1] = STH_def["OverTravel"]["descr"][SEGY_REVISION_0]
|
||||
STH_def["OverTravel"]["descr"][SEGY_REVISION_1] = STH_def[
|
||||
"OverTravel"]["descr"][SEGY_REVISION_0]
|
||||
|
||||
|
||||
STH_def["cdpX"] = {"pos": 180 , "type": "int32"}
|
||||
STH_def["cdpY"] = {"pos": 184 , "type": "int32"}
|
||||
STH_def["Inline3D"] = {"pos": 188 , "type": "int32"}
|
||||
STH_def["Crossline3D"] = {"pos": 192 , "type": "int32"}
|
||||
STH_def["ShotPoint"] = {"pos": 192 , "type": "int32"}
|
||||
STH_def["ShotPointScalar"] = {"pos": 200 , "type": "int16"}
|
||||
STH_def["TraceValueMeasurementUnit"] = {"pos": 202 , "type": "int16"}
|
||||
STH_def["cdpX"] = {"pos": 180, "type": "int32"}
|
||||
STH_def["cdpY"] = {"pos": 184, "type": "int32"}
|
||||
STH_def["Inline3D"] = {"pos": 188, "type": "int32"}
|
||||
STH_def["Crossline3D"] = {"pos": 192, "type": "int32"}
|
||||
STH_def["ShotPoint"] = {"pos": 192, "type": "int32"}
|
||||
STH_def["ShotPointScalar"] = {"pos": 200, "type": "int16"}
|
||||
STH_def["TraceValueMeasurementUnit"] = {"pos": 202, "type": "int16"}
|
||||
STH_def["TraceValueMeasurementUnit"]["descr"] = {SEGY_REVISION_1: {
|
||||
-1: "Other",
|
||||
0: "Unknown (should be described in Data Sample Measurement Units Stanza) ",
|
||||
0: "Unknown (should be described in Data Sample "
|
||||
"Measurement Units Stanza)",
|
||||
1: "Pascal (Pa)",
|
||||
2: "Volts (V)",
|
||||
3: "Millivolts (v)",
|
||||
@@ -175,39 +183,40 @@ STH_def["TraceValueMeasurementUnit"]["descr"] = {SEGY_REVISION_1: {
|
||||
7: "Meters Per Second squared (m/&s2)Other",
|
||||
8: "Newton (N)",
|
||||
9: "Watt (W)"}}
|
||||
STH_def["TransductionConstantMantissa"] = {"pos": 204 , "type": "int32"}
|
||||
STH_def["TransductionConstantPower"] = {"pos": 208 , "type": "int16"}
|
||||
STH_def["TransductionUnit"] = {"pos": 210 , "type": "int16"}
|
||||
STH_def["TransductionUnit"]["descr"] = STH_def["TraceValueMeasurementUnit"]["descr"]
|
||||
STH_def["TraceIdentifier"] = {"pos": 212 , "type": "int16"}
|
||||
STH_def["ScalarTraceHeader"] = {"pos": 214 , "type": "int16"}
|
||||
STH_def["SourceType"] = {"pos": 216 , "type": "int16"}
|
||||
STH_def["TransductionConstantMantissa"] = {"pos": 204, "type": "int32"}
|
||||
STH_def["TransductionConstantPower"] = {"pos": 208, "type": "int16"}
|
||||
STH_def["TransductionUnit"] = {"pos": 210, "type": "int16"}
|
||||
STH_def["TransductionUnit"]["descr"] = STH_def[
|
||||
"TraceValueMeasurementUnit"]["descr"]
|
||||
STH_def["TraceIdentifier"] = {"pos": 212, "type": "int16"}
|
||||
STH_def["ScalarTraceHeader"] = {"pos": 214, "type": "int16"}
|
||||
STH_def["SourceType"] = {"pos": 216, "type": "int16"}
|
||||
STH_def["SourceType"]["descr"] = {SEGY_REVISION_1: {
|
||||
-1: "Other (should be described in Source Type/Orientation stanza)",
|
||||
0: "Unknown",
|
||||
1: "Vibratory - Vertical orientation",
|
||||
2: "Vibratory - Cross-line orientation",
|
||||
3: "Vibratory - In-line orientation",
|
||||
4: "Impulsive - Vertical orientation",
|
||||
5: "Impulsive - Cross-line orientation",
|
||||
6: "Impulsive - In-line orientation",
|
||||
7: "Distributed Impulsive - Vertical orientation",
|
||||
8: "Distributed Impulsive - Cross-line orientation",
|
||||
9: "Distributed Impulsive - In-line orientation"}}
|
||||
0: "Unknown",
|
||||
1: "Vibratory - Vertical orientation",
|
||||
2: "Vibratory - Cross-line orientation",
|
||||
3: "Vibratory - In-line orientation",
|
||||
4: "Impulsive - Vertical orientation",
|
||||
5: "Impulsive - Cross-line orientation",
|
||||
6: "Impulsive - In-line orientation",
|
||||
7: "Distributed Impulsive - Vertical orientation",
|
||||
8: "Distributed Impulsive - Cross-line orientation",
|
||||
9: "Distributed Impulsive - In-line orientation"}}
|
||||
|
||||
STH_def["SourceEnergyDirectionMantissa"] = {"pos": 218 , "type": "int32"}
|
||||
STH_def["SourceEnergyDirectionExponent"] = {"pos": 222 , "type": "int16"}
|
||||
STH_def["SourceMeasurementMantissa"] = {"pos": 224 , "type": "int32"}
|
||||
STH_def["SourceMeasurementExponent"] = {"pos": 228 , "type": "int16"}
|
||||
STH_def["SourceMeasurementUnit"] = {"pos": 230 , "type": "int16"}
|
||||
STH_def["SourceEnergyDirectionMantissa"] = {"pos": 218, "type": "int32"}
|
||||
STH_def["SourceEnergyDirectionExponent"] = {"pos": 222, "type": "int16"}
|
||||
STH_def["SourceMeasurementMantissa"] = {"pos": 224, "type": "int32"}
|
||||
STH_def["SourceMeasurementExponent"] = {"pos": 228, "type": "int16"}
|
||||
STH_def["SourceMeasurementUnit"] = {"pos": 230, "type": "int16"}
|
||||
STH_def["SourceMeasurementUnit"]["descr"] = {1: {
|
||||
-1: "Other (should be described in Source Measurement Unit stanza)",
|
||||
0: "Unknown",
|
||||
1: "Joule (J)",
|
||||
2: "Kilowatt (kW)",
|
||||
3: "Pascal (Pa)",
|
||||
4: "Bar (Bar)",
|
||||
5: "Newton (N)",
|
||||
6: "Kilograms (kg)"}}
|
||||
STH_def["UnassignedInt1"] = {"pos": 232 , "type": "int32"}
|
||||
STH_def["UnassignedInt2"] = {"pos": 236 , "type": "int32"}
|
||||
0: "Unknown",
|
||||
1: "Joule (J)",
|
||||
2: "Kilowatt (kW)",
|
||||
3: "Pascal (Pa)",
|
||||
4: "Bar (Bar)",
|
||||
5: "Newton (N)",
|
||||
6: "Kilograms (kg)"}}
|
||||
STH_def["UnassignedInt1"] = {"pos": 232, "type": "int32"}
|
||||
STH_def["UnassignedInt2"] = {"pos": 236, "type": "int32"}
|
||||
|
||||
Reference in New Issue
Block a user