(#595) Do not perform value filtering for LAS curves

This commit is contained in:
Magne Sjaastad 2015-10-28 15:18:53 +01:00
parent 09a2579c49
commit 4a6e156a68
4 changed files with 50 additions and 14 deletions

View File

@ -247,7 +247,7 @@ void RimWellLogExtractionCurve::updatePlotData()
{
if (!tvDepthValues.size())
{
m_curveData->setValuesAndMD(values, measuredDepthValues);
m_curveData->setValuesAndMD(values, measuredDepthValues, true);
}
else
{

View File

@ -86,7 +86,7 @@ void RimWellLogFileCurve::updatePlotData()
if (values.size() == depthValues.size())
{
m_curveData->setValuesAndMD(values, depthValues);
m_curveData->setValuesAndMD(values, depthValues, false);
}
}

View File

@ -29,6 +29,7 @@
//--------------------------------------------------------------------------------------------------
RigWellLogCurveData::RigWellLogCurveData()
{
m_useValueFiltering = false;
}
//--------------------------------------------------------------------------------------------------
@ -42,7 +43,8 @@ RigWellLogCurveData::~RigWellLogCurveData()
///
//--------------------------------------------------------------------------------------------------
void RigWellLogCurveData::setValuesAndMD(const std::vector<double>& xValues,
const std::vector<double>& measuredDepths)
const std::vector<double>& measuredDepths,
bool useValueFiltering)
{
CVF_ASSERT(xValues.size() == measuredDepths.size());
@ -50,7 +52,13 @@ void RigWellLogCurveData::setValuesAndMD(const std::vector<double>& xValues,
m_measuredDepths = measuredDepths;
m_tvDepths.clear();
calculateIntervalsOfContinousValidValues();
// Disable value filtering for curves coming from LAS files
m_useValueFiltering = useValueFiltering;
if (m_useValueFiltering)
{
calculateIntervalsOfContinousValidValues();
}
}
//--------------------------------------------------------------------------------------------------
@ -66,6 +74,9 @@ void RigWellLogCurveData::setValuesWithTVD(const std::vector<double>& xValues,
m_measuredDepths = measuredDepths;
m_tvDepths = tvDepths;
// Always use value filtering when TVD is present
m_useValueFiltering = true;
calculateIntervalsOfContinousValidValues();
}
@ -91,10 +102,17 @@ const std::vector<double>& RigWellLogCurveData::measuredDepths() const
//--------------------------------------------------------------------------------------------------
std::vector<double> RigWellLogCurveData::xPlotValues() const
{
std::vector<double> filteredValues;
getValuesByIntervals(m_xValues, m_intervalsOfContinousValidValues, &filteredValues);
if (m_useValueFiltering)
{
std::vector<double> filteredValues;
getValuesByIntervals(m_xValues, m_intervalsOfContinousValidValues, &filteredValues);
return filteredValues;
return filteredValues;
}
else
{
return m_xValues;
}
}
//--------------------------------------------------------------------------------------------------
@ -102,17 +120,31 @@ std::vector<double> RigWellLogCurveData::xPlotValues() const
//--------------------------------------------------------------------------------------------------
std::vector<double> RigWellLogCurveData::depthPlotValues() const
{
std::vector<double> filteredValues;
if (m_tvDepths.size())
if (m_useValueFiltering)
{
getValuesByIntervals(m_tvDepths, m_intervalsOfContinousValidValues, &filteredValues);
std::vector<double> filteredValues;
if (m_tvDepths.size())
{
getValuesByIntervals(m_tvDepths, m_intervalsOfContinousValidValues, &filteredValues);
}
else
{
getValuesByIntervals(m_measuredDepths, m_intervalsOfContinousValidValues, &filteredValues);
}
return filteredValues;
}
else
{
getValuesByIntervals(m_measuredDepths, m_intervalsOfContinousValidValues, &filteredValues);
if (m_tvDepths.size())
{
return m_tvDepths;
}
else
{
return m_measuredDepths;
}
}
return filteredValues;
}
//--------------------------------------------------------------------------------------------------
@ -132,6 +164,8 @@ std::vector< std::pair<size_t, size_t> > RigWellLogCurveData::polylineStartStopI
//--------------------------------------------------------------------------------------------------
void RigWellLogCurveData::calculateIntervalsOfContinousValidValues()
{
CVF_ASSERT(m_useValueFiltering);
std::vector< std::pair<size_t, size_t> > intervalsOfValidValues;
calculateIntervalsOfValidValues(m_xValues, &intervalsOfValidValues);

View File

@ -36,7 +36,8 @@ public:
virtual ~RigWellLogCurveData();
void setValuesAndMD(const std::vector<double>& xValues,
const std::vector<double>& measuredDepths);
const std::vector<double>& measuredDepths,
bool useValueFiltering);
void setValuesWithTVD(const std::vector<double>& xValues,
const std::vector<double>& measuredDepths,
const std::vector<double>& tvDepths );
@ -68,6 +69,7 @@ private:
std::vector<double> m_xValues;
std::vector<double> m_measuredDepths;
std::vector<double> m_tvDepths;
bool m_useValueFiltering;
std::vector< std::pair<size_t, size_t> > m_intervalsOfContinousValidValues;