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 · 32 comments
Open

Directional drilling 3D visualization modeling #973

xiaohua00921 opened this issue Dec 27, 2024 · 32 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 example data doesn't seem to be the example data for Subsurface.
I don't know if you can provide me with any more information
Can I ask you about this example data?

@NilsChudalla
Copy link
Member

There is another project called subsurface (the scuba diving logbook, you are showing). You are looking for subsurface by software underground (https://github.com/softwareunderground/subsurface/tree/main). I also noticed late, that you took the data example from there. Some developers of GemPy are active there, but Subsurface development is not the main priority in this repo.

It is clear, that you want to utilize directional drilling data. @javoha already stated, that you can use ANY data source, as long as you transformed the input data into a format, gempy can process. The transformation is NOT part of GemPys purpose. Make sure to give columns the assigned name. Have you successfully recreated the tutorial models? Can you create your own simple model? Do it without real data, just add values within a pseudo coordinate system (e.g., range 0-100). This should help clear things up already by a lot

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

3 participants