该函数用于更新网格数据。该函数将根据使用的插值模型更新每个格点中的值,例如使用Kriging插值模型。更新后的值将存储在Grid对象的_regular_grid
属性中。
update_grid_values(self, df=None, property_name=None, set_nan=True, **kwargs)
df
:DataFrame类型的数据集。包括坐标和值(属性),默认为None。property_name
:属性的名称(列名称),主要用于选择需要更新的属性列。默认为None,表示更新所有列。set_nan
:如果为True(默认),则将NaN值放置在网格数据中。如果为False,则不放置NaN值,旧值将被保留和使用。该函数返回一个布尔值,表示是否更新了网格数据。如果更新了,则返回True,否则返回False。
import pandas as pd
import gempy
# 创建地质模型
geo_model = gempy.create_model('geo_model')
# 定义网格
extent = [0, 100, 0, 100, 0, 100]
resolution = [50, 50, 50]
gempy.init_data(geo_model, extent=extent, resolution=resolution)
# 创建含有坐标和属性的DataFrame
df = pd.DataFrame()
df['X'] = [25, 75]
df['Y'] = [25, 75]
df['Z'] = [25, 75]
df['property1'] = [10, 20]
# 添加数据到地质模型
gempy.set_data(geo_model, points_df=df, update_surfaces=False)
# 获取到网格数据
values_before = geo_model.grid.regular_grid.copy()
# 修改属性值
df.loc[0, 'property1'] = 30
# 更新网格数据
geo_model.grid.update_grid_values(df=df, property_name='property1')
# 获取到更新后的网格数据
values_after = geo_model.grid.regular_grid.copy()
assert not values_before['values'][0] == values_after['values'][0], '属性值更新失败'
在示例中,我们首先创建了一个三维的地质模型,并且定义了网格的范围和分辨率。然后,我们在DataFrame中添加了一个包含坐标和属性(此处为属性1)的数据。接下来,我们将数据添加到地质模型中,并获取到更新前的网格数据。随后,我们在属性1中修改了一个值,然后使用update_grid_values()
函数更新网格数据,并再次获取到更新后的网格数据。最后,我们断言属性值是否已成功更新。