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 resources that are locked by the reader. | |
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 | Obsolete. (Inherited from SoVolumeReader.) | |
GetConfiguredWriter | (Inherited from SoVolumeReader.) | |
GetCoordinateType | Returns coordinate type used by the data set. | |
GetCrosslineRange | Gets the crossline range. | |
GetDataChar | Gets the characteristics (file header) of the data volume. | |
GetDirectCoordSys | Return whether the coordinate system used is direct or not. | |
GetDirectCoordSysAutoDetection | Return automatic detection value. | |
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. | |
GetFilename | Returns the path of the file. | |
GetHashCode |
Overrides GetHashCode().
(Inherited from SoNetBase.) | |
GetHistogram(IListInt64) | Returns histogram if available. | |
GetHistogram(Queue) | Obsolete.
Returns histogram if stored in file.
(Inherited from SoVolumeReader.) | |
GetInlineRange | Gets the inline range. | |
GetMinMax(Double, Double) | Returns min max for float data type, if available. | |
GetMinMax(Int32, Int32) | Obsolete. (Inherited from SoVolumeReader.) | |
GetMinMax(Int64, Int64) | Returns min and max for integer data type, if available. | |
GetName | Returns the name of an instance. | |
GetNumSignificantBits | This method is optional. | |
GetNumTraces | Returns the number of traces. | |
GetNumVoxels | Utility function provided by OIV.LDM.Readers.SoVolumeReader for subclass readers to call. | |
GetOriginalFilename | Returns original file name from which the data has been converted to LDM format if stored in file. | |
GetP1P2P3Coordinates | Gets the P1, P2, P3 and P4 coordinates. | |
GetReaderType | Returns the reader type, in this case, the enum value OIV.LDM.Readers.SoVolumeReader.ReaderTypes.SEGY. | |
GetRectilinearCoordinates | Returns the coordinates for the specified axis. | |
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. | |
GetSizeToAllocate | Utility function provided by OIV.LDM.Readers.SoVolumeReader for subclass readers to call. | |
GetStringName | (Inherited from SoBase.) | |
GetSubSlice(SbBox2i32, Int32, SoBufferObject) | Same as OIV.LDM.Readers.SoVolumeReader.GetSubSlice(OIV.Inventor.SbBox2i32, System.Int32, OIV.Inventor.Generic.SbNativeArray{{System.Byte}}) but using an OIV.Inventor.Devices.SoBufferObject as the target of the data. | |
GetSubSlice(SbBox2i32, Int32, SbNativeArrayByte) | Must copy the rectangular part defined by subSlice of the XY slice sliceNumber to the memory referenced by data. | |
GetTileMinMax | Returns the minimum and maximum data values for the given tile. | |
GetTileSize | Returns tile dimensions in voxels when using data stored in tiles. | |
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. | |
IsIgnoredFile | Should return true if at least one file has been ignored during reading. | |
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). | |
ReadTile(Int32, SoBufferObject, SbBox3i32) | Obsolete. Same as OIV.LDM.Readers.SoVolumeReader.ReadTile(System.Int32, OIV.Inventor.Generic.SbNativeArray{{System.Byte}}, OIV.Inventor.SbBox3i32) but using an OIV.Inventor.Devices.SoBufferObject (allocated by LDM) as the target of the data. | |
ReadTile(Int32, SbNativeArrayByte, SbBox3i32) | Obsolete. Given an index, reads a tile if the data is organized in tiles (for LDM). | |
ReadXSliceInTile | Read directly from the data source, an orthoslice on the X axis (Zaxis == 0) inside a tile. | |
ReadXTraceInTile | Read directly from the data source, a trace inside a tile. | |
ReadYSliceInTile | Read directly from the data source, an orthoslice on the Y axis (Zaxis == 1) inside a tile. | |
ReadZSliceInTile | Read directly from the data source, an orthoslice on the Z axis (Zaxis == 2) inside a tile. | |
ReloadTileMinMax | (Inherited from SoVolumeReader.) | |
RestoreAllHandles | Restore resources that were closed by OIV.LDM.Readers.SoVolumeReader.CloseAllHandles(). | |
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 (right-handed) or not. | |
SetDirectCoorSys | Specifies if the coordinate system used is direct (right-handed) or not. | |
SetFilename | Specifies the path of the file. | |
SetInlineRange | Sets the inline range. | |
SetInputDataRange | Requests that the input be converted from the specified range to the range depending on the output data type. | |
SetName | (Inherited from SoBase.) | |
SetOutputDataType | Requests that the input be converted (if necessary) to the specified data type. | |
SetRectilinearCoordinates | Sets rectilinear coordinates for the data set. | |
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 | Obsolete.
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 |
true if the data is already organized in tiles for the LDM module.
In other words, all drivers that directly support the GetTile() method should
set DataConverted to true.
If true, VolumeViz will use the ReadTile method and will NOT call GetSubSlice().
(Inherited from SoVolumeReader.) | |
IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) | |
IsRGBA | Returns true if the data set contains RGBA color values. | |
IsThreadSafe | Should return true if the reader is thread safe. | |
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 ().