Click or drag to resize
SoVRSegyFileReader Class

SEGY file format reader.

Inheritance Hierarchy

Namespace: OIV.VolumeViz.Readers
Assembly: OIV.VolumeViz (in OIV.VolumeViz.dll) Version: 2023.1.3.0 (2023.1.3)
Syntax
public class SoVRSegyFileReader : SoVolumeReader

The SoVRSegyFileReader type exposes the following members.

Constructors
  NameDescription
Public methodSoVRSegyFileReader

Constructor.

Top
Methods
  NameDescription
Public methodCloseAllHandles
Close all file handles currently opened by the reader.
(Inherited from SoVolumeReader.)
Public methodCopyFieldValues(SoFieldContainer)
Calls CopyFieldValues(fc, false).
(Inherited from SoFieldContainer.)
Public methodCopyFieldValues(SoFieldContainer, Boolean)

Copies the contents of fc's fields into this object's fields.

(Inherited from SoFieldContainer.)
Public methodDispose
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.)
Public methodEnableNotify

Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false).

(Inherited from SoFieldContainer.)
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Public methodFieldsAreEqual

Returns true if this object's fields are exactly equal to fc's fields.

(Inherited from SoFieldContainer.)
Public methodGet

Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string.

(Inherited from SoFieldContainer.)
Public methodGetAllFields

Returns a list of fields, including the eventIn's and eventOut's.

(Inherited from SoFieldContainer.)
Public methodGetBorderFlag
Returns border flag if stored in file.
(Inherited from SoVolumeReader.)
Public methodGetConfiguredWriter
Returns a writer that correspond to this reader (same format, same parameters, etc...).
(Inherited from SoVolumeReader.)
Public methodGetCrosslineRange

Gets the crossline range.

Public methodGetDataChar (Overrides SoVolumeReaderGetDataChar(SbBox3f, SoDataSetDataTypes, SbVec3i32).)
Public methodGetDirectCoordSys
Return whether the coordinate system used is direct or not.
(Inherited from SoVolumeReader.)
Public methodGetDirectCoordSysAutoDetection
Return automatic detection value.
(Inherited from SoVolumeReader.)
Public methodGetEventIn

Returns a the eventIn with the given name.

(Inherited from SoFieldContainer.)
Public methodGetEventOut

Returns the eventOut with the given name.

(Inherited from SoFieldContainer.)
Public methodGetField

Returns a the field of this object whose name is fieldName.

(Inherited from SoFieldContainer.)
Public methodGetFieldName

Returns the name of the given field in the fieldName argument.

(Inherited from SoFieldContainer.)
Public methodGetFields

Appends references to all of this object's fields to resultList, and returns the number of fields appended.

(Inherited from SoFieldContainer.)
Public methodGetHashCode
Overrides GetHashCode().
(Inherited from SoNetBase.)
Public methodGetHistogram
Returns histogram if stored in file.
(Inherited from SoVolumeReader.)
Public methodGetInlineRange

Gets the inline range.

Public methodGetMinMax(Double, Double)
Returns min max if stored in file for float data type
(Inherited from SoVolumeReader.)
Public methodGetMinMax(Int32, Int32)
Returns min max if stored in file (obsolete)
(Inherited from SoVolumeReader.)
Public methodGetMinMax(Int64, Int64)
Returns min max if stored in file for integer data type
(Inherited from SoVolumeReader.)
Public methodGetName

Returns the name of an instance.

(Inherited from SoBase.)
Public methodGetNumSignificantBits
This method is optional. It returns the number of significant bits of the volume data.
(Inherited from SoVolumeReader.)
Public methodGetNumTraces

Returns the number of traces.

Public methodGetOriginalFilename
Returns original file name from which the data has been converted to LDM format if stored in file.
(Inherited from SoVolumeReader.)
Public methodGetP1P2P3Coordinates

Gets the P1, P2, P3 and P4 coordinates.

Public methodGetReaderType
Returns type of reader.
(Inherited from SoVolumeReader.)
Public methodGetSegyAxisOrder

Get the storage order for X, Y, and Z axis.

Public methodGetSegyByteOrder

Gets the byte ordering to use when reading the SEGY file.

Public methodGetSegyFileHeader(SoVRSegyFileHeader)
Calls GetSegyFileHeader(fileHeader, false).
Public methodGetSegyFileHeader(SoVRSegyFileHeader, Boolean)

Gets the SEGY file header.

Public methodGetSegyTextHeader

Retreives the textual header (the first 3200-bytes) of the SEGY file.

Public methodGetSegyTraceData(Int32, SbNativeArrayByte)
Public methodGetSegyTraceData(Int32, SbNativeArrayByte, Int32)
Public methodGetSegyTraceData(Int32, SbNativeArrayByte, Int32, Int32)
Public methodGetSegyTraceHeader

Gets the SEGY trace header of the given trace traceNumber .

Public methodGetSegyTraceHeaderBytePosition

Gets the byte positions within the trace header.

Public methodGetStringName (Inherited from SoBase.)
Public methodGetSubSlice
Method required by VolumeViz 3.0. Must copy the rectangular part defined by subSlice of the XY slice sliceNumber to the memory pointed to by data. Slices will not always be read sequentially.
(Inherited from SoVolumeReader.)
Public methodGetTileMinMax
Returns the minimum and maximum data values for the given tile. Used only if data is organized for the LDM module. It allows to profit of optimizations such as SoLDMGlobalResourceParameters.setIgnoreFullyTransparentTiles(). Default implementation return new SbVec2d(System.Double.MaxValue, -System.Double.MaxValue))
(Inherited from SoVolumeReader.)
Public methodGetTileSize
Returns tile size if using data stored in tiles. Return FALSE if data is not stored in tiles.
(Inherited from SoVolumeReader.)
Public methodGetTraceCoord
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetZRange

Gets the Z (time axis range.

Public methodHasDefaultValues

Returns true if all of the object's fields have their default values.

(Inherited from SoFieldContainer.)
Public methodIsNotifyEnabled

Notification is the process of telling interested objects that this object has changed.

(Inherited from SoFieldContainer.)
Public methodIsSegyRegular

Sets the trace header of a specific trace used to read the SEGY file [OPTIONAL].

Public methodIsSynchronizable

Gets the ScaleViz synchronizable state of this object.

(Inherited from SoBase.)
Public methodReadTile(Int32, SbBox3i32)
Given an index, reads a tile if the data is organized in tiles (for LDM).
(Inherited from SoVolumeReader.)
Public methodReadTile(Int32, SbNativeArrayByte, SbBox3i32) Obsolete.
Given an index, reads a tile if the data is organized in tiles (for LDM). In the default LDM architecture, the LDM data is based on an octree topology (see SoVRLdmFileReader). The index passed is 0 for the tile of lowest resolution representing the entire volume (octree root node). The index increments linearly going down through the octree.
(Inherited from SoVolumeReader.)
Public methodSet

Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.

(Inherited from SoFieldContainer.)
Public methodSetCrosslineRange

Sets the crossline range.

Public methodSetDirectCoordSysAutoDetection
Sets whether or not the reader should automatically try to detect if the coordinate system used is direct or not. The function will return FALSE if the feature is not supported by the current reader. Default is false.
(Inherited from SoVolumeReader.)
Public methodSetDirectCoorSys
Specify if the coordinate system used is direct or not. The function will return FALSE if the feature is not supported by the current reader. Default is false.
(Inherited from SoVolumeReader.)
Public methodSetFilename
Specifies the path of the file. Returns 0 for success. Any other return value indicates failure.
(Inherited from SoVolumeReader.)
Public methodSetInlineRange

Sets the inline range.

Public methodSetName (Inherited from SoBase.)
Public methodSetOutputDataType
Sets the output data type. Returns FALSE if the reader does not support this feature.
(Inherited from SoVolumeReader.)
Public methodSetSegyAxisOrder

Sets the storage order for X, Y, and Z axes.

Public methodSetSegyByteOrder

Sets the byte ordering to use when reading the SEGY file.

Public methodSetSegyFileHeader

Specifies the header used to read the SEGY file.

Public methodSetSegyTextHeaderAscii

Tells whether the textual header format is ASCII or not.

Public methodSetSegyTraceHeaderBytePosition

Tells the file reader where the fields are actually located (i.e., the byte positions) within the trace header.

Public methodSetSynchronizable

Sets this to be a ScaleViz synchronizable object.

(Inherited from SoBase.)
Public methodSetToDefaults

Sets all fields in this object to their default values.

(Inherited from SoFieldContainer.)
Public methodSetUserData
Stores the userData (for example the filename string) in the m_data protected variable.
(Inherited from SoVolumeReader.)
Public methodStatic memberSetVolumeSizeVoxels

If true, the volume extent (bounds in world coordinates) is set to 0 to dimension-1 on each axis.

Public methodSetZRange

Sets the Z (time axis) range.

Public methodToString
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.)
Public methodTouch

Marks an instance as modified, simulating a change to it.

(Inherited from SoBase.)
Top
Properties
  NameDescription
Public propertyDataConverted
The returned boolean indicates if the data is already organized for the LDM module. If TRUE, VolumeViz will use the readTile method.
(Inherited from SoVolumeReader.)
Public propertyIsDisposable
ISafeDisposable interface implementation.
(Inherited from SoDisposable.)
Public propertyIsThreadSafe
Let the system know if the reader is thread safe or not. this function is called by VolumeViz when using the multiIO mode.
(Inherited from SoVolumeReader.)
Public propertyScanningProgressCallback

Sets a progress callback when the SEGY file is scanned.

Public propertyUserData
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.)
Top
Remarks

Reader for SEGY files (SEG Y revision 1). The following data types are supported: unsigned or signed byte, short, int32, and float.

SEGY is a widely used format for storing seismic trace data, defined by the Society of Exploration Geophysicists publication "Digital Tape Standards" (http://www.seg.org). The VolumeViz reader supports all sizes of integer and float data, and can correctly determine the number of samples per trace in most cases.

The data will be mapped to the Open Inventor axes as follows:

  • The trace length is mapped onto the Inventor X axis (time).

  • The number of trace sensors per line is mapped onto the Inventor Y axis (inlines).

  • Z is the number of lines (crosslines).

Although in most cases the SEGY reader can automatically detect if the number of traces per line in a SEGY file is not uniform, in some cases it cannot. However, be aware that the initialization for file reading will take longer when this environment variable is set. Missing data is assigned the value zero.

Although in most cases the SEGY reader can automatically detect if the length of traces in a SEGY data file is not uniform, in some cases it cannot. However, be aware that the initialization for file reading will take significantly longer when this environment variable is set. Missing data is assigned the value zero.

In most cases the SEGY reader can automatically detect if the values in the file need to be "byte swapped", for example if the data was written on a "big-endian" machine (e.g., SPARC) and is being read on a "little-endian" machine (e.g., Intel). If necessary you can force byte swapping on or off using the environment variable IVVR_SEGY_SWAPBYTES.

A value of 1 in the format field of the SEGY header normally means that the data values were written in IBM floating point format. But in some cases the values were actually written in IEEE floating point format (which should be indicated by format = 5). Normally the SEGY reader is able to detect this, but if necessary you can specify that float values are in IEEE format by setting environment variable IVVR_SEGY_FLOATISIEEE.

If the SEGY reader fails to read the file correctly, you can set the following environment variables:

  • IVVR_SEGY_DEBUG=1 This outputs information of what the reader is actually doing.

  • IVVR_SEGY_DUMP=filename This requests that some information of the file and trace headers be written to the specified file while processing the SEGY data file. All these information can be sent to the VSG support for assitance.

Limitations: In some circontances few first traces might be skipped, typically when the first line contains only one trace (this trace might be skipped). In such a case a message warns the application of how many traces are actually skipped (throught OIV.Inventor.Errors.SoDebugError).

See OIV.Inventor.SoPreferences for information on using environment variables.

In some cases information such as line numbers and crossline numbers will be stored in non-standard locations in the header. Applications can specify the byte position of values within the header using the OIV.VolumeViz.Readers.SoVRSegyFileReader.SetSegyTraceHeaderBytePosition(OIV.VolumeViz.Readers.SoVRSegyTraceHeaderBytePosition) method. Example :

SoVRSegyFileReader reader = new SoVRSegyFileReader();
SoVRSegyTraceHeaderBytePosition bytePos = new SoVRSegyTraceHeaderBytePosition();
bytePos.SetBytePosition(SoVRSegyTraceHeaderBytePosition.TraceAttributes.SEGY_INLINE   , 189);
bytePos.SetBytePosition(SoVRSegyTraceHeaderBytePosition.TraceAttributes.SEGY_CROSSLINE, 193);
reader.SetSegyTraceHeaderBytePosition(bytePos);
reader.SetFilename(theFilePath);

Information about the range of inline / crossline numbers and the range of time values can be queried using the OIV.VolumeViz.Readers.SoVRSegyFileReader.GetInlineRange(System.Int32@, System.Int32@, System.Int32@), OIV.VolumeViz.Readers.SoVRSegyFileReader.GetCrosslineRange(System.Int32@, System.Int32@, System.Int32@) and OIV.VolumeViz.Readers.SoVRSegyFileReader.GetZRange(System.Int32@, System.Int32@, System.Int32@) methods.

Applications can use this class to open a SEGY file and extract information from the file directly (in other words without necessarily creating a volume data node). To get the SEGY text file header call OIV.VolumeViz.Readers.SoVRSegyFileReader.GetSegyTextHeader(). To get the SEGY binary file header call OIV.VolumeViz.Readers.SoVRSegyFileReader.GetSegyFileHeader(OIV.VolumeViz.Readers.SoVRSegyFileHeader@, System.Boolean). To get the header of a specific trace call OIV.VolumeViz.Readers.SoVRSegyFileReader.GetSegyTraceHeader(System.Int32, OIV.VolumeViz.Readers.SoVRSegyTraceIdHeader@). To get the values in a specific trace call ().

See Also