Spatial data and information processing for geomodeling
We attempt to simplify the access to open-source spatial data processing for geological modeling with the development of GemGIS, a Python-based open-source library.
GemGIS wraps and extends the functionality of packages known to the geo-community such as GeoPandas, rasterio, OWSLib, Shapely, PyGEOS, PyVista, Pandas, NumPy and the geomodeling package GemPy.
The aim of GemGIS, as indicated by the name, is to become a bridge between conventional geoinformation systems (GIS) such as ArcGIS and QGIS, and geomodeling tools such as GemPy, allowing simpler and more automated workflows from one environment to the other.
Find the documentation of GemGIS here. It includes introductions to the main libraries used and to introductory topics like "What is vector data?" or "What is raster data?".
In addition, tutorial notebooks provide an overview of the different features of GemGIS. The notebooks can also be downloaded directly from here.
It is recommended to use GemGIS with python==3.9 in a separated environment. The main packages and its dependencies can be installed via the conda-forge channel. GemGIS is then available through PyPi.
conda install -c conda-forge pygeos
conda install -c conda-forge geopandas
conda install -c conda-forge rasterio
conda install -c conda-forge pyvista
pip install gemgis
/conda install -c conda-forge gemgis
Check out the Installation Page for more detailed instructions.
- Jüstel, A., Endlein Correira, A., Wellmann, F. and Pischke, M.: GemGIS – GemPy Geographic: Open-Source Spatial Data Processing for Geological Modeling. EGU General Assembly 2021, https://doi.org/10.5194/egusphere-egu21-4613, 2021
- Jüstel, A.: 3D Probabilistic Modeling and Data Analysis of the Aachen-Weisweiler Area: Implications for Deep Geothermal Energy Exploration, unpublished Master Thesis at RWTH Aachen University, 2020
- de la Varga, M., Schaaf, A., and Wellmann, F.: GemPy 1.0: open-source stochastic geological modeling and inversion, Geosci. Model Dev., 12, 1-32, https://doi.org/10.5194/gmd-12-1-2019, 2019
- Powell, D.: Interpretation of Geological Structures Through Maps: An Introductory Practical Manual, Longman, pp. 192, 1992
- Bennison, G.M.: An Introduction to Geological Structures and Maps, Hodder Education Publication, pp. 78, 1990
Extracting XY values from Vector Data | Extracting XYZ values from Vector Data |
Exploding Geometries/Vector Data | Clipping/Cropping Vector Data |
Interpolating Vector Data to Rasters | Removing Interface Points within Fault Buffers |
Extracting Interface Points and Orientations from Geological Cross Sections | Extracting Interface Points from Geological Maps |
Creating Orientations from Isolines on maps | Calculating Orientations from Strike Lines |
Delaunay triangulation for isoline maps | Delaunay triangulation of Shapely MultiPoints |
Sampling from Rasters | Sampling Interfaces and Orientations from Rasters |
Calculating Raster Properties | Additional Raster Operations in GemGIS |
Visualizing Spatial Data with PyVista | Visualizing Topography and Maps with PyVista |
Visualizing Geological Cross Sections with PyVista | Creating Depth Maps from GemPy Models |
Creating Temperature Maps from GemPy Models | Calculating Thickness Maps from GemPy Models |
Visualizing Borehole Data | Draping Vector Data over Elevation Model |
Working with Web Map Services - WMS | Working with Web Feature Services - WFS |
Working with Web Feature Services - WFS |
Opening Leapfrog Meshes and GoCad TSurfaces | Opening OBJ and DXF Files with PyVista in GemGIS |
Opening GeoDataBases for GemGIS | Parsing Leapfrog Wells |
Working with GPX Data | Working with KML Data |
Opening ESRI ASC Grids and ZMAP Grids | Working with HGT Files |
Plotting Orientations with mplstereonet | Plotting Hypocenters of Earthquakes with PyVista |
Working with Well Data from the Geological Survey NRW | Parsing QGIS Style File to GemGIS |
Obtaining City Locations | Creating proj.crs.crs.CRS Objects for GemGIS |
Fitting plane through earthquake hypocenters | Georeferencing Rasters using Rasterio |
Slicing GemPy Lith Blocks | Assigning physical properties to lith block |
Creating LineStrings from PyVista Contour Lines |
Example 1 - Planar Dipping Layers | Example 2 - Planar Dipping Layers |
Example 3 - Planar Dipping Layers | Example 4 - Unconformably Dipping Layers |
Example 5 - Folded Layers | Example 6 - Unconformably Folded Layers |
Example 7 - Folded Layers | Example 8 - Faulted Dipping Layers |
Example 9 - Faulted Dipping Layers | Example 10 - Faulted Folded Layers |
Example 11 - Horizontal Layers Layers | Example 12 - Three Point Problem |
Example 13 - Three Point Problem | Example 14 - Three Point Problem |
Example 15 - Three Point Problem | Example 16 - All features |
Example 17 - Three Point Problem | Example 18 - Faulted Folded Layers |
Example 19 - Faulted Folded Layers | Example 20 - Sill |
Example 21 - Coal Seam Mining | Example 22 - Coal Measures |