Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings
gempy-project

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Folds modelisation problem] - Bomal-sur-Ourthe (Belgium)#1072

SneakerShot started this conversation inGeneral
Discussion options

Hello,

I am in an internship and I need to create a geological model of the Bomal-sur-Ourthe area (EPSG:3812: xmin = 731000, xmax: 733150, ymin = 617600, ymax = 619500). The area to be modeled is quite complex (a succession of synclines and anticlines with faults). I used QGIS to overlay the geological map layers on the digital terrain model (DTM, see files). I then sampled the point layers and gave them coordinates (x, y, z), an orientation, a dip, a polarity, and an order of formation. I then exported this into two CSV files, which you will find below. When I implement them in the Gempy Python script, the folds in the subsurface are not connected to the layers that outcrop at the surface, and the folds are poorly modeled (I get strange shapes). However, I modeled fold hinges and cuts between the hinges to force Gempy to create a folded relief. According to the geological map, I should normally obtain, on a NW-SE section, the right edge of a syncline, followed by an anticline and ending with the left edge of an anticline. I don't know what else to try to fix the problem. What do you think the problem is?

Thank you in advance for your time.

Here are the files:

Projet_modèle_géol.ipynb
orientations_2.csv
interfaces_2.csv
MNT_Bomal_5m.tif

You must be logged in to vote

Replies: 4 comments 9 replies

Comment options

Hi@SneakerShot,

quite often, when the modelled geometry is too complex, you are lacking information in the depth and where you have the most complexity. I will have a look at it in the next days (I have not opened your script yet). If you have cross sections based on the map (the Walloon geological survey commonly has those), those would be a great aid. If you have cross sections at hand, check outGemGIS. The Gempy specific functions there might be outdated, but the data extraction from GIS software for input for Gempy should still be up to date! :)

Kind regards
Nils

You must be logged in to vote
0 replies
Comment options

Hello,

Thank you for your very quick reply. If I understand you correctly, I need to create more cross-sections (parallel to the axis of my folds) to force GemPy to model my folds correctly. Unfortunately, no geological cross-section covers my area of ​​interest. I can only provide you with cross-sections from two geological maps adjacent to mine :

These cross-sections represent the folded relief, which should be very similar to what I have in my area of ​​interest, as they represent the continuation of the folds at Bomal or the same fold zone with the same fold axis. If I don't have access to a true cross-section of my area of ​​interest, is it still worthwhile to use GemGIS ?

Kind regards

You must be logged in to vote
1 reply
@NilsChudalla
Comment options

Hi@SneakerShot,

the advice I gave you was quite general. I built a model North-East of yours and had that issue there (that's why I was familiar with the Walloon geological survey).

Looking at your data, there is a more urgent fix required: It seems as if you picked points along the exterior of the polygons of your map.
grafik
With the green layer, I am not sure which sampling strategy was used. But what you should be aiming for, is the bottom contact of each layer. So something like this:
grafik
My drawing is obviously without proper knowledge, what makes sense in your case (edit: in terms of summarizing your current data into a surface to be modeled). After doing this, you might notice, if some layers are unconformaties and if you should utilize more serieses than one you are currently using.

I hope this helps
Nils

Comment options

Hello, what software or Python script do you use to visualize points in 3 dimensions? Is it GemGIS? I sampled my surface layers on my digital terrain model and then created underground points based on the elevations of the digital terrain model. I don't understand how I could have created points outside my DEM because I only sampled on it.

You must be logged in to vote
4 replies
@NilsChudalla
Comment options

This is the default pyvista plotter (after installing gempy-viewer, rungpv.plot_3d(geomodel) or check the associated video :) If you want to use it, you might have to install python locally and not use collab. To my knowledge, pyvista allows only the static view, that you already saw in the collab notebook.

Please ignore my initial tip. Please focus on the time regarding the sampling from the map. Gempy tries to connect surface points of the same surface. If you have the outline of a geological unit in your input data, Gempy will still follow what it was supposed to do and draw mostly horizontal layers or some very weird stuff.

@NilsChudalla
Comment options

GemGIS was meant as an interface between GIS software and Gempy; reading shapefiles and so on turning them into tables of the required input shape... But it also includes functions to sample from DEMs :)

@SneakerShot
Comment options

Thank you for your advices, i will try it today !

@NilsChudalla
Comment options

Enjoy! Feel free to share the result, if you want some feedback :)

When selecting surface points, it helps to ask yourself, if the selected points represent the true bottom contact of the geological body you are modeling. If not, is it a fault or an unconformity? Faults would be their own structural element.

Comment options

Hello,

I changed my strategy and finally managed to generate a simple model of the area of interest. I now need to add the topography by adding my DEM. According to the GemPy documentation, there is no code yet developed for adding a raster (DEM) to a model. I also tried to generate code with chatgpt:

mnt_path = path_to_data+"/MNT_Bomal_5m.tif" # adapte le chemin"

import os, rasterio as rio
print(os.path.exists(mnt_path), mnt_path)

with rio.open(mnt_path) as ds:
print(ds.count, ds.width, ds.height, ds.dtypes, ds.crs)
print(ds.bounds)

--- Charger la topographie depuis le .tif

gp.set_topography_from_file(grid=geo_model.grid, filepath=mnt_path) # ou par exemple (200, 200) si tu veux la réduire

That didn't give me a good result; I get very large gaps in my cut. (
image). What is the problem and how can I achieve this goal? My DEM is in the first message of the discussion. Thanks in advance for your time.

You must be logged in to vote
4 replies
@NilsChudalla
Comment options

Hi@SneakerShot,
happy to see, that you got some results! Are you familiar with raster files? You can extract the information needed to create a structured grid from the geotif file from the meta data. If you have the x, y from the meta data, you get corresponding z components and set the topography from that array. Check out the examplehere, where we set the topography from an array.

The rasterio code could look something like

with rasterio.open(geotiff_path) as src:        band = src.read(1)  # Read the first band        transform = src.transform        # Get rows and cols of all pixels        rows, cols = np.meshgrid(            np.arange(band.shape[0]), np.arange(band.shape[1]), indexing='ij'        )        # Convert pixel coordinates to spatial coordinates        xs, ys = rasterio.transform.xy(transform, rows, cols)        xs = np.array(xs)        ys = np.array(ys)        # Flatten arrays        xs = xs.reshape(-1,1)        ys = ys.reshape(-1,1)        zs = band.reshape(-1,1)

That code was created with Chat GPT, but at first glance looks correct. Just have to stack them in to a single array, set the topography as in the tutorial and compute :) (edit: I asked if you are familiar with the format, because you could achieve a similar solution, going through the bounds and getting the resolution, but I want to encourage you to verify the result of either approach by using a scatter plot with the generated coordinates first.)

@NilsChudalla
Comment options

Aaaah! I found the issue: your raster has 4 bands and I believe none of them has the actual elevation data stored! Please revise how you got your DTM. The values range only between 0 and 255 because they correspond with RGB values and values 1-3 are the same -> grayscale. (edit: tbh, your DTM looks like the hillshade, so definitely check your GIS)

@SneakerShot
Comment options

Hello, thank you for your fast and clear answer. I resolved the issue ! Now, I'll start to discover how to use FloPy :)

@NilsChudalla
Comment options

You are very welcome :) Feel free to come back if you need more help, like extracting output from GemPy

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Category
General
Labels
None yet
2 participants
@SneakerShot@NilsChudalla

[8]ページ先頭

©2009-2025 Movatter.jp