#13908 Python: Add API to read well log information

Expose well logs attached to a well path through the Python API. A new
`well_path.well_logs()` returns the list of well logs, and each
`WellLog` gains `channel_names()` and `well_log_data()` for reading
channel names, measured depth, optional TVD MSL/RKB, and channel
values.

The read methods are registered on the abstract `RimWellLog` base
class and use the common `RigWellLogData` interface so they work for
imported, LAS and OSDU well logs alike.
This commit is contained in:
Kristian Bendiksen committed 2026-04-23 19:50:05 +02:00
1 parent f91f77d7db
commit 2d88be506d
13 files changed
+531 -9

No files matched your search

@@ -26,6 +26,9 @@
#include "RimWellPathCollection.h"
#include "RimWellPlotTools.h"
#include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h"
#include <QString>
CAF_PDM_SOURCE_INIT( RimOsduWellLog, "OsduWellLog" );
@@ -35,9 +38,9 @@ CAF_PDM_SOURCE_INIT( RimOsduWellLog, "OsduWellLog" );
//--------------------------------------------------------------------------------------------------
RimOsduWellLog::RimOsduWellLog()
{
CAF_PDM_InitObject( "OSDU Well Log", ":/LasFile16x16.png" );
CAF_PDM_InitScriptableObject( "OSDU Well Log", ":/LasFile16x16.png" );
CAF_PDM_InitFieldNoDefault( &m_name, "Name", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_name, "Name", "" );
m_name.uiCapability()->setUiReadOnly( true );
m_date.uiCapability()->setUiReadOnly( true );
@@ -27,6 +27,8 @@
#include "RiaFieldHandleTools.h"
#include "RiaQDateTimeTools.h"
#include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h"
#include "cafPdmUiDateEditor.h"
#include <QString>
@@ -43,7 +45,7 @@ const QDateTime RimWellLog::DEFAULT_DATE_TIME = RiaQDateTimeTools::createUtcDate
//--------------------------------------------------------------------------------------------------
RimWellLog::RimWellLog()
{
CAF_PDM_InitObject( "Well File Info", ":/LasFile16x16.png" );
CAF_PDM_InitScriptableObject( "Well File Info", ":/LasFile16x16.png" );
CAF_PDM_InitFieldNoDefault( &m_date, "Date", "Date" );
@@ -18,6 +18,9 @@
#include "RimWellLogFile.h"
#include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h"
#include <QString>
CAF_PDM_ABSTRACT_SOURCE_INIT( RimWellLogFile, "WellLogFileInterface" );
@@ -27,9 +30,9 @@ CAF_PDM_ABSTRACT_SOURCE_INIT( RimWellLogFile, "WellLogFileInterface" );
//--------------------------------------------------------------------------------------------------
RimWellLogFile::RimWellLogFile()
{
CAF_PDM_InitObject( "Well File Info", ":/LasFile16x16.png" );
CAF_PDM_InitScriptableObject( "Well File Info", ":/LasFile16x16.png" );
CAF_PDM_InitFieldNoDefault( &m_fileName, "FileName", "Filename" );
CAF_PDM_InitScriptableFieldNoDefault( &m_fileName, "FileName", "Filename" );
m_fileName.uiCapability()->setUiReadOnly( true );
}
@@ -36,6 +36,9 @@
#include "Riu3DMainWindowTools.h"
#include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h"
#include <QFileInfo>
#include <QString>
#include <QStringList>
@@ -57,13 +60,13 @@ void caf::AppEnum<RimWellLogLasFile::WellFlowCondition>::setUp()
//--------------------------------------------------------------------------------------------------
RimWellLogLasFile::RimWellLogLasFile()
{
CAF_PDM_InitObject( "Well LAS File Info", ":/LasFile16x16.png" );
CAF_PDM_InitScriptableObjectWithNameAndComment( "Well LAS File Info", ":/LasFile16x16.png", "", "", "WellLogLasFile", "" );
CAF_PDM_InitFieldNoDefault( &m_wellName, "WellName", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_wellName, "WellName", "" );
m_wellName.uiCapability()->setUiReadOnly( true );
RiaFieldHandleTools::disableWriteAndSetFieldHidden( &m_wellName );
CAF_PDM_InitFieldNoDefault( &m_name, "Name", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_name, "Name", "" );
m_name.uiCapability()->setUiReadOnly( true );
RiaFieldHandleTools::disableWriteAndSetFieldHidden( &m_name );