How to do a georeferenced Stiff Diagram with Python 3 and QGIS 3 - Tutorial

Stiff Diagrams are a common and powerful tool for the representation of surface water / groundwater main ions. Anion and cation concentrations are represented on equivalent weight (meq/l), and usually cations are represented at the left side and anions at the right side. Traditionally, this diagram is useful for the comparison of the main water chemical components by examination of a series of diagrams, however it was not easy to compare the diagrams with the position of the observacion point.

To enhance the chemical analysis on regional scale this tutorial has coupled the Stiff Diagrams with their position on a QGIS project. The diagramas are generated from a spreadsheet with Python on a Jupyter Notebook and stored a vector file (.svg), then the images files are referenced on a style file (.sld) and uploaded to QGIS3.

Read More

How to efficiently apply Geology from Shapefiles to MODFLOW with ModelMuse with Global Variables

On the MODFLOW groundwater model construction process in Model Muse there are tools to import hydrogeological parameters as hydraulic conductivity and boundary conditions from shapefiles assigning the parameter values from the spatial object metadata. This type of workflow is useful for idealized aquifers or simple hydrogeological assessments; however on groundwater models at regional scale the calibration process requires the quick and repetitive change of the hydrogeological parameters and boundary conditions to evaluate the hydraulic response against observed data.

For model calibration the use of Global Variables (Data/Edit Global Variables...) of Model Muse makes relatively easy, ordered and with better change control the calibration process. This tutorial gives the procedure to implement Global Variables for the hydraulic conductivities of 15 hydrogeological units distributed on a model of 560 square kilometers.

Read More

Implementation of Multiple Wells with MODFLOW and Model Muse - Tutorial

Groundwater modeling on the regional scale or with huge baseline can be tedious to do manually in a Graphical User Interface as Model Muse. There are more advanced options to insert a great amount of wells with long and diverse pumping schedules with Flopy or by altering the *.gpt file with some programming effort; however these are kind of intermediate level solutions that would be time expensive for a beginner groundwater modeler.

This tutorial shows the procedure to insert multiple wells with different pumping rates in MODFLOW with Model Muse by the use of some special features. The procedure can insert wells at different depths however it cannot set the well name and in case of wells with multiple pumping records a group of superposed wells will be inserted, one for each pumping rate record.

Read More

How to get Geospatial Weather Information with QGIS and QWeather - Tutorial

Quick tutorial about how to get geospatial weather data in QGIS using the QWeather plugin. This plugin connects QGIS with the Yahoo Weather API and retrives all information from a location or a lat/long coordinate. Weather data is available for the current day and data is represent as a geojson file.

The tutorial shows the common procedure to retrieve data for capitals and explore the location and metadata information available of precipitation, wind (speed, direction), temperature and humidity. It is possible to setup a defined location list using a .csv file; for the tutorial, main cities in Saxony, Germany were selected.

Read More

MODFLOW Observed / Simulated Head Comparison Plot with Model Muse and Python - Tutorial

Groundwater modeling with MODFLOW and other codes are defined as inverse modeling where the aquifer parameters can be calculated from the comparison of model results with observed data. This comparison process is time consuming, employs acceptance criteria and trend analysis of the boundary condition influence.

There are tools for the comparison of observed and simulated heads in Model Muse and custom charts can be done with few lines in Python. This tutorial cover the whole procedure to create a simulated / observed plot in Python from the results of a MODFLOW model run on Model Muse. The study case is over a regional model with more than 100 piezometers. The tutorial creates a graph with a colorbar and exports it as a JPG file.

Read More

Maximum Pumping Well Rate Estimation with Modflow and Model Muse - Tutorial

Pumping well productivity depends of the aquifer porous media, aquifer thickness and extension, physical processes of water cycle relevant to groundwater flow regime, well design and operation considerations. Determination of maximum pumping rate from a well is the key for well construction process because the maximum rate is relevant to pump sizing, licensing, purchase of conduction materials and dimension of water storage facilities. On a project feasibility perpective, the maximum rate estimation is important to meet the project demand on its different stages.

This tutorial shows the complete procedure to determine the maximum pumping rate from a well on a quaternary aquifer on steady state flow conditions with MODFLOW and Model Muse. The tutorial covers all the steps of spatial and temporal discretization, boundary condition setup and hydraulic parameter definition, with an emphasis on the conceptualization of a maximum pumping scenario with operational conditions on the well.

Read More

View and Manage your QGIS Spatial Data in Android with Q Field - Tutorial

QField is a plugin now in version 1.0 developed by that brings customized maps to a Android devices with the QField for QGIS app. This tutorial shows the complete procedure to create a QGIS project from lines and points with a background map; the project is packed for QField and then ported on a Android device though bluetooth, sd card, usb, or a online service. Once the QField files are on the Android device, the project can be opened with the app and the actual location can be displayed on the screen.

The workflow is fluid and we see high potential in many professional and scientific fields for bringing processed spatial data to fieldwork.

Read More

3D Structural Geological Modeling in Python with Gempy - Tutorial

Gempy is as open source Python library for generating full 3D structural geological models. The library is a complete development to create geological models from interfases, faults, and layer orientations, it also relates the sequence of geological layers to represent rock intrusions and faults order.

Algorithm for geological modeling is based on universal cokriging interpolation with the support of high-end Python mathematical libraries as Numpy, PyMC3 and Theano.

Gempy creates a grid model that can be visualized as 2D sections with Matplotlib or as 3D geometrical objects as VTK objects that allow the representation of the geologic models on Paraview for custom slicing, filtering, transparencies, and styling.

This tutorial is a basic example of a stratified geological setup with 5 layers and one fault. In order to make the tutorial fully accessible to the majority of users, we have created a complementary tutorial about how to install Gempy on Windows with a repository distribution of Anaconda.

Read More

Triangular Mesh for Groundwater Models with MODFLOW 6 and Flopy - Tutorial

One of the most exceptional new features from MODFLOW 6 is the different discretization options for the model mesh generation. Options range from regular grid (same as MODFLOW 2005), triangular mesh and unstructured grid. Flopy that is a Python library for the build and simulation of MODFLOW 6 and other models has tools for triangular mesh generation. The workflow on groundwater modeling with MODFLOW 6 and Flopy for triangular mesh models is pretty fluid and we see a lot of potential for local and regional groundwater flow modeling.

This tutorial shows the complete process to create a triangular mesh with the utilities from Flopy and incorporate it to a MODFLOW 6 model. The model is simulated and results are represented as colored mesh and contour lines.

Read More

Land Cover Change Analysis with Python and GDAL - Tutorial

Satellite imagery brought us the capacity to see the land surface on recent years but we haven’t been so successful to understand land cover dynamics and the interaction with economical, sociological and political factors. Some deficiencies were found on the use of GIS commercial software, but there are other limitations in the way we apply logical and mathematical processes to a set of satellite imagery. Working with geospatial data on Python gives us the capability to filter, calculate, clip, loop, and export raster or vector datasets with an efficient use of the computational power providing a bigger scope on data analysis.

This tutorial shows the complete procedure to create a land cover change raster from a comparison of generated vegetation index (NDVI) rasters by the use of Python and the Numpy and GDAL libraries. Contours of land cover change where generated with some tools of GDAL and Osgeo and an analysis of deforestation were done based on the output data and historical images from Google Earth.

Read More

Stable Isotope Representation from Groundwater Samples with Python Pandas - Tutorial

Stable isotope analysis is a powerful tool for the evaluation of groundwater origin and groundwater dynamics, specially when the observation points and recording periods are limited. Isotope representation can be done with any spreadsheet software, but the workflow is defficient specially when plotting scatter points, solid lines, labels and legends.

This tutorial shows a the complete procedure to represent a stable isotope representation of groundwater samples from remediation site in New Mexico, USA. The script is done with Python 3, Pandas and other packages that come alread installed on the Anaconda distribution. Code for the representation of the Global Meteoric Water Line is also included as well as options for the figure storage.

Read More

How to clip multiple Landsat 8 Bands with Python and GDAL - Tutorial

Current GIS desktop applications are fully capable of this spatial management and analysis when the amount of raster images is limited; however when we deal with high amount of images the spatial processing on a graphical user interfase (GUI) can be slow and most commonly impractical. The use of programming / processing languages like Python and advanced spatial libraries as GDAL ( helps on the spatial data transformation on a more abstract and effective way. This tutorial shows the complete procedure to clip the complete set of bands from a Landsat 8 image and store them with a suffix on every band file on another folder.

The tutorial is done on a interactive Python programming platform called Jupyter Notebook. The input files: raster bands and area of interest (AOI) shapefile need to be on the same system of reference (SRC), otherwise the GDAL library cannot locate the spatial data on the right position. The tutorial shows the procedure for the whole set of band form a Landsat 8 image, an example for a single band is provided on the scripts of the input data. Finally the tutorial shows the complete and clipped raster on a GIS desktop software as QGIS.

Read More

Regional Groundwater Modeling with MODFLOW and Flopy - Tutorial

Regional groundwater modeling is an important task on a strategic water management that involves all users, activities, and involved ecosystems and provides a sustainable use for current and future conditions. There are some specific considerations on the regional modeling with respect to baseline and spatial discretization, a regional model is not intended to provide the aquifer response for a determined area, instead it involves the assessment of the regional groundwater flow and the quantification of the recharge, discharge and other process on the water balance.

This tutorial is the Flopy / MODFLOW numerical example of the Angascancha basin. The example is on steady steady and is solved with the NWT solver. Model output representations have been done under the Flopy/Matplotlib tools as well as some Python code to create VTU files and styled on Paraview.

Read More

Basic Example of Saline Intrusion Modeling with SEAWAT and Flopy - Tutorial

SEAWAT is a model developed by the USGS for the simulation of three-dimensional variable density groundwater flow with solute and heat transport. The software is based on MODFLOW-2000 and MT3DMS and on its latest version it can simulate viscosity variations and provide faster execution times. SEAWAT is implemented on Flopy, the Python library to build, run and represent MODFLOW models. This tutorial has the complete workflow to create and represent a basic example of saline instrusion with SEAWAT and Flopy on a Jupyter Notebook.

Read More

Determination of Flow Direction Vectors from a MODFLOW Model with Python and Flopy - Tutorial

Groundwater flow direction representation is useful to understand the actual and predicted conditions of the groundwater flow regime. The arrow direction and magnitude give a quick perspective of the main groundwater flow directions and the interconexion between sources and discharge points. This tutorial show the complete workflow to determine the flow directions from a MODFLOW model done with Model Muse. The scripting insert a background image, georeference the model from parameters exported as comments, and export the resulting figure as a PNG file. The tutorial is done in Python 3 on a Jupyter Notebook.

Read More

How to make a Piper Diagram in Python - Tutorial

A Piper Diagram is an effective graphic procedure to segregate relevant analytical data to understand the sources of the dissolved constituents in water. This procedure was born under the statement that most natural waters contain cations and anions in chemical equilibrium. It is assumed that the most abundant cations are calcium (Ca), magnesium (Mg) and sodium (Na). The most common anions are bicarbonate (HCO3), sulphate (SO4) and chloride (Cl).

The Piper diagram can be made by free and commercial desktop software, however in this tutorial we have generated the Python scripts and working procedure to create a Piper Diagram from values stored in a working spreadsheet.

Read More

NDVI calculation from Landsat8 images with Python 3 and Rasterio - Tutorial

Satellite images are georasters, these images are a regular array of columns and rows (a matrix per band) with a georeferenciation. Python is a programming and data analysis language very versatile for the matrix algebra with the Numpy library, however there was no efective and simple way to process a georaster until the development of the Rasterio package.

Rasterio is a library to open, write, explore and analyze georasters in Python. The library uses GeoTIFF images along with other formats and is capable to work with satellite images, digital elevation models, and drone generated imagery.

This tutorial show the complete procedure to analyse the NDVI from a Landsat 8 image with Python 3 and Rasterio. The scripting and representation was performed on a interactive enviroment called Jupyter Notebook, finally the result georaster was opened in QGIS and compared with some background images.

Read More

Sentinel2 images exploration and processing with Python and Rasterio - Tutorial

Rasterio is a Python library that allows to read, inspect, visualize and write geospatial raster data. The library uses GeoTIFF and other spatial raster formats and is capable of working with satellite imagery, digital elevation models, and drone imagery data products. Rasterio allows you to import a single band or multiband geospatial raster in a interactive Python enviroment as Jupyter notebook, the library can keep the “duality” of the geospatial raster, that means, it can handle the location and resolution parameters as well as the matrix values of the gridded elements.

This tutorial shows some basic procedures to explore a multiband Sentinel 2 granule with Python 3 and Rasterio on a Jupyter Notebook. The tutorial shows the commands to identify the raster array dimensions and the geospatial referencing parameters, make representation of each visible band and export band composites as true color and false color geoespatial rasters in Tiff format.

Read More

Elevation Model Conditioning and Stream Network Delimitation with Python and Pysheds - Tutorial

Digital elevation models (DEMs) from satellite interpretation (Aster DEM or Alos Palsar) come with “sinks” from errors in the elevation interpretation, raster resolution or reprojection. There is a need to correct those rasters in order to interpret the hydrological features. This tutorial show the process to condition a digital elevation model (DEM) dowloaded from a NASA/USGS server ( with the Pysheds library of Python. The tutorial was done on a Jupyter Notebook, input files and scripts are attached on the final part of the post.

Read More

How to calculate a Terrain Volume with QGIS3 - Tutorial

Calculate volumes is an easy task on QGIS 3 with the use of SAGA GIS tools under the Processing toolbox. Raster volumes can be calculated above or below a base level and two other specific calculation, input rasters need to be in UTM. These type of calculation is useful for earth movement, reservoir design, risk analysis and other spatial analysis.

The tutorial presented on this post shows the complete procedure to calculate the raster volume above a base level on QGIS3.

Read More