(#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()) if (!tvDepthValues.size())
{ {
m_curveData->setValuesAndMD(values, measuredDepthValues); m_curveData->setValuesAndMD(values, measuredDepthValues, true);
} }
else else
{ {

View File

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

View File

@ -29,6 +29,7 @@
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RigWellLogCurveData::RigWellLogCurveData() RigWellLogCurveData::RigWellLogCurveData()
{ {
m_useValueFiltering = false;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -42,7 +43,8 @@ RigWellLogCurveData::~RigWellLogCurveData()
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RigWellLogCurveData::setValuesAndMD(const std::vector<double>& xValues, 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()); CVF_ASSERT(xValues.size() == measuredDepths.size());
@ -50,7 +52,13 @@ void RigWellLogCurveData::setValuesAndMD(const std::vector<double>& xValues,
m_measuredDepths = measuredDepths; m_measuredDepths = measuredDepths;
m_tvDepths.clear(); 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_measuredDepths = measuredDepths;
m_tvDepths = tvDepths; m_tvDepths = tvDepths;
// Always use value filtering when TVD is present
m_useValueFiltering = true;
calculateIntervalsOfContinousValidValues(); calculateIntervalsOfContinousValidValues();
} }
@ -91,10 +102,17 @@ const std::vector<double>& RigWellLogCurveData::measuredDepths() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<double> RigWellLogCurveData::xPlotValues() const std::vector<double> RigWellLogCurveData::xPlotValues() const
{ {
std::vector<double> filteredValues; if (m_useValueFiltering)
getValuesByIntervals(m_xValues, m_intervalsOfContinousValidValues, &filteredValues); {
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> RigWellLogCurveData::depthPlotValues() const
{ {
std::vector<double> filteredValues; if (m_useValueFiltering)
if (m_tvDepths.size())
{ {
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 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() void RigWellLogCurveData::calculateIntervalsOfContinousValidValues()
{ {
CVF_ASSERT(m_useValueFiltering);
std::vector< std::pair<size_t, size_t> > intervalsOfValidValues; std::vector< std::pair<size_t, size_t> > intervalsOfValidValues;
calculateIntervalsOfValidValues(m_xValues, &intervalsOfValidValues); calculateIntervalsOfValidValues(m_xValues, &intervalsOfValidValues);

View File

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