函数map_series_to_surfaces()
用于将数据序列映射到相关地层面。在Gempy模型中,每个地层面都由多个数据序列表示,这些数据序列可以是地层属性,如岩性、厚度以及渗透率等。使用该函数可以将这些数据序列与地层面相关联。
series
: Pandas DataFrame类型,包含了我们要映射的属性序列。surfaces_points
: Numpy ndarray类型,包含了所有地层面点的坐标信息。orientations
: Pandas DataFrame类型,包含了指向各个地层面的法向量和倾斜角信息。Series2surface
: Numpy ndarray类型,包含了地层面上各种属性序列的值。使用interpolator
对象和kriging
对象获取地层面和属性序列之间的关系,从而进行映射操作。该函数的实现是基于稀疏矩阵计算的,因此处理效率非常高。
import gempy as gp
import numpy as np
import pandas as pd
# 定义gempy参数
geo_model = gp.create_model('Test')
gp.init_data(geo_model)
# 定义序列
series_df = pd.DataFrame(np.random.rand(10, 4), columns=['Facies', 'Porosity', 'Permeability', 'Thickness'])
# 定义地层面点坐标
surfaces_pts_0 = np.random.rand(20, 3)
# 通过数据插值,生成地层面
gp.set_interpolator(geo_model)
gp.set_kriging_parameters(geo_model)
gp.compute_model(geo_model)
# 映射序列到数值
result = gp.map_series_to_surfaces(series_df, surfaces_pts_0, geo_model.orientation)