Introducing EO-Tools a python EO toolbox focused on SAR

Hi everyone,

Hope I’m not too off-topic here… I’d love to get your feedback on a project I’ve been working on called EO-Tools (yes, I know, super original name… :-p).

GitHub: https://github.com/odhondt/eo_tools

I started EO-Tools because I felt there was a real lack of native Python tools for working with Sentinel-1 SLC products—especially anything involving phase, like interferometry or polarimetry. The goal isn’t to replace SNAP, but to offer a programmatic, scalable option using modern open-source Python tools like GDAL/Rasterio, Xarray, Dask, and GeoPandas.

My first challenge was building the TOPS-InSAR processing chain, which, in my opinion, is the trickiest part of working with Sentinel-1. There are some pretty unique steps involved, like DEM-assisted co-registration and azimuth deramping. If anyone’s curious, I’d be more than happy to dive into the details!

Once I had the basics to extract phase info (interferograms) between two products, I added convenience functions that users at different skill levels could use—whether you’re just getting started and need a one-function solution or you’re advanced and want to inject custom steps into the workflow.

Another lesser-known aspect of interferometry is its byproduct called coherence, which tells us about temporal stability. Urban areas show high coherence due to stable scatterers, while vegetation tends to have low coherence. So, beyond monitoring land deformation, coherence could be a useful feature in land cover classification and change detection.

EO-Tools processes Sentinel-1 data one burst at a time, leveraging multithreading via Numba. Bursts are basically sub-images from different antenna orientations, and they need to be processed separately before stitching. I’m really curious about how this could be parallelized for HPC by distributing the single-burst tasks across different workers. I’m still learning about this, but it feels right up the alley of this forum, and I’d love to hear any thoughts!

Anyway, if this piques your interest or if you have ideas about SAR applications I haven’t thought of, I’d be super happy to chat!

7 Likes

Regarding Sentinel-1 SAR tools, there is a fellow who is quite active in the space (Alexey Pechnikov) and my understanding is that a lot of his effort has arisen from frustration with other tools. It may be worth having a look at his work - I’m not familiar with it though.

1 Like

Thanks for mentioning PyGMTSAR! To give a brief comparison:

  • EO-Tools relies entirely on Python packages (though some, like GDAL, may have C/C++ core functions), while PyGMTSAR depends on GMTSAR, which is a specialized InSAR software fully written in C, although it only uses specific functions from it.
  • The two tools serve different purposes. EO-Tools is designed as a general-purpose tool for pre-processing SAR data, making it easy to combine with other sensors like optical data (there’s even basic Sentinel-2 functionality included). It focuses on providing analysis-ready data, including SAR phase-related information such as interferometric coherence and (in the future) dual-polarimetric features. Users can easily insert their own pre-processing routines, like speckle filters or feature extractors, and geocode the results using lookup tables produced by the tool. On the other hand, PyGMTSAR focuses more on advanced InSAR techniques like PSI (Persistent Scatterer Interferometry) and SBAS (Small Baseline Subset), which are widely used in geoscience research.

The long-term goal of EO-Tools is to allow users to extract as much information as possible from Single Look Complex (SLC) products for their specific applications. A good example is using interferometric coherence as a vegetation index for crop monitoring. For instance, this study, Multi-Annual Evaluation of Time Series of Sentinel-1 Interferometric Coherence as a Tool for Crop Monitoring, explores how polarimetric backscatter and InSAR coherence complement each other in this context. I believe there’s huge potential in combining these approaches with machine learning.

I hope this helps clarify the scope of EO-Tools :slight_smile:

To give some visual context to my previous post, here is an example of coherence and SAR amplitude I computed over the city of Berlin:



As you can see, it is much easier to differentiate vegetation (low coherence) from built-up areas (high coherence) in the coherence image than in the amplitude one. Moreover, because different crop types have distinct growth cycles and physical structures, time series of coherence will exhibit unique signatures. Coherence tends to decrease as vegetation grows and becomes denser, leading to greater signal decorrelation. This variation can be useful for monitoring changes in crop type or health. Also, compared to optical, SAR does not suffer from cloud coverage, which means the temporal density of observations is unaffected by the weather.

Coming back to the topic of this community, the main issue is that those Sentinel-1 SLC products are rather big (8Gb per file, not cloud optimized), plus this phase related information can only be extracted from image pairs. This is why I think providing a scalable solution to leverage such information could have an impact on climate based applications.

In this spirit EO-Tools has a docker version that could be used on HPC platforms, but I am sure there is room for improvement which is the reason why I am looking forward to your comments!

2 Likes