create_data 是 Gempy 中一个数据生成工具,主要用于生成用于训练和测试模型的三维地质数据。该工具可以生成各种地质特征(如地层结构、岩层类型、断层、褶皱等)并输出为 GeMpy 自定义的 HDF5 格式文件。
该工具可以在 Python 环境中使用,调用方式为:
gempy.create_data(
extent: Tuple[float, float, float, float, float, float],
resolution: float,
path_o: str,
path_i: Optional[str] = None,
path_f: Optional[str] = None,
n_faults: int = 0,
**kwargs
) -> pd.DataFrame
其中,参数含义如下:
extent(必需):一个六元 tuple,表示生成地质数据的空间范围。依次为 xmin, xmax, ymin, ymax, zmin, zmax。resolution(必需):生成数据的分辨率,即每个单元格的尺寸(单位为米)。path_o(必需):指定输出 HDF5 文件的路径和文件名。path_i(可选):指定输入 HDF5 文件的路径和文件名。如果给定该参数,则会利用该文件中的地质特征生成新的数据,而不是随机生成。path_f(可选):指定储存随机生成数据的文件的路径和文件名。n_faults(可选):生成数据中包含断层的数量。默认为 0。kwargs(可选):一系列用于指定生成数据的参数。具体参数和含义详见下文。该函数会将生成的地质数据以 GeMpy 自定义的 HDF5 格式储存到指定路径下的文件中。该文件中的数据可以直接用于 GeMpy 本身的训练和测试,也可以以普通 HDF5 文件的方式供其他程序使用。
create_data 的额外参数(kwargs 中参数)如下所示:
layer_heights(可选):一个列表,表示每一层地层的高度(单位为米)。列表长度即为生成的地层数量。默认为 [2, 2, 2]。layer_type(可选):一个列表,表示每一层的岩层类型。每个元素必须是该参数集合 {"Igneous", "Metamorphic", "Sedimentary", "Volcaniclastic", "Mixed"} 中的一个。列表长度即为生成的地层数量。默认为 ["Sedimentary", "Sedimentary", "Sedimentary"]。layer_inclinations(可选):一个列表,表示每一层的倾角,以度数表示。列表长度即为生成的地层数量。默认为 [0, 0, 0]。layer_dips(可选):一个列表,表示每一层的倾向,以度数表示。列表长度即为生成的地层数量。默认为 [0, 0, 0]。mean_strikes(可选):一个列表,表示每个断层 (fault) 的平均走向,以度数表示。列表长度即为生成数据中包含的断层数量。默认为 [180]。mean_dips(可选):一个列表,表示每个断层 (fault) 的平均倾角,以度数表示。列表长度即为生成数据中包含的断层数量。默认为 [40]。mult_lith(可选):一个布尔值,表示是否允许不同类型的岩层在同一个单元格内共存。默认为 False。intrusion_geometry(可选):一个字符串,表示侵入体的类型。该参数必须是该参数集合 {"sphere", "dyke", "sheet"} 中的一个。默认为 None,表示没有侵入体。intrusion_mode(可选):一个字符串或列表,表示侵入体的形式。该参数必须是该参数集合 {"layers", "random", "regular"} 中的一个。默认为 None,表示没有侵入体。skewness(可选):一个浮点数,表示生成数据的偏斜度。默认为 0。col_var_strat(可选):一个浮点数,表示生成数据中各层地层厚度的变化系数。默认为 1。该函数会返回一个 Pandas DataFrame,包含生成的地质数据。该返回值通常仅在调试和测试时使用。
以下是一个使用 create_data 的示例:
import gempy
extent = [-50, 50, -50, 50, -50, 50]
resolution = 1
path_o = "example_model.h5"
n_faults = 1
gempy.create_data(extent, resolution, path_o, n_faults=n_faults)
这将生成包含默认参数设置的随机地质数据,并将其存储到 example_model.h5 文件中。如果需要生成指定参数的数据,则可以修改 kwargs 中的相应参数。