将指定网格点的堆栈数据映射到对应的地层表面上。
map_stack_to_surfaces(data: gempy.core.data_module.StackData,
self: gempy.core.model.ImplicitCoKriging,
points: Optional[np.ndarray]=None,
return_block: bool=False,
block_resolution: float=None,
return_topology: bool=False,
n_points_out: int=20,
**kwargs) -> Union[Tuple[np.ndarray, np.ndarray],
Tuple[np.ndarray, np.ndarray,
gempy.core.solution_module.Topology]]:
data (gempy.core.data_module.StackData): 堆栈数据对象。self (gempy.core.model.ImplicitCoKriging): 隐式克里金模型对象。points (Optional[np.ndarray]): 需要映射的网格点坐标,形状应为 (n_points, 3)。若为 None,则使用网格对象上的所有网格点计算地层表面。return_block (bool): 是否返回块对象。block_resolution (float): 块对象的分辨率。return_topology (bool): 是否返回拓扑信息。拓扑信息包括每个网格点在模型中的三个面的顶点索引,以及每个网格点在模型中的所有层的顶点索引。返回的 Topology 类型对象可用于后续的去重和可视化操作。
n_points_out (int): 映射操作的并行度。默认值为 20,即使用 20 个线程进行计算。**kwargs: 其他参数,暂未使用。返回一个元组:
如果 return_block 为 False,返回一个二维数组,形状为 (n_points, n_surfaces),表示指定网格点对每个地层表面的垂直距离。
如果 return_block 为 True,并且 block_resolution 不为 None,则返回两个数组:
(n_x, n_y, n_z) 的三维数组,代表指定分辨率下的块,其中 n_x、n_y、n_z 分别代表块在 x、y、z 轴上的数量。(n_points, n_surfaces) 的二维数组,表示指定网格点对每个地层表面的垂直距离。如果 return_block 为 True,但 block_resolution 为 None,则返回两个数组:
(n_x, n_y, n_z) 的三维数组,代表使用默认分辨率的块,其中 n_x、n_y、n_z 分别代表块在 x、y、z 轴上的数量。(n_points, n_surfaces) 的二维数组,表示指定网格点对每个地层表面的垂直距离。如果 return_topology 为 True,则返回的元组中会多出一个 Topology 类型的拓扑信息对象。
import gempy as gp
import numpy as np
# 读取数据文件并定义模型
geo_model = gp.create_model('tutorial_stack')
gp.init_data(geo_model, [0, 2000., 0, 1200., 0, 1200.], [50, 30, 30],
path_i="data/input_data/foliations.csv",
path_o="data/input_data/interfaces.csv")
# 创建隐式克里金模型对象并计算
interp_data = gp.set_interpolator(geo_model, output=['geology'], compile_theano=True, theano_optimizer='fast_run')
interp_data.interpolator.tg.stat
# 创建堆栈数据并映射到地层表面上
stack_data = gp.data.StackData(geo_model)
geo_model.surfaces.colors.change_colors(['red', 'green', 'blue'])
gp.map_stack_to_surfaces(stack_data=stack_data, self=interp_data, return_block=False)
上述示例中,首先读取数据文件并定义模型,然后创建隐式克里金模型对象 interp_data。接下来创建堆栈数据对象 stack_data 并将其映射到对应的地层表面上。 最终返回各网格点到地层表面的距离数据。