该函数用于根据地质面数据集,为地质数据点集合分配地质面类别。
该函数接收一个包含地质面信息的数据框,通过将每个地质面上的数据点分配到该面所属的类别中,为地质数据点集合分配地质面类别。这些地质面可以有不同的名称,但必须与数据点集匹配。输入数据必须在二维空间中。
import gempy as gp
geo_model = gp.create_model("TestModel")
gp.init_data(geo_model, extent=[0, 1000, 0, 1000, 0, 1000], resolution=[50, 50, 50])
# 添加新的地质面
geo_model.add_surfaces(['rock1', 'rock2', 'rock3'])
# 生成随机生成的数据点
gp.set_data(
geo_model,
{"points": [np.random.rand(30) * 1000 for _ in range(3)],
"labels": ['rock3', 'rock2', 'rock1']}
)
# 为该点集的各个数据点分配地质面类别
geo_model.surfaces.df # 查看该点集的各个数据点及其所属地质面
# 输出:
# X Y Z surface
# 0 335.871888 679.315180 457.698308 rock3
# 1 984.175265 811.931554 715.070640 rock3
# 2 246.819389 720.687956 835.576951 rock3
# 3 438.741058 536.456406 189.003834 rock2
# 4 230.235447 557.260354 695.326633 rock2
# 5 395.847140 968.992784 869.121934 rock2
# 6 658.045867 711.464306 369.537027 rock1
# 7 674.063604 819.585776 979.994432 rock1
# 8 874.023644 469.254483 401.793820 rock1
在上面的示例中,我们为geo_model
添加了三个地质面,然后生成了一个包含30个数据点的数据集。通过调用set_surface_categories_from_surfaces
函数,我们将这些数据点按其所属的地质面进行分类。
gp.set_surface_categories_from_surfaces(geo_model.surfaces.df)
geo_model.surfaces.df
最终geo_model.surfaces.df
的输出结果为:
X Y Z surface appended_category
0 335.871888 679.315180 457.698308 rock3 2
1 984.175265 811.931554 715.070640 rock3 2
2 246.819389 720.687956 835.576951 rock3 2
3 438.741058 536.456406 189.003834 rock2 1
4 230.235447 557.260354 695.326633 rock2 1
5 395.847140 968.992784 869.121934 rock2 1
6 658.045867 711.464306 369.537027 rock1 0
7 674.063604 819.585776 979.994432 rock1 0
8 874.023644 469.254483 401.793820 rock1 0
通过上面的代码可以看到,我们的数据点集现在包含了一个名为'arpended_category'的新列,其中包含了每个数据点所属的地质面类别。