OpenVDS seismic access (#10145)

Add OpenVDS support for reading seismic data from VDS files
This commit is contained in:
jonjenssen
2023-04-21 16:38:04 +02:00
committed by GitHub
parent 25e78e9792
commit 0e7cf49b17
17 changed files with 840 additions and 77 deletions

View File

@@ -60,7 +60,7 @@ void RimSeismicAlphaMapper::setDataRangeAndAlphas( double minVal, double maxVal,
cvf::ubyte RimSeismicAlphaMapper::alphaValue( double dataValue ) const
{
int index = (int)( m_scaleFactor * ( dataValue - m_minValue ) );
index = std::clamp( index, 0, (int)sizeof( m_alphavalues ) - 1 );
index = std::clamp( index, 0, (int)( m_alphavalues.size() - 1 ) );
return ( cvf::ubyte )( m_alphavalues[index] * 255 );
}

View File

@@ -22,6 +22,10 @@
#include "RifSeismicZGYReader.h"
#ifdef USE_OPENVDS
#include "RifOpenVDSReader.h"
#endif
#include "RimRegularLegendConfig.h"
#include "RimSeismicAlphaMapper.h"
#include "RimStringParameter.h"
@@ -37,6 +41,8 @@
#include "cvfBoundingBox.h"
#include <QFile>
#include <QFileInfo>
#include <QValidator>
#include <algorithm>
@@ -99,19 +105,32 @@ RimSeismicData::~RimSeismicData()
//--------------------------------------------------------------------------------------------------
bool RimSeismicData::openFileIfNotOpen()
{
if ( m_filereader == nullptr )
{
m_filereader = std::make_shared<RifSeismicZGYReader>();
}
if ( m_filereader->isOpen() ) return true;
if ( ( m_filereader != nullptr ) && m_filereader->isOpen() ) return true;
QString filename = m_filename().path();
if ( filename.isEmpty() ) return false;
if ( QFile::exists( filename ) )
{
QFileInfo fi( filename );
if ( fi.suffix().toLower() == "zgy" )
{
m_filereader = std::make_shared<RifSeismicZGYReader>();
}
#ifdef USE_OPENVDS
else if ( fi.suffix().toLower() == "vds" )
{
m_filereader = std::make_shared<RifOpenVDSReader>();
}
#endif
else
{
m_filereader.reset();
logError( "Unknown seismic file type: " + filename );
return false;
}
if ( !m_filereader->open( filename ) )
{
logError( "Unable to open seismic file : " + filename );

View File

@@ -35,7 +35,7 @@
class RimGenericParameter;
class RimSeismicAlphaMapper;
class RimRegularLegendConfig;
class RifSeismicZGYReader;
class RifSeismicReader;
namespace cvf
{
@@ -140,6 +140,6 @@ private:
std::shared_ptr<RimSeismicAlphaMapper> m_alphaValueMapper;
std::shared_ptr<RifSeismicZGYReader> m_filereader;
int m_nErrorsLogged;
std::shared_ptr<RifSeismicReader> m_filereader;
int m_nErrorsLogged;
};