Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Directional drilling 3D visualization modeling #973

Open
xiaohua00921 opened this issue Dec 27, 2024 · 73 comments
Open

Directional drilling 3D visualization modeling #973

xiaohua00921 opened this issue Dec 27, 2024 · 73 comments

Comments

@xiaohua00921
Copy link

What is your question?
Hello, in your example, the unknown model is imported into the drilling data visualization 3D modeling, your data are all vertical drilling data, I wonder if you could provide some data like directional drilling and be able to visualize an example of modeling? Because as you know directional drilling data is oriented by inclination and azimuth.

@xiaohua00921
Copy link
Author

A little help would be greatly appreciated.

@javoha
Copy link
Member

javoha commented Dec 27, 2024

Hi @xiaohua00921,

if you look through all the examples at the gempy page and on the way input data is loaded (e.g from csv files), you will see that data for surface points is added using xyz coordinates. This does mean that you cann add surface boundary information any way you like, there is no restriction to follow a vertical drillhole.

Let me know if this answers your question.

Cheers,
Jan

@xiaohua00921
Copy link
Author

xiaohua00921 commented Dec 30, 2024

Hello, javoha.
This modeling based on the drill data xyz is helpful for me, but I still want to ask one thing, the columns in the online data don't seem to correspond very well, including the column with the name of 789, I would like to ask you to help me to answer what these columns represent and how they are used in the modeling process, I always feel that some of the data is not used, this question may cost you a lot of time. I would like to thank you very much for your generous help.

@xiaohua00921
Copy link
Author

Also, I would like to ask you, when you say that the vertical drill holes are unrestricted, do you mean that based on these corresponding drill hole data, according to your gempy algorithm, it is possible to successfully connect them into such a directional trajectory (a line with direction)? My research direction is 3D modeling of coal mining, mainly based on the existing borehole data, interpolating each layer of lithology according to your corresponding method (if the data volume is large enough), and then updating this model according to my subsequent data afterwards, I wonder if gempy can be used in my direction, do you think it can be?

@xiaohua00921
Copy link
Author

Addendum To the first reply, I'll show you the borehole data in your example, it's in this graph, can you please elaborate on the meaning of this,altitude,base,formation,top,_top_abs,md, for example his altitude, is this altitude the z-value of the borehole, and base is based on who? base is an altitude based on who? The meaning of these data and so on. Thanks again if you can answer my questions.
https://raw.githubusercontent.com/softwareunderground/subsurface/main/tests/data/borehole/kim_ready.csv

@NilsChudalla
Copy link
Member

Dear @xiaohua00921,
if you have the feeling, that some data is not used in the modeling process, could you be a bit more precise?

  • Does the modelled surface not go through the point? -> We might need a bit more information.
  • Does a formation from the input not show up in the model? -> Did you include the formation as surface in the stack?
  • Something else?

Regarding the model input: Gempy might treat input data differently from modelling software you might be familiar with, where the collar data alone is sufficient to describe the entire input. You will want to transform the input for each surfaces into the "xyz" format, not "collar+borehole meter" (line with direction) format. In your example, I am not sure, what columns "7", "8", and "9" should represent. Gempy will look for specific names for the columns in the input files: here is how surface input should look like (and columns should be named) (https://github.com/gempy-project/gempy/blob/main/examples/data/input_data/jan_models/model5_surface_points.csv). And here is an example for orientation data (https://github.com/gempy-project/gempy/blob/main/examples/data/input_data/jan_models/model5_orientations.csv), although you can add orientations as either gradient vector (G_x, G_y, G_z) or dip, azimuth and polarity. I recommend that you check out the video series, Jan and I did, where we are going into this in a bit more detail. https://www.youtube.com/watch?v=yYwJVYy8ilw

Regarding your overall modelling goal, of adding more points to the model: Sounds like a fairly common usecase for Gempy. You will recompute the model after adding new points, but you could use the function "add_surface_points()" (https://gempy-project.github.io/temp_gp3_docs/tutorials/a_getting_started/get_started.html#surfaces) to do this step by step and comprehensibly.

@xiaohua00921
Copy link
Author

Dear NilsChudalla ,
This modeling based on the drilling data xyz is very helpful to me, but I still want to ask a question, in this https://raw.githubusercontent.com/softwareunderground/subsurface/main/tests/data/borehole/kim_ The columns in the ready.csv data don't seem to correspond very well, including the column with the name 789. I would like to ask you to help me to answer what these columns represent and how they are used in the modeling process, and also could you please explain in detail the meaning of this,height,base,formation,top,_top_abs,md, for example his height, is the height the z-value of the borehole? Who is the foundation based on? Who is the foundation based on for the height? The meaning of these data and so on. This question may take you a lot of time. Thank you very much for your generous help.

Also, I would like to ask you, when you say that the vertical boreholes are unrestricted, do you mean that based on these corresponding borehole data, according to your gempy algorithm, you can successfully connect them into such a directional trajectory (a directional line)? My research direction is 3D modeling of coal mining, mainly based on the existing borehole data, interpolating each layer of lithology according to your corresponding method (if the amount of data is large enough), and later updating this model based on my subsequent data, I don't know if gempy can be used in my direction, do you think it's possible?

@javoha
Copy link
Member

javoha commented Jan 7, 2025

Hi @xiaohua00921,
I think there is some confusion about the dataset you have linked. This dataset does contain data that gempy does not use. I can not tell you exactly what all the columns mean, this depends on where the data is from and how it was processed.
Gempy will only use the columns that are relevant for the underliying algorithm. For surface data points this specifically means it will only use the columns "x", "y", "z" and "formation", even if you pass a .csv file with other columns. Please take a look at the video that @NilsChudalla linked: https://www.youtube.com/watch?v=yYwJVYy8ilw.

This also means Gempy does not care if your data follows a borehole trajectory, is randomly somapled over space from outcrops, was picked from a seismic or is fully synthetic - as long as you pass x,y,z coordinates and formation.

Does this answer your question?

@xiaohua00921
Copy link
Author

Unnamed: 0,0,x,y,name,num,z,year,7,8,9,altitude,base,formation,top,_top_abs,md
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,1035.5970765000002,topo,0.0,108.7132874,0.0
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,1652.2456364,etchegoin,1035.5970765000002,1144.3103639,1035.5970765000002
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,2109.9936834,macoma,1652.2456364,1760.9589238,1652.2456364
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,2799.0279844,fruitvale,2109.9848934,2218.6981808,2109.9848934
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,2110.0036834,mclure,2109.9936834,2218.7069708,2109.9936834
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,3062.3277894,round_mountain,2799.0279844,2907.7412718,2799.0279844
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,3162.6180724,olcese,3062.3277894,3171.0410768,3062.3277894
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,3323.9220274,vedder,3162.6180724,3271.3313598,3162.6180724
0,2904240,303412,3913997,1-1,12,-3894,XX,14,0,0.409,108.7132874,4352.0370174,,3323.9220274,3432.6353148,3323.9220274
1,2906949,312385,3917847,KCL_B45,45,-3107,XX,14,0,0.275,121.8172989,833.7528457999999,topo,0.0,121.8172989,0.0
Maybe the data linked above is a bit confusing, I've put the data directly in the comments section this time. First of all, in response to the previous question, I tried deleting columns YEAR, 7, 8, and 9 still works fine, so this is irrelevant. Next, in the above question, what does the two columns (0,2904240,) before column x mean? Secondly, in this altitude,base,top,_top_abs,md, I understand that altitude is the elevation and md is the bathymetry, but I don't understand the meaning of the other references, so I would like to ask you to answer this question again.
Lastly, a new question I would like to ask is, in the example data, the formation is 9, why the layered color rendering is not 9? I would like to know exactly how to solve this problem, and I wonder if this question is written in enough detail this time.
If I still don't understand that question, please let me know. Thank you very much.

@xiaohua00921
Copy link
Author

8cafb080d08c669387a24f09d0ef4aa This image is about color after layering.

@xiaohua00921
Copy link
Author

xiaohua00921 commented Jan 9, 2025

I have a new question about the xyz axis in this data, for example, the point with index 0, this xyz data is completely unchanged, why, after visualization, the point is the z value is changed? (I'll provide you with a graph below)
BTW, this is my understanding, do you see it right?
The “base” is the depth of the bottom of the current stratum, and the “top” is the depth of the top of the current stratum.
How do these two values work in the xyz coordinate system? I'm guessing there would be a correspondence in your code?
I would greatly appreciate your reply here.

@javoha
Copy link
Member

javoha commented Jan 9, 2025

Hi @xiaohua00921,
regarding your original question:
Maybe I was not super clear - This dataset was not created by us. I do not know what all the columns mean. The only thing I know is that gempy will only take the four columns named x,y,z and formation and ignore the rest. If you want more information on the orginal dataset you need to ask on the subsurface github where it is located.
The same I think is true for your second question: This drillhole plot was not created with gempy, so I do not know how the coloring works there. In gempy the elements will have names corresponding to the content of the formation column.

@xiaohua00921
Copy link
Author

hi.
I'd like to borrow your time for a few minutes while the questions are being uploaded.

@xiaohua00921
Copy link
Author

914968fed97ae1cf280010a105242fb

@javoha
Copy link
Member

javoha commented Jan 9, 2025

Hi,
your last image is kind of the same thing - it was not created with gempy so I do not know how it is supposed to look.

@xiaohua00921
Copy link
Author

Hi!
And who created this one?
Where should I be able to learn this answer?
This is one of the examples from the official website.
Are you sure it's not clear?
Anyway, thank you very much!

@xiaohua00921
Copy link
Author

xiaohua00921 commented Jan 10, 2025

Hi!
I'd like to ask one more question.
About this directional trajectory data
I'd like to know how it works.
Does this xyz change based on azimuth and inclination?
I would like to know what the corresponding data format should be.
Which file should the source code be in?
Thank you very much.

@javoha
Copy link
Member

javoha commented Jan 10, 2025

Hi,
you are right that this is one of the examples on our page, but not all of those were created by us directly. Looking at it I think everything done with the boreholes is done using subsurface, and as the priginal data is also located there, maybe it would be a good idea to ask on the subsurface github.

@xiaohua00921
Copy link
Author

Hi,
Okay, I'll go to the subsurface site and ask the question
Do you know how gempy works?
I would like to learn where the interpolation algorithm of gempy is located.
Are you aware of this?
Thank you very much.

@javoha
Copy link
Member

javoha commented Jan 10, 2025

Hi,
gempy uses a universal co-kriging interpolation in the backend. If you are interested in it, I would suggest taking a look at the literature linked on our front page:

de la Varga, M., Schaaf, A., and Wellmann, F. (2019). GemPy 1.0: open-source stochastic geological modeling and inversion, Geosci. Model Dev., 12, 1-32.

Wellmann, F., & Caumon, G. (2018). 3-D Structural geological models: Concepts, methods, and uncertainties. In Advances in Geophysics (Vol. 59, pp. 1-121). Elsevier.

Calcagno, P., Chilès, J. P., Courrioux, G., & Guillen, A. (2008). Geological modelling from field data and geological knowledge: Part I. Modelling method coupling 3D potential-field interpolation and geological rules. Physics of the Earth and Planetary Interiors, 171(1-4), 147-157.

Lajaunie, C., Courrioux, G., & Manuel, L. (1997). Foliation fields and 3D cartography in geology: principles of a method based on potential interpolation. Mathematical Geology, 29(4), 571-584.

If you are interested in the code, it is located in the gempy-core repositpry.

@xiaohua00921
Copy link
Author

Doesn't gempy have a lot of interpolation algorithms?
I am interested in these interpolation algorithms
I'd like to see the source code for these interpolation algorithms.
Is this a location where you can provide some help?

@javoha
Copy link
Member

javoha commented Jan 10, 2025

At the current state gempy only uses universal co-kriging.

@xiaohua00921
Copy link
Author

What does it mean in its current state?
Isn't gempy open source?

@javoha
Copy link
Member

javoha commented Jan 10, 2025

Yes, but maybe in the future we/someone ill develop the code to integrate other interpolation options.

@xiaohua00921
Copy link
Author

Okay, I would like to know the accuracy of the generalized synergistic kriging algorithm first are you clear on that?

@xiaohua00921
Copy link
Author

I would like to ask again, do you mean subsurface he gives example data with open source gempy source code gives an example on gempy's official website, so?

@xiaohua00921
Copy link
Author

Anyway, I'm just getting into this.
There's a lot I don't know.
Thanks for taking the time to answer my questions.
I wish you a good life and good health!

@javoha
Copy link
Member

javoha commented Jan 10, 2025

Hi,
i will try to summarize this a little. I do not know how much experience you have with open source projects like this. Let's start:

  • You seem to have many questions. Some of these actually regard gempy, some the underlying logic and algorithms and some regard data provided and processed in a different open surce project.
  • As you stated, this is an open source project and we answer questions and provide help in our free time. I think it would help if you research a little more and ask more specific questions once you are more familiar with the project.
  • Example 1: The accuracy of the universal co-kriging is discussed in the literature linked above.
  • Example 2: The code containing the universal co-kriging is in gempy-core as stated, but it is rather complex and would require you to spend some time to understand and follow it.

Good luck and have fun learning gempy.
Cheers,
Jan

@xiaohua00921
Copy link
Author

Hi,
I have very little experience, so maybe I'm not being very precise in the questions I'm asking.
Since I have needs that are about 3D geological modeling, specifically
It is based on directional drilling measurements and some lithology data
I need to interpolate the lithology of each part of the 3D space.
I found gempy has a similar example.
so I came to study it.
All the questions I'm asking are about this example.
However, you may be referring to the example provided by subsurface.
So I'll have to look into that again.

The reason I asked you about the algorithm is because initially I looked it up.
There are a lot of open source algorithms for gempy.
So I'm trying to learn and study it.
I also heard from you that there's only one algorithm that you're talking about.

@xiaohua00921
Copy link
Author

f5de8019f1775987e78fcff40219bcd

@xiaohua00921
Copy link
Author

This is exactly described in the videos we linked. A short breakdown: When you create a gemooy model instance you

... give it a name, an extent, and a resolution ... you can either add input data manually or load a csv - we use a csv here

There is two types of input data you need: Surface points and orientations.

Surface points require x,y,z and formation columns minimum example here

Orientations require x,y,z.azimuth,dip,polarity and formation columns minimum example here. Azimuth, dip and polarity can be replaced by d_x, d_y, d_z of a pole vector.

Note that these orientations have nothing to do with directional drilling, these are geological orientations measurements of the inclination of surfaces.

So what you're saying is that gempy won't work for my data at all? You said this.
You've said it's irrelevant, so of course it won't solve my problem right? So you reply to me not knowing how it will help me?

@javoha
Copy link
Member

javoha commented Jan 13, 2025

That is not what I said. Gempy might absolutely work for your problem. But you need to transform your data to a format that gempy can read.

@xiaohua00921
Copy link
Author

So now I am just asking you what kind of data format is supported by gempy? I don't know, if you have understood my question so far, if so, please give a useful reply.

@AlexanderJuestel
Copy link
Contributor

@xiaohua00921 GemPy needs csv files containing interface points (stratrigraphic boundaries) and orientations.

You can find sample files from the documentation here. Your data needs to be converted to the same format then if necessary: https://github.com/cgre-aachen/gempy_data/tree/master/data/input_data/getting_started

I hope that helps

@xiaohua00921
Copy link
Author

I don't understand what this directional data is, in response to this directional drill data that I have, mine is an azimuth and inclination for each point, what specifically is this directional data that you are referring to?

@javoha
Copy link
Member

javoha commented Jan 13, 2025

It is explained in this video roughly around 0:50. You might not have this data availabele from your drilling data, but you can add orientations manually for testing.

@NilsChudalla
Copy link
Member

NilsChudalla commented Jan 13, 2025

So now I am just asking you what kind of data format is supported by gempy? I don't know, if you have understood my question so far, if so, please give a useful reply.

What kind of input?

Surface points Orientation data
What gempy needs: Columns named "X", "Y", "Z", "formation", e.g. .csv format What gempy needs: Columns "X", "Y", "Z", "formation", "dip", "azimuth", "polarity" or "X", "Y", "Z", "formation", "G_x", G_y", "G_Z", e.g. in .csv format
What you have to do: Transform your directional drilling data into file as described above, exact naming for column names* What you have to do: Give one orientation per geological series (**)

(*) I asked ChatGPT for help for this and slightly modified the reply and it works:

import numpy as np
import pandas as pd

def borehole_to_cartesian(collar, dip, azimuth, depths, formation):
    """
    Convert borehole data into Cartesian coordinates.
    
    Parameters:
    collar: tuple of floats
        The (x, y, z) coordinates of the collar (starting point of the borehole).
    dip: float
        The dip angle of the borehole in degrees (0 is horizontal, positive downwards).
    azimuth: float
        The azimuth angle of the borehole in degrees (clockwise from north).
    depths: list of floats
        The depths along the borehole at which to calculate Cartesian coordinates.

    formation: list of strings
        The name of interfaces logged along the borehole at which to calculate Cartesian coordinates.
    
    Returns:
    pandas DataFrame
        DataFrame with columns ['x', 'y', 'z', 'depth'] representing the Cartesian coordinates.
    """
    
    # Convert angles to radians for trigonometric functions
    dip_rad = np.radians(dip)
    azimuth_rad = np.radians(azimuth)
    
    # Initialize the DataFrame
    data = {
        'X': [],
        'Y': [],
        'Z': [],
        'depth': [],
        'formation': []
    }
    
    # Initial coordinates (collar position)
    x0, y0, z0 = collar
    
    # Calculate Cartesian coordinates for each depth
    for i, depth in enumerate(depths):
        x = x0 + depth * np.cos(dip_rad) * np.sin(azimuth_rad)
        y = y0 + depth * np.cos(dip_rad) * np.cos(azimuth_rad)
        z = z0 - depth * np.sin(dip_rad)
        
        data['X'].append(x)
        data['Y'].append(y)
        data['Z'].append(z)
        data['depth'].append(depth)
        data['formation'].append(formation[i])
        
    return pd.DataFrame(data)

# Example usage
collar = (500, 500, 100)  # Example collar coordinates (x, y, z)
dip = 45  # Dip angle in degrees
azimuth = 90  # Azimuth angle in degrees
depths = [0, 50, 100, 150, 200] # Depths along the borehole
formations = ["a", "b", "c", "d", "e"]

cartesian_data = borehole_to_cartesian(collar, dip, azimuth, depths, formations)
print(cartesian_data)

(**) If you have no orientational information for the surfaces, there are alternatives, but I do not want to cause more confusion now, than there already is.

@NilsChudalla
Copy link
Member

I don't understand what this directional data is, in response to this directional drill data that I have, mine is an azimuth and inclination for each point, what specifically is this directional data that you are referring to?

Your "directional" data is actually the data source required for surface points, because the inclined borehole contains the locations where the interfaces between layers are found. Do you have any dip measurements of the layers themselves (NOT the borehole) somewhere in 3D?

@xiaohua00921
Copy link
Author

In your reply, it means that each stratigraphic sequence must have a direction, where stratigraphic sequence presumably means lithology, do I understand correctly?

所以现在我只是问你 gempy 支持什么样的数据格式?我不知道,到目前为止你是否理解了我的问题,如果是这样,请给出有用的回答。

什么样的输入?

表面点 方向数据
gempy 需要什么:名为 “X”、“Y”、“Z”、“formation” 的列,例如 .csv 格式 gempy 需要什么:列 “X”, “Y”, “Z”, “formation”, “dip”, “azimuth”, “polarity” 或 “X”, “Y”, “Z”, “formation”, “G_x”, G_y“, ”G_Z“,例如.csv格式
您需要做什么:如上所述将定向钻取数据转换为文件,列名的精确命名* 您必须做什么:为每个地质序列提供一个方向 (**)
(*)我向 ChatGPT 寻求帮助,并稍微修改了回复,它有效:

import numpy as np
import pandas as pd

def borehole_to_cartesian(collar, dip, azimuth, depths, formation):
    """
    Convert borehole data into Cartesian coordinates.
    
    Parameters:
    collar: tuple of floats
        The (x, y, z) coordinates of the collar (starting point of the borehole).
    dip: float
        The dip angle of the borehole in degrees (0 is horizontal, positive downwards).
    azimuth: float
        The azimuth angle of the borehole in degrees (clockwise from north).
    depths: list of floats
        The depths along the borehole at which to calculate Cartesian coordinates.

    formation: list of strings
        The name of interfaces logged along the borehole at which to calculate Cartesian coordinates.
    
    Returns:
    pandas DataFrame
        DataFrame with columns ['x', 'y', 'z', 'depth'] representing the Cartesian coordinates.
    """
    
    # Convert angles to radians for trigonometric functions
    dip_rad = np.radians(dip)
    azimuth_rad = np.radians(azimuth)
    
    # Initialize the DataFrame
    data = {
        'X': [],
        'Y': [],
        'Z': [],
        'depth': [],
        'formation': []
    }
    
    # Initial coordinates (collar position)
    x0, y0, z0 = collar
    
    # Calculate Cartesian coordinates for each depth
    for i, depth in enumerate(depths):
        x = x0 + depth * np.cos(dip_rad) * np.sin(azimuth_rad)
        y = y0 + depth * np.cos(dip_rad) * np.cos(azimuth_rad)
        z = z0 - depth * np.sin(dip_rad)
        
        data['X'].append(x)
        data['Y'].append(y)
        data['Z'].append(z)
        data['depth'].append(depth)
        data['formation'].append(formation[i])
        
    return pd.DataFrame(data)

# Example usage
collar = (500, 500, 100)  # Example collar coordinates (x, y, z)
dip = 45  # Dip angle in degrees
azimuth = 90  # Azimuth angle in degrees
depths = [0, 50, 100, 150, 200] # Depths along the borehole
formations = ["a", "b", "c", "d", "e"]

cartesian_data = borehole_to_cartesian(collar, dip, azimuth, depths, formations)
print(cartesian_data)

(**)如果您没有表面的方向信息,还有其他选择,但我不想现在造成比现在更多的混淆。

@xiaohua00921
Copy link
Author

我不明白这个方向数据是什么,为了响应我拥有的这个定向钻探数据,我的是每个点的方位角和倾角,你指的是这个方向数据具体是什么?

您的“方向”数据实际上是表面点所需的数据源,因为倾斜的钻孔包含找到图层之间界面的位置。您是否在某个地方对层本身(不是钻孔)进行了 3D 倾角测量?

My stratigraphic sequence aka lithology in space that I interpolated out must be unknown because that's what I need to rely on known borehole data from directional drilling to interpolate out lithology in space, so first you need me to provide an underlying sequence direction, and that's not going to happen. The known data I have is some columns of points in azimuth, dip, xyz and all that.

@NilsChudalla
Copy link
Member

NilsChudalla commented Jan 13, 2025

In your reply, it means that each stratigraphic sequence must have a direction, where stratigraphic sequence presumably means lithology, do I understand correctly?

This is about understanding gempy now: A SERIES is a stack of surfaces that are behaving similarly. In a geological context, those would have deposited in a similar setting, with tectonic events affecting all surfaces similarly. If an unconformity occured, this would result in a new series.
SURFACES are all layers/interfaces interpolated by gempy and make up series.

You will have to define at least one series, which contains your surfaces. Orientation data must be given with atleast one data point for one surface in each series.

This is, why it is important to start with a simple model and add more surfaces as you go, especially if you are not familiar with the theory behind it.

My stratigraphic sequence aka lithology in space that I interpolated out must be unknown because that's what I need to rely on known borehole data from directional drilling to interpolate out lithology in space, so first you need me to provide an underlying sequence direction, and that's not going to happen.

So you have no logging data of those boreholes, only lithology observed?

The known data I have is some columns of points in azimuth, dip, xyz and all that.

I got that. But your "azimuth" and "dip" refers to the inclination of the borehole, if I understood the data you showed correctly.

Overall, I feel like you should run the simple GemPy examples. Then you should create a simple model without your real data next. Then, if you understand, what kind of data you require, try to model your region with your data. If you try to skip the previous steps, I am afraid, we will run into more mutual misunderstandings.

@xiaohua00921
Copy link
Author

What do you mean by logging data from drilled holes?
I think we should have a discrepancy in our understanding of the stratigraphic sequence right now.
Here's an example.
Let's say the borehole logging data is from 0 to 10 meters and in between is a lithology like coal.
I understand the stratigraphic sequence to mean the bottom 10 meters of what I call the bottom sequence.
The layer above 0 meters I also call the stratigraphic sequence.
I don't know if this is correct.

@xiaohua00921
Copy link
Author

I got that. But your "azimuth" and "dip" refers to the inclination of the borehole, if I understood the data you showed correctly.

Yes, your understanding is correct, my azimuth and inclination of each point is again referring to the azimuth and inclination of the points measured at intervals of a few meters while drilling this way, I wonder if you can understand what is being said in this way?

@NilsChudalla
Copy link
Member

What do you mean by logging data from drilled holes?

In geological modelling, you might have additional observations available from borehole logs. Image logs, core data, ... Or maybe outcrop observations. Do you have such data available?

Yes, your understanding is correct, my azimuth and inclination of each point is again referring to the azimuth and inclination of the points measured at intervals of a few meters while drilling this way, I wonder if you can understand what is being said in this way?

Yes, then I understood correctly. That means, that this "directional data" is not the kind of "orientation data" that gempy needs. I gave you the code to transform the borehole data with dip and azimuth to cartesian coordinates (x,y,z). This way, you can use your data for gempy as surface points. You will have to adapt the example your data and save the dataframe as a csv file.

Let's say the borehole logging data is from 0 to 10 meters and in between is a lithology like coal.
I understand the stratigraphic sequence to mean the bottom 10 meters of what I call the bottom sequence.
The layer above 0 meters I also call the stratigraphic sequence. I don't know if this is correct.

Stratigraphic sequence does not directly translate to series. Series is surfaces that look similar in their geometry. You can have multiple stratigraphic sequences in a single series. We also talk about that in the gempy youtube series.

Important question: Did you start with simple models already or are you only trying to build a model from your data?

@xiaohua00921
Copy link
Author

Here again, I reiterate exactly what I mean by the data I have.
When I'm drilling a hole, which is not vertical.
Rather, it's directional, as evidenced by the fact that, when the drill hole is being driven
Every few meters, there's a point where x, y, z, azimuth, dip, roll, lithology are recorded.
That's all the data I have.

@xiaohua00921
Copy link
Author

You provided me with this code for the Cartesian coordinate system.
It doesn't seem to make much sense as I understand it.

@xiaohua00921
Copy link
Author

Let's say the borehole logging data is from 0 to 10 meters and in between is a lithology like coal.
I understand the stratigraphic sequence to mean the bottom 10 meters of what I call the bottom sequence.
The layer above 0 meters I also call the stratigraphic sequence. I don't know if this is correct.
Can you please let me know if I understand the stratigraphic sequence correctly?

@xiaohua00921
Copy link
Author

I didn't start with a simple model, I just wanted to make some changes based on this example to accomplish my needs.
I don't know if you have seen this example yet?
https://docs.gempy.org/examples/real/mik.html#sphx-glr-examples-real-mik-py

@xiaohua00921
Copy link
Author

As to why I used the example, that would be the first thing to ask if you are clear on the example?

@NilsChudalla
Copy link
Member

NilsChudalla commented Jan 13, 2025

I didn't start with a simple model, I just wanted to make some changes based on this example to accomplish my needs.
I don't know if you have seen this example yet?

I do know this example and my evaluation of it is, that it requires a solid understanding of gempy, python, and overall programming, because it uses a bunch of other packages. It uses quite advanced code and concepts. Are you a new python user? If you would follow these steps precisely, you will have create a succesful model. In the example, the "directional borehole data" is used to define surface points, not orientation points. Orientations are only introduced here. If you need help transforming your data, this is NOT a gempy issue, as @javoha has correctly pointed out. The example uses functions from this module to read the data and this is not gempy.

Let's say the borehole logging data is from 0 to 10 meters and in between is a lithology like coal.
I understand the stratigraphic sequence to mean the bottom 10 meters of what I call the bottom sequence.
The layer above 0 meters I also call the stratigraphic sequence. I don't know if this is correct.
Can you please let me know if I understand the stratigraphic sequence correctly?

I explained, that "stratigraphic sequences" are not the same as "series" in gempy. Gempy can do something like: "series 1" contains surfaces from "stratigraphic sequence 1", "coal seam 1", and "stratigraphic sequence 2" and more, if you want it. This should get clear, if you try to understand the basics of gempy (for example in our videos or other simple examples!).

@xiaohua00921
Copy link
Author

I have some knowledge of python and the packages used, and I have run the results, but just so you are clear, the results of this example he is not the results of a directional drill, he is running what could be a 3D modeling of a vertically drilled hole, and it doesn't involve these azimuths and inclinations of the directional drill at all. That's why I came to ask about the data format for directional drilling, once there is a format I can run it out following gempy's various packages and methods. But now is the time to consult you on what this is exactly like, but I have not been able to get a result or an idea for the reason that maybe my understanding is not very clear.

@xiaohua00921
Copy link
Author

你好,我觉得可能你搞混了GemPy和subsurface(https://github.com/softwareunderground/subsurface)。

对于您想使用的钻孔数据,在这个例子里(https://docs.gempy.org/examples/real/mik.html#sphx-glr-examples-real-mik-py),需要用subsurface包进行预处理,把钻孔数据转化为GemPy可用的输入数据。具体的用法需要去subsurface的API中查看。

你好,方便详细聊一下吗?可以的话,可以加您微信或者qq嘛,您有这方面的研究吗?

@yangjiandendi
Copy link

你可以留下邮箱,我把联系方式发过去

@xiaohua00921
Copy link
Author

[email protected]

@xiaohua00921
Copy link
Author

你可以留下邮箱,我把联系方式发过去

我等您的邮箱回复。

@xiaohua00921
Copy link
Author

我不是从一个简单的模型开始的,我只是想根据这个例子做一些改变,以满足我的需求。不知道你有没有看过这个例子?

我确实知道这个例子,我对它的评估是,它需要对 gempy、python 和整体编程有深入的了解,因为它使用了一堆其他包。它使用非常先进的代码和概念。您是 python 的新用户吗?如果您严格遵循这些步骤,您将创建一个成功的模型。在示例中,“定向钻孔数据”用于定义曲面点,而不是方向点。此处仅介绍方向。如果您需要帮助转换数据,正如正确指出的那样,这不是一个 gempy 问题。该示例使用模块中的函数来读取数据,这不是 gempy。

假设钻孔测井数据从 0 到 10 米,介于两者之间的是像煤一样的岩性。我理解地层序列是指我所说的底部序列的底部 10 米。 0 米以上的层我也称之为地层层序。我不知道这是否正确。您能告诉我我是否正确理解了地层序列吗?

我解释说,“地层序列”与 gempy 中的“系列”不同。Gempy 可以做这样的事情:“series 1”包含“stratigraphic sequence 1”、“coal seam 1”和“stratigraphic sequence 2”等的表面,如果你愿意的话。如果您尝试理解 gempy 的基础知识(例如在我们的视频或其他简单示例中),这应该很清楚!

Hello, first of all, I would like to say that I might not be using the best translation software, which could have caused my tone to sound awkward. However, I want to emphasize that I am truly grateful for the time you have taken to help answer my questions, and I absolutely did not intend to come across as rude—this must be a misunderstanding. Secondly, our approach to research is often very goal-oriented, which might reflect some differences in our learning styles. Therefore, I would like to take this opportunity to apologize for anything that might have sounded impolite and to express my sincere gratitude to you.

@xiaohua00921
Copy link
Author

视频大约在 0:50 左右进行了解释。您可能没有来自钻取数据的这些数据,但您可以手动添加方向以进行测试。

Hello, first of all, I would like to say that I might not be using the best translation software, which could have caused my tone to sound awkward. However, I want to emphasize that I am truly grateful for the time you have taken to help answer my questions, and I absolutely did not intend to come across as rude—this must be a misunderstanding. Secondly, our approach to research is often very goal-oriented, which might reflect some differences in our learning styles. Therefore, I would like to take this opportunity to apologize for anything that might have sounded impolite and to express my sincere gratitude to you.

@xiaohua00921
Copy link
Author

GemPy 需要包含界面点(地层边界)和方向的 csv 文件。

您可以在此处的文档中找到示例文件。您的数据需要转换为相同的格式,然后如有必要:https://github.com/cgre-aachen/gempy_data/tree/master/data/input_data/getting_started

我希望这有帮助

Hello, first of all, I would like to say that I might not be using the best translation software, which could have caused my tone to sound awkward. However, I want to emphasize that I am truly grateful for the time you have taken to help answer my questions, and I absolutely did not intend to come across as rude—this must be a misunderstanding. Secondly, our approach to research is often very goal-oriented, which might reflect some differences in our learning styles. Therefore, I would like to take this opportunity to apologize for anything that might have sounded impolite and to express my sincere gratitude to you.

@NilsChudalla
Copy link
Member

Hi @xiaohua00921, thank you for your message. It got clear, we had some communication issue. That can happen. Maybe, you find a way to use GemPy for your project. I think, we are trying our best, to help the community doing cool stuff with GemPy and that got clear by the activity of several members in this issue. So, also thank you to all of you from my side :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants