该函数用于更新Gempy项目的网格信息。网格信息可以包含网格的宽度、高度、深度,以及每个单元格的属性值,例如地质特征的类型、空间坐标等。该函数会在当前网格信息的基础上进行更新,因此可以用于增量更新网格信息,而不是进行全量替换。
该函数包含以下参数:
该函数没有返回值。
from gempy.core.model import Project
import numpy as np
import pandas as pd
# 创建一个新项目,并添加一些数据
proj = Project()
proj.add_surface_points(X=np.array([0,0,0]), Y=np.array([0,1,2]), Z=np.array([0,0,0]), surface='surface1')
proj.add_orientations(X=np.array([0,0,0]), Y=np.array([0,1,2]), Z=np.array([0,0,0]), pole_vector= np.array([0,0,1]), **{'surface': 'surface1', 'smooth': 0.5})
proj.add_surfaces(['surface1', 'basement'], series=0)
# 更新网格信息
nx, ny, nz = 10, 11, 12
grid = np.ones((nx*ny*nz, 4)) # 第一列是x轴,第二列是y轴,第三列是z轴,第四列是属性值
grid[:, 0] = np.tile(np.linspace(0, 1, num=nx), ny*nz)
grid[:, 1] = np.tile(np.repeat(np.linspace(0, 1, num=ny), nx), nz)
grid[:, 2] = np.repeat(np.linspace(0, 1, num=nz), nx*ny)
grid[:, 3] = np.random.randint(1, 4, size=grid.shape[0])
proj.set_regular_grid(nx=nx, ny=ny, nz=nz)
# 更新岩石类型属性的值
property_name = 'rock_type'
rock_type = pd.Series(np.random.randint(1, 4, size=grid.shape[0]), name=property_name)
proj.add_additional_data(rock_type)
proj.update_from_grid(grid=grid, property_name=property_name)
在上面的例子中,我们首先创建了一个包含3个点和1个面的项目。接着,我们创建了一个新的网格信息,并将网格信息更新到该项目中。最后,我们更新了网格中名为“岩石类型”的属性的值。