SoVRSegyFileReader Class |
SEGY file format reader.
Namespace: OIV.VolumeViz.Readers
The SoVRSegyFileReader type exposes the following members.
Name | Description | |
---|---|---|
SoVRSegyFileReader | Constructor. |
Name | Description | |
---|---|---|
CloseAllHandles |
Close all file handles currently opened by the reader.
(Inherited from SoVolumeReader.) | |
CopyFieldValues(SoFieldContainer) | Calls CopyFieldValues(fc, false). (Inherited from SoFieldContainer.) | |
CopyFieldValues(SoFieldContainer, Boolean) | Copies the contents of fc's fields into this object's fields. | |
Dispose |
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.) | |
EnableNotify | Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false). | |
Equals | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
FieldsAreEqual | Returns true if this object's fields are exactly equal to fc's fields. | |
Get | Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string. | |
GetAllFields | Returns a list of fields, including the eventIn's and eventOut's. | |
GetBorderFlag |
Returns border flag if stored in file.
(Inherited from SoVolumeReader.) | |
GetConfiguredWriter |
Returns a writer that correspond to this reader (same format, same parameters, etc...).
(Inherited from SoVolumeReader.) | |
GetCrosslineRange | Gets the crossline range. | |
GetDataChar | (Overrides SoVolumeReaderGetDataChar(SbBox3f, SoDataSetDataTypes, SbVec3i32).) | |
GetDirectCoordSys |
Return whether the coordinate system used is direct or not.
(Inherited from SoVolumeReader.) | |
GetDirectCoordSysAutoDetection |
Return automatic detection value.
(Inherited from SoVolumeReader.) | |
GetEventIn | Returns a the eventIn with the given name. | |
GetEventOut | Returns the eventOut with the given name. | |
GetField | Returns a the field of this object whose name is fieldName. | |
GetFieldName | Returns the name of the given field in the fieldName argument. | |
GetFields | Appends references to all of this object's fields to resultList, and returns the number of fields appended. | |
GetHashCode |
Overrides GetHashCode().
(Inherited from SoNetBase.) | |
GetHistogram |
Returns histogram if stored in file.
(Inherited from SoVolumeReader.) | |
GetInlineRange | Gets the inline range. | |
GetMinMax(Double, Double) |
Returns min max if stored in file for float data type
(Inherited from SoVolumeReader.) | |
GetMinMax(Int32, Int32) |
Returns min max if stored in file (obsolete)
(Inherited from SoVolumeReader.) | |
GetMinMax(Int64, Int64) |
Returns min max if stored in file for integer data type
(Inherited from SoVolumeReader.) | |
GetName | Returns the name of an instance. | |
GetNumSignificantBits |
This method is optional. It returns the number of significant bits of the volume data.
(Inherited from SoVolumeReader.) | |
GetNumTraces | Returns the number of traces. | |
GetOriginalFilename |
Returns original file name from which the data has been
converted to LDM format if stored in file.
(Inherited from SoVolumeReader.) | |
GetP1P2P3Coordinates | Gets the P1, P2, P3 and P4 coordinates. | |
GetReaderType |
Returns type of reader.
(Inherited from SoVolumeReader.) | |
GetSegyAxisOrder | Get the storage order for X, Y, and Z axis. | |
GetSegyByteOrder | Gets the byte ordering to use when reading the SEGY file. | |
GetSegyFileHeader(SoVRSegyFileHeader) | Calls GetSegyFileHeader(fileHeader, false). | |
GetSegyFileHeader(SoVRSegyFileHeader, Boolean) | Gets the SEGY file header. | |
GetSegyTextHeader | Retreives the textual header (the first 3200-bytes) of the SEGY file. | |
GetSegyTraceData(Int32, SbNativeArrayByte) | ||
GetSegyTraceData(Int32, SbNativeArrayByte, Int32) | ||
GetSegyTraceData(Int32, SbNativeArrayByte, Int32, Int32) | ||
GetSegyTraceHeader | Gets the SEGY trace header of the given trace traceNumber . | |
GetSegyTraceHeaderBytePosition | Gets the byte positions within the trace header. | |
GetStringName | (Inherited from SoBase.) | |
GetSubSlice |
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.) | |
GetTileMinMax |
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.) | |
GetTileSize |
Returns tile size if using data stored in tiles. Return FALSE if data is not stored in tiles.
(Inherited from SoVolumeReader.) | |
GetTraceCoord | ||
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GetZRange | Gets the Z (time axis range. | |
HasDefaultValues | Returns true if all of the object's fields have their default values. | |
IsNotifyEnabled | Notification is the process of telling interested objects that this object has changed. | |
IsSegyRegular | Sets the trace header of a specific trace used to read the SEGY file [OPTIONAL]. | |
IsSynchronizable | Gets the ScaleViz synchronizable state of this object. | |
ReadTile(Int32, SbBox3i32) |
Given an index, reads a tile if the data is organized in tiles (for LDM).
(Inherited from SoVolumeReader.) | |
ReadTile(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.) | |
Set | 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. | |
SetCrosslineRange | Sets the crossline range. | |
SetDirectCoordSysAutoDetection |
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.) | |
SetDirectCoorSys |
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.) | |
SetFilename |
Specifies the path of the file. Returns 0 for success. Any other return
value indicates failure.
(Inherited from SoVolumeReader.) | |
SetInlineRange | Sets the inline range. | |
SetName | (Inherited from SoBase.) | |
SetOutputDataType |
Sets the output data type. Returns FALSE if the reader does not support this feature.
(Inherited from SoVolumeReader.) | |
SetSegyAxisOrder | Sets the storage order for X, Y, and Z axes. | |
SetSegyByteOrder | Sets the byte ordering to use when reading the SEGY file. | |
SetSegyFileHeader | Specifies the header used to read the SEGY file. | |
SetSegyTextHeaderAscii | Tells whether the textual header format is ASCII or not. | |
SetSegyTraceHeaderBytePosition | Tells the file reader where the fields are actually located (i.e., the byte positions) within the trace header. | |
SetSynchronizable | Sets this to be a ScaleViz synchronizable object. | |
SetToDefaults | Sets all fields in this object to their default values. | |
SetUserData |
Stores the userData (for example the filename string) in the
m_data protected variable.
(Inherited from SoVolumeReader.) | |
SetVolumeSizeVoxels | If true, the volume extent (bounds in world coordinates) is set to 0 to dimension-1 on each axis. | |
SetZRange | Sets the Z (time axis) range. | |
ToString |
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.) | |
Touch | Marks an instance as modified, simulating a change to it. |
Name | Description | |
---|---|---|
DataConverted |
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.) | |
IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) | |
IsThreadSafe |
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.) | |
ScanningProgressCallback | Sets a progress callback when the SEGY file is scanned. | |
UserData |
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.) |
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 ().