Skip to content

A python package for processing Polarimetric Synthetic Aperture Radar (PolSAR) data.

License

Notifications You must be signed in to change notification settings

polsartools/polsartools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

526 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

A Python package for processing Polarimetric Synthetic Aperture Radar (PolSAR) data.

Silver Medal Build Documentation Status

image

image image

GitHub commits License: GPL 3.0

Jointly Developed By

MRSLab
Microwave Remote Sensing Lab (MRSLab)
Indian Institute of Technology Bombay, India
MIRSL
Microwave Remote Sensing Laboratory (MiRSL)
University of Massachusetts Amherst, USA

๐Ÿ† Awards & Recognition

ISRS I-CON (Silver)

This award was presented by the Indian Society of Remote Sensing (ISRS) during the Innovation Contest for Geo Spatial Information Technology-2025.

Why this work was recognized: Our project was honored for addressing the "Big Data" challenges of the current generation of SAR missions (such as NISAR, EOS-04, BIOMASS, and Sentinel-1). The judges recognized PolSARtools for:

  • โ˜๏ธ Cloud-Native Innovation: Bridging the gap between raw polarimetric data and Analysis Ready Data (ARD) using cloud-optimized formats.
  • ๐Ÿ”“ Open Science: Promoting inclusive research by lowering the coding barrier through our integrated QGIS plugin.
  • ๐Ÿ—๏ธ Scalability: Providing a reproducible architecture capable of handling the petabyte-scale influx of modern satellite imagery.

๐Ÿ’  General Information

This package generates derived SAR parameters (viz. polarimetric descriptors, vegetation indices, polarimetric decomposition parameters) from various SAR sensors or input polarimetric matrix (S2, C4, C3, T4, T3, Sxy, C2, T2).

๐Ÿ’  Installation

  1. Install gdal Package

    conda install gdal -c conda-forge
  2. Install polsartools Package

    You may choose any of the following options

    • a. pip (stable release):

      pip install polsartools
    • b. conda (stable release)

      conda install polsartools -c bnarayanarao
    • c. GitHub (Weekly Build)

      pip install git+https://github.com/polsartools/polsartools.git#egg=polsartools

      Use this if you encounter errors like: AttributeError: module 'polsartools' has no attribute 'xyzabc'

      Note for Windows users: If installing via GitHub (option c), make sure to install Microsoft C++ build tools first. Download here: https://visualstudio.microsoft.com/visual-cpp-build-tools

๐Ÿ’  Example Usage

The following code example demonstrates a typical processing pipeline using polsartools on NASA-ISRO SAR (NISAR) Geocoded Single-look Complex (GSLC) data. It includes polarimetric covariance matrix (C3) extraction, Pauli RGB visualization, speckle filtering, H/A/ฮฑ decomposition, and plotting in the H/ฮฑ and H/A/ฮฑ feature spaces.

import polsartools as pst

def main():
  # Generate C3 from NISAR GSLC full-pol data with 5x5 multilooking
  pst.import_nisar_gslc('path/to/nisar_gslc.h5',mat='C3',
                    azlks=5, rglks=5,
                    fmt='tif', cog=False, 
                    )

  # Visualize Pauli-decomposition RGB
  c3path = 'path/to/nisar_gslc/C3'
  pst.pauli_rgb(c3path)

  # Apply 3x3 refined-Lee speckle filter
  pst.filter_refined_lee(c3path,win=3)

  # Perform H-A-Alpha decomposition
  c3_rlee = 'path/to/nisar_gslc/rlee_3x3/C3'
  pst.h_a_alpha_fp(c3_rlee)

  # Generate H-Alpha 2d plot
  entropy_path = c3_rlee+'/H_fp.tif'
  alpha_path = c3_rlee+'/alpha_fp.tif'
  pst.plot_h_alpha_fp(entropy_path, alpha_path,
                      ppath='./halpha_2D.png')

  # Generate H-A-Alpha 3d plot
  ani_path = c3_rlee + '/anisotropy_fp.tif'
  pst.plot_h_a_alpha_fp(entropy_path, ani_path,alpha_path,
                      ppath='./haalpha_3D.png')

if __name__ == "__main__":
    main()

More example use cases and notebooks are provided at polsartools-notebooks repo. Detailed documentation is available at polsartools.readthedocs.io

๐Ÿ’  Available functionalities:

Full list of available functions is provided here : Functions

๐ŸŽจ Logo Vibes Explained

The package logo visually encapsulates key concepts in PolSAR data processing:

  • Poincarรฉ Sphere Representation: Central to the logo is a stylized visualization of the Poincarรฉ sphere, highlighting the diversity of polarization states encountered in SAR imaging.
  • Huynen Polarization Fork: A dotted elliptical curve represents the great circle containing Huynen's characteristic polarization states: co-polarized maximum, saddle point, and minima. These vectors lie in a common plane, revealing target symmetries and scattering behaviors.
  • Quadrant Background: The four background squares reflect brightness variations in SAR intensity data, showcasing:
    • Bright vs. dark reflectivity regions
    • Co-polarized (diagonal) vs. cross-polarized (off-diagonal) intensity distribution

Designed to reflect what this package does best: demystify PolSAR, one pixel at a time.

๐Ÿ’  Contributing

We welcome contributions! Whether it's fixing bugs, adding new features, or improving documentation, your help is greatly appreciated.

How to Contribute

  1. Fork the repository - Fork this repository to your GitHub account.

  2. Clone your fork - Clone the repository to your local machine:

    git clone https://github.com/polsartools/polsartools.git
  3. Create a branch - Create a new branch for your changes:

    git checkout -b feature-branch
  4. Make changes - Implement your changes or additions.

  5. Test your changes - Run the tests to ensure that your changes donโ€™t break anything.

  6. Commit and push - Commit your changes and push them to your fork:

        git commit -am "Description of changes"
        git push origin feature-branch
  7. Create a Pull Request - Open a pull request to the main repository with a clear description of the changes.

๐Ÿ’  Bug Reporting

If you encounter a bug or issue, please follow these steps to report it:

  1. Check the existing issues: Before submitting a new bug report, check if the issue has already been reported in the Issues section.

  2. Submit a bug report: If the issue hasnโ€™t been reported, please open a new issue and include the following information:

    • A clear description of the problem.
    • Steps to reproduce the issue.
    • Expected vs actual behavior.
    • Any error messages or stack traces.
    • Relevant code snippets or files if possible.
    • Version of polsartools and Python you're using.

Click here to report a bug

๐Ÿ’  Feature Requests

Weโ€™re always open to suggestions for new features or improvements!

  1. Check existing feature requests: Please make sure the feature request hasn't already been made in the Issues section.

  2. Submit a feature request: If it hasnโ€™t been requested already, please open a new issue with the following information:

    • A clear description of the feature.
    • Why you think this feature would be beneficial.
    • Any specific use cases or examples.

    Click here to request a feature

๐Ÿ’  Cite

If you use polsartoos in your research or projects, please cite the official journal paper:

Bhogapurapu, N., Siqueira, P., & Bhattacharya, A. 2026. polsartools: A Cloud-Native Python Library for Processing Open Polarimetric SAR Data at Scale. SoftwareX, 33, 102490. doi: 10.1016/j.softx.2025.102490

BibTeX

@article{bhogapurapu2025polsartools,
title = {Polsartools: A cloud-native python library for processing open polarimetric SAR data at scale},
author = {Narayanarao Bhogapurapu and Paul Siqueira and Avik Bhattacharya},journal = {SoftwareX},
volume = {33},
pages = {102490},
year = {2026},
publisher={Elsevier},
issn = {2352-7110},
doi = {https://doi.org/10.1016/j.softx.2025.102490},
}

๐Ÿ’  Funding

This research was partially supported by NASA through the NISAR grant (#80NSSC22K1869), with additional support from the Multi-Mission Algorithm and Analysis Platform (MAAP).