Skip to content

polsartools/polsartools

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

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

💠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

Sample 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