Defines KnownMetadata.h

KNOWNMETADATA_SURVEYCOORDINATESYSTEM

SurveyCoordinateSystem:

This category of VDS metadata contains two families that provide sufficient information to render a VDS in a volume box. In the absence of any of these families, a default setting is considered. In the following, these VDS metadata families are explained.

  • The Inline/Crossline system:

    In this system, the step vector for dimension 0 is always negative Z direction. This will simplify the metadata, and the information we need is a DoubleVector2 to define the origin (KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_ORIGIN), and two more DoubleVector2 to define the inline and crossline spacing (KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_INLINESPACING and KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_CROSSLINESPACING respectively). These are applied to transform the VDS dimensions with name Inline/Crossline to XYZ coordinates. Other dimension names that are recognized are Time/Depth/Sample which are all mapped to negative Z (i.e. positive Depth will result in the same negative Z).

  • The 3D IJK system:

    The Inline/Crossline system has flexibility for only two dimensions. In order to have more freedom, the 3DIJK metadata is defined. A DoubleVector3 is used to represent the origin (KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_ORIGIN3D) and three step vectors (KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_I_STEPVECTOR, KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_J_STEPVECTOR and KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_K_STEPVECTOR) corresponding to the dimensions named “I”, “J” and “K” respectively.

  • The default system:

    Other dimension names that are recognized and transformed to XYZ coordinates are X, Y and Z, which will be mapped directly to the corresponding XYZ coordinate.

    Any dimensions which have names that are not recognized or are missing the Spacing metadata will be given a unit vector perpendicular to the recognized dimensions. This means you will get a sensible positioning of a Time/Offset/Crossline VolumeBox that is connected to a 4D Time/Offset/Crossline/Inline VDS. The scale of the derived unit vector for the Offset dimension will be something that gives the closest possible approximation to a cubic voxel.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_ORIGIN

  • Data type : DoubleVector2

  • Name : “Origin”

  • Description : The XY position of the origin of the annotation (Inline/Crossline/Time) coordinate system.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_INLINESPACING

  • Data type : DoubleVector2

  • Name : “InlineSpacing”

  • Description : The XY spacing between units in the Inline annotation dimension.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_CROSSLINESPACING

  • Data type : DoubleVector2

  • Name : “CrosslineSpacing”

  • Description : The XY spacing between units in the Crossline annotation dimension.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT0

  • Data type : DoubleVector2

  • Name : “GridPoint0”

  • Description : An optional reference point in the grid, the annotation coordinates for this point are GridPoint0Inline and GridPoint0Crossline

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT0INLINE

  • Data type : Float

  • Name : “GridPoint0Inline”

  • Description : The inline annotation coordinate for the point defined by GridPoint0

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT0CROSSLINE

  • Data type : Float

  • Name : “GridPoint0Crossline”

  • Description : The inline annotation coordinate for the point defined by GridPoint0

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT1

  • Data type : DoubleVector2

  • Name : “GridPoint1”

  • Description : An optional reference point in the grid, the annotation coordinates for this point are GridPoint1Inline and GridPoint1Crossline

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT1INLINE

  • Data type : Float

  • Name : “GridPoint1Inline”

  • Description : The inline annotation coordinate for the point defined by GridPoint1

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT1CROSSLINE

  • Data type : Float

  • Name : “GridPoint1Crossline”

  • Description : The inline annotation coordinate for the point defined by GridPoint1

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT2

  • Data type : DoubleVector2

  • Name : “GridPoint2”

  • Description : An optional reference point in the grid, the annotation coordinates for this point are GridPoint2Inline and GridPoint2Crossline

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT2INLINE

  • Data type : Float

  • Name : “GridPoint2Inline”

  • Description : The inline annotation coordinate for the point defined by GridPoint2

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT2CROSSLINE

  • Data type : Float

  • Name : “GridPoint2Crossline”

  • Description : The inline annotation coordinate for the point defined by GridPoint2

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT3

  • Data type : DoubleVector2

  • Name : “GridPoint3”

  • Description : An optional reference point in the grid, the annotation coordinates for this point are GridPoint3Inline and GridPoint3Crossline

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT3INLINE

  • Data type : Float

  • Name : “GridPoint3Inline”

  • Description : The inline annotation coordinate for the point defined by GridPoint3

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_GRIDPOINT3CROSSLINE

  • Data type : Float

  • Name : “GridPoint3Crossline”

  • Description : The inline annotation coordinate for the point defined by GridPoint3

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_ORIGIN3D

  • Data type : DoubleVector3

  • Name : “Origin3D”

  • Description : The XYZ position of the origin of the annotation (I/J/K) coordinate system.

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_I_STEPVECTOR

  • Data type : DoubleVector3

  • Name : “IStepVector”

  • Description : The step vector corresponding to dimension named ‘I’

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_J_STEPVECTOR

  • Data type : DoubleVector3

  • Name : “JStepVector”

  • Description : The step vector corresponding to dimension named ‘J’

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_K_STEPVECTOR

  • Data type : DoubleVector3

  • Name : “KStepVector”

  • Description : The step vector corresponding to dimension named ‘K’

KNOWNMETADATA_SURVEYCOORDINATE_UNIT

  • Data type : String

  • Name : “Unit”

  • Description : The unit of the coordinate system

KNOWNMETADATA_SURVEYCOORDINATE_CRS_WKT

  • Data type : String

  • Name : “CRSWkt”

  • Description : The well-known text representation of the coordinate reference system

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_AXISNAME_INLINE

String representing the name of the axis corresponding to the inline spacing.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_AXISNAME_CROSSLINE

String representing the name of the axis corresponding to the crossline spacing.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_AXISNAME_TIME

String representing the name of the axis corresponding to the negative z direction.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_AXISNAME_DEPTH

String representing the name of the axis corresponding to the negative z direction.

KNOWNMETADATA_SURVEYCOORDINATE_INLINECROSSLINE_AXISNAME_SAMPLE

String representing the name of the axis corresponding to the negative z direction.

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_AXISNAME_I

String representing the name of the axis corresponding to the direction represented by step vector in I direction (KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_I_STEPVECTOR)

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_AXISNAME_J

String representing the name of the axis corresponding to the direction represented by step vector in J direction (KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_J_STEPVECTOR)

KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_AXISNAME_K

String representing the name of the axis corresponding to the direction represented by step vector in K direction (KNOWNMETADATA_SURVEYCOORDINATE_3DIJK_K_STEPVECTOR)

KNOWNMETADATA_SURVEYCOORDINATE_XYZ_AXISNAME_X

String representing the name of the axis mapped directly to the X coordinate

KNOWNMETADATA_SURVEYCOORDINATE_XYZ_AXISNAME_Y

String representing the name of the axis mapped directly to the Y coordinate

KNOWNMETADATA_SURVEYCOORDINATE_XYZ_AXISNAME_Z

String representing the name of the axis mapped directly to the Z coordinate

KNOWNMETADATA_UNIT_METER

String representing the SI meter unit

KNOWNMETADATA_UNIT_MILLISECOND

String representing the SI milliseconds unit

KNOWNMETADATA_UNIT_FOOT

String representing the foot unit

KNOWNMETADATA_UNIT_US_SURVEY_FOOT

String representing the US survey foot unit

KNOWNMETADATA_UNIT_SECOND

String representing the SI second unit

KNOWNMETADATA_UNIT_METERS_PER_SECOND

String representing the meters per second unit

KNOWNMETADATA_UNIT_FEET_PER_SECOND

String representing the feet per second unit

KNOWNMETADATA_UNIT_US_SURVEY_FEET_PER_SECOND

String representing the US survey feet per second unit

KNOWNMETADATA_UNIT_UNITLESS

String representing the unitless unit

KNOWNMETADATA_TRACECOORDINATES

The SeismicLine GetVDSTraceCoordinates() method will populate the PositionProperty, VerticalOffsetProperty, EnergySourcePointNumberProperty and EnsembleNumberProperty from VDSMetadataBLOBs found in the “TraceCoordinates” category. The PositionProperty and VerticalOffsetProperty define the position of the SeismicLine, while the EnergySourcePointNumberProperty and EnsembleNumberProperty can be displayed by the SeismicLineViewContext

The known metadata in the category “TraceCoordinates” are:

If the SeismicLine is connected to a VDS with metadata in the “SurveyCoordinateSystem” category, it will use that metadata to compute the trace positions for the line, so it’s easy to set up a SeismicLine to display a particular Inline/Crossline of a 3D dataset.

The SeismicLine GetVDSTraceCoordinates() method will populate the PositionProperty, VerticalOffsetProperty, EnergySourcePointNumberProperty and EnsembleNumberProperty from VDSMetadataBLOBs found in the “TraceCoordinates” category. The PositionProperty and VerticalOffsetProperty define the position of the SeismicLine, while the EnergySourcePointNumberProperty and EnsembleNumberProperty can be displayed by the SeismicLineViewContext

KNOWNMETADATA_TRACEPOSITIONS

  • Data type : BLOB

  • Name : “TracePositions”

  • Description : An array of DoubleVector2 defining the position for each trace, where (0, 0) is treated as an undefined position.

KNOWNMETADATA_TRACEVERTICALOFFSETS

  • Data type : BLOB

  • Name : “TraceVerticalOffsets”

  • Description : An array of doubles defining the offset for each trace from the vertical start position in the Time/Depth/Sample dimension of the VDS

KNOWNMETADATA_ENERGYSOURCEPOINTNUMBERS

  • Data type : BLOB

  • Name : “EnergySourcePointNumbers”

  • Description : An array of scalar int32 values defining the energy source point number for each trace.

KNOWNMETADATA_ENSEMBLENUMBERS

  • Data type : BLOB

  • Name : “EnsembleNumbers”

  • Description : An array of scalar int32 values defining the ensemble number for each trace.

KNOWNMETADATA_CATEGORY_WRITTENREGION

This metadata can be specified to indicate which area is written in a sparsely populated VDS. The guarantee is that values outside the written area will be NoValue if UseNoValue is true, and ValueRange.Min if UseNoValue is false.

KNOWNMETADATA_WRITTENREGION

  • Data type : BLOB

  • Name : “WrittenRegion”

  • Description : An array of scalar int32 values defining the 6D min and max (NDBox) of the written region

KNOWNMETADATA_CATEGORY_STATISTICS

This metadata category has statistics generated from the values written to the VDS.

KNOWNMETADATA_ACTUALVALUERANGE

  • Data type : FloatVector2

  • Name : “ActualValueRange”

  • Description : The actual value range of the data written to the primary channel (excluding NoValues)

KNOWNMETADATA_HISTOGRAM

  • Data type : BLOB

  • Name : “Histogram”

  • Description : An array of histogram counts (int64) for each bucket of the histogram using the channel’s value range of the data written to the primary channel (excluding NoValues)

KNOWNMETADATA_CATEGORY_IMPORTINFORMATION

ImportInformation:

This category of VDS metadata contains information about the initial import to VDS. That is, information about the original file (file name, last modification time etc.) and when/how it was imported. The intended use is e.g. to give a default file name for an export operation or to inform the user about whether the VDS was imported from some particular file.

KNOWNMETADATA_IMPORTINFORMATION_DISPLAYNAME

  • Data type : String

  • Name : “DisplayName”

  • Description : An informative name that can be displayed to a user but is not necessarily a valid file name.

KNOWNMETADATA_IMPORTINFORMATION_INPUTFILENAME

  • Data type : String

  • Name : “InputFileName”

  • Description : The original input file name. In cases where the input is not a simple file this should still be a valid file name that can be used as the default for a subsequent export operation.

KNOWNMETADATA_IMPORTINFORMATION_INPUTFILESIZE

  • Data type : Double

  • Name : “InputFileSize”

  • Description : The total size (in bytes) of the input file(s), which is an integer stored as a double because there is no 64-bit integer metadata type.

KNOWNMETADATA_IMPORTINFORMATION_INPUTTIMESTAMP

  • Data type : String

  • Name : “InputTimeStamp”

  • Description : The last modified time of the input in ISO8601 format.

KNOWNMETADATA_IMPORTINFORMATION_IMPORTTIMESTAMP

  • Data type : String

  • Name : “ImportTimeStamp”

  • Description : The time in ISO8601 format when the data was imported to VDS.

KNOWNMETADATA_CATEGORY_SEGY

This metadata is intended to capture information necessary required to re-create the original SEG-Y file.

KNOWNMETADATA_SEGY_TEXTHEADER

  • Data type : BLOB

  • Name : “TextHeader”

  • Description : The original text header of the SEG-Y file

KNOWNMETADATA_SEGY_BINARYHEADER

  • Data type : BLOB

  • Name : “BinaryHeader”

  • Description : The original binary header of the SEG-Y file

KNOWNMETADATA_SEGY_ENDIANNESS

  • Data type : Int

  • Name : “Endianness”

  • Description : The endianness of the SEG-Y file (0=BigEndian)(1=LittleEndian)

KNOWNMETADATA_SEGY_DATAENDIANNESS

  • Data type : Int

  • Name : “DataEndianness”

  • Description : The endianness of the data samples in the SEG-Y file if different from the header endianness. This is a non-standard feature, but some SEG-Y files use it. (0=BigEndian)(1=LittleEndian)

KNOWNMETADATA_SEGY_DATASAMPLEFORMATCODE

  • Data type : Int

  • Name : “DataSampleFormatCode”

  • Description : The data sample format code of the data samples imported from the SEG-Y file. (0=Unknown)(1=IBMFloat)(2=Int32)(3=Int16)(4=FixedPoint)(5=IEEEFloat)(6=IEEEDouble)(7=Int24)(8=Int8)(9=Int64)(10=UInt32)(11=UInt16)(12=UInt64)(15=UInt24)(16=UInt8)

KNOWNMETADATA_SEGY_PRIMARYKEY

  • Data type : String

  • Name : “PrimaryKey”

  • Description : The primary key (i.e. sort order) of the original SEG-Y file. This is expected to be the same as the name of one of the dimensions of the VDS. VDSs are expected to transpose crossline-oriented seismic to use the standard (Sample, Crossline, Inline) dimensions, so in order to export the file in the original order we need to know which dimension to loop over.