如何加载并处理非LAS格式的.log格式测井数据
测井.log格式文件加载与处理实操方案
测井场景下的.log后缀文件不是统一标准格式,是不同测井系统、不同软件导出的自定义格式,没法直接套用LAS文件的加载逻辑,按下面的流程处理即可,不需要重构你现有的LAS处理链路。
第一步:先判定文件类型
拿到文件不要直接改后缀硬塞LAS加载工具,先用纯文本编辑器打开看前50行内容,快速归为两类:
- 文本类.log:能正常看到文字、数字,头部一般会标注井名、采样间隔、起始深度、曲线名列表,占日常遇到的测井log文件的80%以上
- 二进制类.log:打开后是乱码,只能看到零星厂商标识,是老测井系统输出的专有二进制格式
第二步:分类加载处理
文本类.log处理
这类文件本质就是带头部注释的表格数据,读完转成你现有LAS流程兼容的结构就行:
- 如果你用Python做自动化处理(日常用
lasio/welly那套流程):
数清楚头部注释一共有多少行,直接用pandas读入数据区,再对接原有逻辑即可,示例代码:
import pandas as pd import numpy as np # 分隔符为多空格/制表符用read_csv,固定列宽格式换pd.read_fwf # skiprows传头部注释的行数,比如头部一共17行注释就填17 log_df = pd.read_csv( "target_well.log", sep="\s+", skiprows=17, header=None ) # 按头部标注的曲线顺序给列命名,注意把深度列放在第一列 log_df.columns = ["DEPTH", "GR", "RT", "AC", "DEN", "CNL"] # 替换无效值,老log文件常用-999、-9999做空值标记,统一替换成你流程里用的标准空值即可 log_df.replace(-999, np.nan, inplace=True) # 后续可以直接把DataFrame转成LASFile对象,100%复用你之前写的所有LAS处理、分析代码
- 如果你用商业测井软件处理(Forward、Techlog、Petrel等):
- 导入时选择「通用文本测井数据」选项,不要选LAS格式导入
- 按导入向导提示手动指定深度列、各曲线单位、空值标记,确认列和曲线名一一对应
- 导入完成后直接导出为标准LAS 2.0格式,后续完全走原有LAS处理流程即可
二进制类.log处理
这类文件不要硬写代码解析,优先走转码路径:
- 看头部的厂商、测井系统标识,找对应系统自带的解码导出工具,基本都支持直接导出标准LAS格式
- 找不到原厂工具的情况下,再用十六进制编辑器定位深度、曲线的字节存储偏移,按固定格式解析,这种方式效率低,只适合单文件应急处理
实操避坑提醒
- 数据读入后第一时间校验深度序列:确认采样间隔和头部标注一致、深度连续无跳变,避免因少跳了注释行导致曲线和深度错位
- 提前核对单位:部分老测井系统输出的log文件深度用英制英尺、电阻率用线性刻度,不要直接套用你现有针对公制LAS的单位转换逻辑
- 不要漏做空值替换:log文件没有统一的空值标准,除了-999、-9999,部分文件会用0、9999标记无效值,提前替换避免后续计算出异常值
内容的提问来源于stack exchange,提问作者Taofiq Salami
相关产品推荐
相关产品推荐

