Photo by Savvas Kalimeris on Unsplash


Optical Remote Sensing analysis depends on understanding the processes of absorption and scattering of solar radiance on ground objects. If we measure the solar incidence radiance and the surface’s irradiance, we will be able to estimate surface’s reflectance. Reflectance in various wavelengths is the key to understand the target we are observing, as each material will reflect and absorb energy differently depending on the considered wavelength. Figure 1 shows the mean reflectance spectra of different materials such as water, soil, vegetation and rocks.

Learn how to create scatter plots from satellite imagery and automate a PDF reporting engine with the results


Hi, and welcome back to part 6 of Python for Geosciences. One advantage of using a programming language like Python to perform satellite image analysis instead of a geospatial software is that we can automate any part of the process. This automation can be used in a production chain to return a periodically output(for example, monthly water surface, annual deforestation, among others) or it can be used to perform a historical analysis (create a deforestation time series, for example). …

Learn how to perform raster reprojection, clipping and merging using the rasterio package for Python


Welcome back for the 5th part of this series. On the previous Python for Geosciences post (here), we learned how to work with bit masks provided by satellite imagery, specifically for the case of the Landsat 8. It is very handful to mask undesired pixels or to select specific targets of interest. However, the pixel classification list of Level 2A processors is not always the same, or they are not reliable enough, and sometimes we need to use a mask provided by a different source/provider.

Last week, for example, I had prepare some water masks from the Global Water Surface…

Learn how to (correctly) use raster bit masks layers provided by satellite images as quality assessment bands


Welcome back to the 4th part of the Python for Geosciences series. In the previous post we have covered how to extract the bands values to proceed a simple spectral analysis. Imagine, however, that our final objective is to automatically monitor the reflectance spectra of a specific area of interest. This could be a crop, a forest, a lake or any other target and the goal is to check the evolution of the spectral reflectance of this area over the time (this can be used, for example, to identify a specific type of crop, monitor the evolution of a water…

Third post in a series that will teach non-programmers how to use Python to handle and analyze geospatial data


Hello and welcome back. This is the third story of the series Python for Geosciences, which has the objective to help non-programmers to start using Python for spatial data analysis and to automate it’s geospatial related processes. In the first post of the series (here), we learned how to prepare the Python environment on Windows using the Anaconda package manager and how to open a GeoTiff image from a Jupyter notebook. Next, on the second post (here), we saw the basics of matrix manipulation and we also learned how to created a flexible function to calculate Normalized Difference Indexes (such…

Hi Sebastian. I am glad to know the code is being useful. To save the checkpoint is really straightforward. Note that UNET inherits from nn.Module, so it behaves like a Pytorch module and it is the actual model. To save the weights you will use, filename). In the example, the model is called unet (lowercase). All the information can be found here:



Second post in a series that will teach non-programmers how to use Python to handle and analyze geospatial data.

This is the second story of the series Python for Geosciences — working with satellite image data. In the first post of this series (here) we set up the environment to run Python code from a Jupyter Notebook and learned how to open a GeoTiff image by using the rasterio package. Today we will learn the basics of matrix manipulation. This will allow us to combine matrices to create data cubes, perform raster calculations and create spectral indices.

As our series is based in step by step examples, our goal is to calculate the Modifies Normalized Difference Water Index (MNDWI)…

First post in a series that will teach non-programmers how to use Python to handle and analyze geospatial data.


This is the first in a series of stories I intend to publish on how to use the Python programming language to work with geospatial data. After a few years working in the field, I notice that there are many professionals from geosciences and related areas who are not programmers but need, to some extent, use a programming language to perform analysis, math calculations or simply automate a workflow. Frequently, those professionals struggle to achieve this. Without proper knowledge, they end up developing complex codes without following best practices that are prone to errors and that are not efficient to…

Primeiro post de uma série que vai ensinar a não programadores como usar o Python para tratar a analisar dados geoespaciais.


Esse é o primeiro de uma série de stories que pretendo publicar sobre como utilizar a linguagem de programação Python para trabalhar com dados geoespaciais. Após alguns anos trabalhando na área, observo que existem muitos profissionais da area de geociências que não são programadores mas que precisam, em algum momento, usar uma linguagem de programação pra fazer alguma análise, um cálculo ou apenas automatizar um processo manual. Muitas vezes aqueles que buscam fazê-lo encontram dificuldade. Sem o devido conhecimento, acabam por desenvolver códigos complexos sem seguir as melhores práticas que são propensos a erros e que nem sempre são eficientes…

Deep learning has shown incredible capabilities in many areas (medical, vision, etc.), but how does it compare to well known autoregressive models in financial time series and how Online Learning can improve the results.

Image by Author.


In my last story into this subject (available here), I’ve shown (step by step) how to implement in python a ARIMA+GARCH model to forecast the returns of the S&P500 index and compared its results to a well known R package (rugarch).

Today, I will move forward into the deep learning world and compare the performance of a Long-Short Term Memory (LSTM), a special kind of recurrent neural network (RNN), to the previous ARIMA+GARCH model as a strategy signal for predicting the returns of the S&P500 index. Why am I doing this kind of comparison? If we search for “deep learning…

Maurício Cordeiro

Doctorate student @ Université Paul Sabatier (Toulouse). Water Resources Specialist at the Brazilian National Water Agency.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store