sarpy
sarpy copied to clipboard
Improved mapping of SICD polarizations to SIDD polarizations
The SIDD types have a TxrcvPolarizationType.from_sicd_value() method which is responsible for mapping a SICD TxRcvPolarization value into separate SIDD Tx and Rcv values.
This mapping is not trivial. Each SIDD version supports a different list of valid values, and SICD has the concept of singular OTHER and UNKONWN values.
| SICD v1.4 | SIDD v1 | SIDD v2 | SIDD v3 |
|---|---|---|---|
For the cases where SICD provides both a transmit and receive polarization, I believe the mapping for each polarization should be:
| SICD v1.4 | SIDD v1 | SIDD v2 | SIDD v3 |
|---|---|---|---|
| V | V | V | V |
| H | H | H | H |
| X | OTHER | OTHER | X |
| Y | OTHER | OTHER | Y |
| S | OTHER | OTHER | S |
| E | OTHER | OTHER | E |
| RHC | RHC | RHC | RHC |
| LHC | LHC | LHC | LHC |
| OTHER* | OTHER | OTHER | OTHER* |
Then for the two sentinel values:
| SICD v1.4 | SIDD v1 | SIDD v2 | SIDD v3 |
|---|---|---|---|
| OTHER | OTHER | OTHER | OTHER |
| UNKNOWN | OTHER | UNKNOWN | UNKNOWN |
I've also fixed some bugs caused by the SIDD1 code reusing SIDD2, which would sometimes set the polarizations to "UNKNOWN" even though that isn't a valid value for SIDD v1.