将指定网格点的堆栈数据映射到对应的地层表面上。
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
并将其映射到对应的地层表面上。 最终返回各网格点到地层表面的距离数据。