import zarr
import numpy as np
from matplotlib import pyplot as plt
import moraine.cli as mc
load
load_gamma_flatten_rslc
load_gamma_flatten_rslc (rslc_dir:str, reference:str, hgt:str, scratch_dir:str, rslc:str, chunks:tuple[int,int]=(1000, 1000), processes=False, n_workers=1, threads_per_worker=1, **dask_cluster_arg)
Generate flatten rslc data from gamma command and convert them into zarr format. The shape of hgt should be same as one rslc image, i.e. the hgt file is generated with 1 by 1 look geocoding. All data equal to 0 are replaced with nan.
Type | Default | Details | |
---|---|---|---|
rslc_dir | str | gamma rslc directory, the name of the rslc and their par files should be ‘????????.rslc’ and ‘????????.rslc.par’ | |
reference | str | reference date, eg: ‘20200202’ | |
hgt | str | the DEM in radar coordinate | |
scratch_dir | str | directory for preserve gamma intermediate files | |
rslc | str | output, the flattened rslcs stack in zarr format | |
chunks | tuple | (1000, 1000) | rslc chunk size |
processes | bool | False | use process for dask worker or thread |
n_workers | int | 1 | number of dask worker |
threads_per_worker | int | 1 | number of threads per dask worker |
dask_cluster_arg | VAR_KEYWORD |
The method behind the flattened RSLC:
Let the value of i-th rslc be \(s_i\), the simulated phase due to DEM and position difference be \(u_{ij}\). D-InSAR basically is: \[d_{ij}=s_i \times s_j^* \times e^{-ju_{ij}}.\] Let the distance between satellite and ground target for th i-th observation be \(l_i\). Then, the simulated phase for DInSAR \[u_{ij} = l_i-l_j.\] So, a simple conclusion is \[u_{ij}-u_{ik}=-u_{jk}.\] If we define \[s_i^{\prime} = s_i \times e^{ju_{xi}},\] where \(X\) can be any arbitrary interger less than \(N\)- the total number of the RSLCs. Then we can find that \[int_{ij}^{\prime} = s_i^{\prime} \times s_j^{\prime*} = s_i \times s_j^* \times e^{j(u_{xi}-u_{xj})} = s_i \times s_j^* \times e^{j(u_{xi}-u_{xj})} = s_i \times s_j^* \times e^{-ju_{ij}} = d_{ij}.\]
We call \(s_i^{\prime}\) as flattened RSLC. The advantage of flattened RSLC is DInSAR can be easily calculated by simple conjugate multiplication.
An example:
= '../../data/gamma/rslc'
rslc_dir = '20220620'
reference = '../../data/gamma/geocoding/20210802.hgt'
hgt = './raw/rslc.zarr'
rslc = './raw/scratch' scratch_dir
= mc.get_logger() logger
=(1000,1000)) load_gamma_flatten_rslc(rslc_dir,reference,hgt,scratch_dir,rslc,chunks
2025-06-24 21:38:41 - log_args - INFO - running function: load_gamma_flatten_rslc
2025-06-24 21:38:41 - log_args - INFO - fetching args:
2025-06-24 21:38:41 - log_args - INFO - rslc_dir = '../../data/gamma/rslc'
2025-06-24 21:38:41 - log_args - INFO - reference = '20220620'
2025-06-24 21:38:41 - log_args - INFO - hgt = '../../data/gamma/geocoding/20210802.hgt'
2025-06-24 21:38:41 - log_args - INFO - scratch_dir = './raw/scratch'
2025-06-24 21:38:41 - log_args - INFO - rslc = './raw/rslc.zarr'
2025-06-24 21:38:41 - log_args - INFO - chunks = (1000, 1000)
2025-06-24 21:38:41 - log_args - INFO - processes = False
2025-06-24 21:38:41 - log_args - INFO - n_workers = 1
2025-06-24 21:38:41 - log_args - INFO - threads_per_worker = 1
2025-06-24 21:38:41 - log_args - INFO - dask_cluster_arg = {}
2025-06-24 21:38:41 - log_args - INFO - fetching args done.
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - rslc found:
date rslc \
0 20210802 ../../data/gamma/rslc/20210802.rslc
1 20210816 ../../data/gamma/rslc/20210816.rslc
2 20210830 ../../data/gamma/rslc/20210830.rslc
3 20210913 ../../data/gamma/rslc/20210913.rslc
4 20211011 ../../data/gamma/rslc/20211011.rslc
5 20211025 ../../data/gamma/rslc/20211025.rslc
6 20220606 ../../data/gamma/rslc/20220606.rslc
7 20220620 ../../data/gamma/rslc/20220620.rslc
8 20220704 ../../data/gamma/rslc/20220704.rslc
9 20220718 ../../data/gamma/rslc/20220718.rslc
10 20220801 ../../data/gamma/rslc/20220801.rslc
11 20220815 ../../data/gamma/rslc/20220815.rslc
12 20220829 ../../data/gamma/rslc/20220829.rslc
13 20220912 ../../data/gamma/rslc/20220912.rslc
14 20220926 ../../data/gamma/rslc/20220926.rslc
15 20221010 ../../data/gamma/rslc/20221010.rslc
16 20221024 ../../data/gamma/rslc/20221024.rslc
par
0 ../../data/gamma/rslc/20210802.rslc.par
1 ../../data/gamma/rslc/20210816.rslc.par
2 ../../data/gamma/rslc/20210830.rslc.par
3 ../../data/gamma/rslc/20210913.rslc.par
4 ../../data/gamma/rslc/20211011.rslc.par
5 ../../data/gamma/rslc/20211025.rslc.par
6 ../../data/gamma/rslc/20220606.rslc.par
7 ../../data/gamma/rslc/20220620.rslc.par
8 ../../data/gamma/rslc/20220704.rslc.par
9 ../../data/gamma/rslc/20220718.rslc.par
10 ../../data/gamma/rslc/20220801.rslc.par
11 ../../data/gamma/rslc/20220815.rslc.par
12 ../../data/gamma/rslc/20220829.rslc.par
13 ../../data/gamma/rslc/20220912.rslc.par
14 ../../data/gamma/rslc/20220926.rslc.par
15 ../../data/gamma/rslc/20221010.rslc.par
16 ../../data/gamma/rslc/20221024.rslc.par
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - number of images: 17.
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - image number of lines: 2500.
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - image width: 1834.
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - run gamma command to generate required data for flattened rslcs:
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210802.rslc.par raw/scratch/20220620_20210802.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:41 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210802.rslc.par raw/scratch/20220620_20210802.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20210802.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:38:45 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210816.rslc.par raw/scratch/20220620_20210816.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:45 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210816.rslc.par raw/scratch/20220620_20210816.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20210816.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:38:48 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210830.rslc.par raw/scratch/20220620_20210830.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:48 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210830.rslc.par raw/scratch/20220620_20210830.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20210830.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:38:51 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210913.rslc.par raw/scratch/20220620_20210913.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:51 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20210913.rslc.par raw/scratch/20220620_20210913.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20210913.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:38:53 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20211011.rslc.par raw/scratch/20220620_20211011.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:53 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20211011.rslc.par raw/scratch/20220620_20211011.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20211011.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:38:57 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20211025.rslc.par raw/scratch/20220620_20211025.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:57 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20211025.rslc.par raw/scratch/20220620_20211025.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20211025.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:38:59 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220606.rslc.par raw/scratch/20220620_20220606.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:38:59 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220606.rslc.par raw/scratch/20220620_20220606.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220606.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:04 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220620.rslc.par raw/scratch/20220620_20220620.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:04 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220620.rslc.par raw/scratch/20220620_20220620.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220620.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:07 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220704.rslc.par raw/scratch/20220620_20220704.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:07 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220704.rslc.par raw/scratch/20220620_20220704.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220704.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:10 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220718.rslc.par raw/scratch/20220620_20220718.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:10 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220718.rslc.par raw/scratch/20220620_20220718.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220718.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:13 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220801.rslc.par raw/scratch/20220620_20220801.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:13 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220801.rslc.par raw/scratch/20220620_20220801.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220801.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:16 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220815.rslc.par raw/scratch/20220620_20220815.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:17 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220815.rslc.par raw/scratch/20220620_20220815.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220815.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:19 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220829.rslc.par raw/scratch/20220620_20220829.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:19 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220829.rslc.par raw/scratch/20220620_20220829.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220829.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:22 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220912.rslc.par raw/scratch/20220620_20220912.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:22 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220912.rslc.par raw/scratch/20220620_20220912.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220912.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:24 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220926.rslc.par raw/scratch/20220620_20220926.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:24 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20220926.rslc.par raw/scratch/20220620_20220926.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20220926.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:27 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20221010.rslc.par raw/scratch/20220620_20221010.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:27 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20221010.rslc.par raw/scratch/20220620_20221010.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20221010.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:29 - load_gamma_flatten_rslc - INFO - run command: create_offset ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20221024.rslc.par raw/scratch/20220620_20221024.off 1 1 1 0 >> raw/scratch/gamma.log
2025-06-24 21:39:29 - load_gamma_flatten_rslc - INFO - run command: phase_sim_orb ../../data/gamma/rslc/20220620.rslc.par ../../data/gamma/rslc/20221024.rslc.par raw/scratch/20220620_20221024.off ../../data/gamma/geocoding/20210802.hgt raw/scratch/20220620_20221024.sim_orb ../../data/gamma/rslc/20220620.rslc.par - - 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:32 - load_gamma_flatten_rslc - INFO - gamma command finished.
2025-06-24 21:39:32 - load_gamma_flatten_rslc - INFO - using dask to load data in gamma binary format to calculate flatten rslcs and save it to zarr.
2025-06-24 21:39:32 - load_gamma_flatten_rslc - INFO - starting dask local cluster.
2025-06-24 21:39:33 - load_gamma_flatten_rslc - INFO - dask local cluster started.
2025-06-24 21:39:33 - dask_cluster_info - INFO - dask cluster: LocalCluster(dashboard_link='http://10.211.48.18:8787/status', workers=1, threads=1, memory=1.46 TiB)
2025-06-24 21:39:33 - darr_info - INFO - flattened rslc dask array shape, chunksize, dtype: (2500, 1834, 17), (2500, 1834, 1), complex64
2025-06-24 21:39:33 - zarr_info - INFO - ./raw/rslc.zarr zarray shape, chunks, dtype: (2500, 1834, 17), (1000, 1000, 1), complex64
2025-06-24 21:39:33 - load_gamma_flatten_rslc - INFO - computing graph setted. doing all the computing.
2025-06-24 21:39:37 - load_gamma_flatten_rslc - INFO - computing finished.
2025-06-24 21:39:37 - load_gamma_flatten_rslc - INFO - dask cluster closed.
load_gamma_lat_lon_hgt
load_gamma_lat_lon_hgt (diff_par:str, rslc_par:str, dem_par:str, hgt:str, scratch_dir:str, lat_zarr:str, lon_zarr:str, hgt_zarr:str, chunks:tuple[int,int]=(1000, 1000))
Function to load longitude and latitude from gamma binary format to zarr. All data equal to 0 are replaced with nan.
Type | Default | Details | |
---|---|---|---|
diff_par | str | geocoding diff_par,using the simulated image as reference | |
rslc_par | str | par file of the reference rslc | |
dem_par | str | dem par | |
hgt | str | DEM in radar coordinate | |
scratch_dir | str | directory for preserve gamma intermediate files | |
lat_zarr | str | output, latitude zarr | |
lon_zarr | str | output, longitude zarr | |
hgt_zarr | str | output, height zarr | |
chunks | tuple | (1000, 1000) | rslc chunk size |
= '../../data/gamma/geocoding/20210802.diff_par'
diff_par = '../../data/gamma/rslc/20220620.rslc.par'
rslc_par = '../../data/gamma/DEM/dem_seg_par'
dem_par = '../../data/gamma/geocoding/20210802.hgt'
hgt = './raw/scratch'
scratch_dir = './raw/lat.zarr'
lat_zarr = './raw/lon.zarr'
lon_zarr = './raw/hgt.zarr' hgt_zarr
An example:
=(1000,1000)) load_gamma_lat_lon_hgt(diff_par,rslc_par,dem_par,hgt,scratch_dir,lat_zarr,lon_zarr,hgt_zarr,chunks
2025-06-24 21:39:37 - log_args - INFO - running function: load_gamma_lat_lon_hgt
2025-06-24 21:39:37 - log_args - INFO - fetching args:
2025-06-24 21:39:37 - log_args - INFO - diff_par = '../../data/gamma/geocoding/20210802.diff_par'
2025-06-24 21:39:37 - log_args - INFO - rslc_par = '../../data/gamma/rslc/20220620.rslc.par'
2025-06-24 21:39:37 - log_args - INFO - dem_par = '../../data/gamma/DEM/dem_seg_par'
2025-06-24 21:39:37 - log_args - INFO - hgt = '../../data/gamma/geocoding/20210802.hgt'
2025-06-24 21:39:37 - log_args - INFO - scratch_dir = './raw/scratch'
2025-06-24 21:39:37 - log_args - INFO - lat_zarr = './raw/lat.zarr'
2025-06-24 21:39:37 - log_args - INFO - lon_zarr = './raw/lon.zarr'
2025-06-24 21:39:37 - log_args - INFO - hgt_zarr = './raw/hgt.zarr'
2025-06-24 21:39:37 - log_args - INFO - chunks = (1000, 1000)
2025-06-24 21:39:37 - log_args - INFO - fetching args done.
2025-06-24 21:39:37 - load_gamma_lat_lon_hgt - INFO - image shape: (2500,1834)
2025-06-24 21:39:37 - load_gamma_lat_lon_hgt - INFO - run gamma command to generate longitude, latitude and height:
2025-06-24 21:39:37 - load_gamma_lat_lon_hgt - INFO - run command: mkgrid raw/scratch/plist 1834 2500 1 1 >> raw/scratch/gamma.log
2025-06-24 21:39:37 - load_gamma_lat_lon_hgt - INFO - gamma command finished.
2025-06-24 21:39:37 - load_gamma_lat_lon_hgt - INFO - run command: pt2geo raw/scratch/plist - ../../data/gamma/rslc/20220620.rslc.par - ../../data/gamma/geocoding/20210802.hgt ../../data/gamma/DEM/dem_seg_par ../../data/gamma/geocoding/20210802.diff_par 1 1 - - raw/scratch/plat_lon raw/scratch/phgt_wgs84 >> raw/scratch/gamma.log
2025-06-24 21:39:52 - load_gamma_lat_lon_hgt - INFO - gamma command finished.
2025-06-24 21:39:52 - load_gamma_lat_lon_hgt - INFO - writing zarr file.
2025-06-24 21:39:52 - load_gamma_lat_lon_hgt - INFO - write done.
= zarr.open(lon_zarr,mode='r')[:]
lon_data = zarr.open(lat_zarr,mode='r')[:]
lat_data = zarr.open(hgt_zarr,mode='r')[:] hgt_data
= plt.subplots(1,3,figsize=(16,5))
fig,axes = axes[0].imshow(lon_data)
im0 0].set_title('Longitude')
axes[=axes[0])
fig.colorbar(im0, ax= axes[1].imshow(lat_data)
im1 1].set_title('Latitude')
axes[=axes[1])
fig.colorbar(im1, ax= axes[2].imshow(hgt_data)
im2 2].set_title('Height')
axes[=axes[2])
fig.colorbar(im2, ax fig.show()
load_gamma_look_vector
load_gamma_look_vector (theta:str, phi:str, lt:str, rslc_par:str, dem_par:str, scratch_dir:str, theta_zarr:str, phi_zarr:str, chunks:tuple[int,int]=(1000, 1000))
Load look vector (elevation angle and orientation angle) in map geometry from gamma binary format to look vector in radar geometry zarr file. The two input data should be generated with the look_vector
gamma command. All data equal to 0 are replaced with nan.
Type | Default | Details | |
---|---|---|---|
theta | str | elevation angle | |
phi | str | orientation angle | |
lt | str | lookup table | |
rslc_par | str | par file of the reference rslc | |
dem_par | str | dem par | |
scratch_dir | str | directory for preserve gamma intermediate files | |
theta_zarr | str | output, elevation angle zarr | |
phi_zarr | str | output, orientation angle zarr | |
chunks | tuple | (1000, 1000) | rslc chunk size |
An example:
= '../../data/gamma/geocoding/20210802.lt_fine'
lt = '../../data/gamma/rslc/20220620.rslc.par'
rslc_par = '../../data/gamma/DEM/dem_seg_par'
dem_par = '../../data/gamma/geocoding/20210802.lv_theta'
theta = '../../data/gamma/geocoding/20210802.lv_phi'
phi = './raw/scratch'
scratch_dir = './raw/theta.zarr'
theta_zarr = './raw/phi.zarr' phi_zarr
=(1000,1000)) load_gamma_look_vector(theta,phi,lt,rslc_par,dem_par,scratch_dir,theta_zarr,phi_zarr,chunks
2025-06-24 21:39:54 - log_args - INFO - running function: load_gamma_look_vector
2025-06-24 21:39:54 - log_args - INFO - fetching args:
2025-06-24 21:39:54 - log_args - INFO - theta = '../../data/gamma/geocoding/20210802.lv_theta'
2025-06-24 21:39:54 - log_args - INFO - phi = '../../data/gamma/geocoding/20210802.lv_phi'
2025-06-24 21:39:54 - log_args - INFO - lt = '../../data/gamma/geocoding/20210802.lt_fine'
2025-06-24 21:39:54 - log_args - INFO - rslc_par = '../../data/gamma/rslc/20220620.rslc.par'
2025-06-24 21:39:54 - log_args - INFO - dem_par = '../../data/gamma/DEM/dem_seg_par'
2025-06-24 21:39:54 - log_args - INFO - scratch_dir = './raw/scratch'
2025-06-24 21:39:54 - log_args - INFO - theta_zarr = './raw/theta.zarr'
2025-06-24 21:39:54 - log_args - INFO - phi_zarr = './raw/phi.zarr'
2025-06-24 21:39:54 - log_args - INFO - chunks = (1000, 1000)
2025-06-24 21:39:54 - log_args - INFO - fetching args done.
2025-06-24 21:39:54 - load_gamma_look_vector - INFO - image shape: (2500,1834)
2025-06-24 21:39:54 - load_gamma_look_vector - INFO - run gamma command to generate elevation angle in range doppler coordinate:
2025-06-24 21:39:54 - load_gamma_look_vector - INFO - run command: geocode ../../data/gamma/geocoding/20210802.lt_fine ../../data/gamma/geocoding/20210802.lv_theta 5741 raw/scratch/theta_rdc 1834 2500 >> raw/scratch/gamma.log
2025-06-24 21:39:55 - load_gamma_look_vector - INFO - gamma command finished.
2025-06-24 21:39:55 - load_gamma_look_vector - INFO - writing data.
2025-06-24 21:39:55 - load_gamma_look_vector - INFO - run gamma command to generate orientation angle in range doppler coordinate:
2025-06-24 21:39:55 - load_gamma_look_vector - INFO - run command: geocode ../../data/gamma/geocoding/20210802.lt_fine ../../data/gamma/geocoding/20210802.lv_phi 5741 raw/scratch/phi_rdc 1834 2500 >> raw/scratch/gamma.log
2025-06-24 21:39:57 - load_gamma_look_vector - INFO - gamma command finished.
2025-06-24 21:39:57 - load_gamma_look_vector - INFO - writing data.
2025-06-24 21:39:57 - load_gamma_look_vector - INFO - Done.
= zarr.open(theta_zarr,mode='r')[:]
theta_data = zarr.open(phi_zarr,mode='r')[:]
phi_data # theta_data[theta_data==0] = np.nan
# phi_data[phi_data==0] = np.nan
= plt.subplots(1,2,figsize=(11,5))
fig,axes = axes[0].imshow(np.rad2deg(theta_data))
im0 0].set_title('Elevation angle')
axes[=axes[0])
fig.colorbar(im0, ax= axes[1].imshow(np.rad2deg(phi_data))
im1 1].set_title('Orientation anlge')
axes[=axes[1])
fig.colorbar(im1, ax fig.show()
load_gamma_range
load_gamma_range (rslc_par:str, range_zarr:str, chunks:tuple[int,int]=(1000, 1000))
Generate slant range distance and save to zarr.
Type | Default | Details | |
---|---|---|---|
rslc_par | str | par file of one rslc | |
range_zarr | str | output, range distance zarr | |
chunks | tuple | (1000, 1000) | rslc chunk size |
An example:
= '../../data/gamma/rslc/20220620.rslc.par'
rslc_par = './raw/range.zarr' range_zarr
load_gamma_range(rslc_par,range_zarr)
2025-06-24 21:39:58 - log_args - INFO - running function: load_gamma_range
2025-06-24 21:39:58 - log_args - INFO - fetching args:
2025-06-24 21:39:58 - log_args - INFO - rslc_par = '../../data/gamma/rslc/20220620.rslc.par'
2025-06-24 21:39:58 - log_args - INFO - range_zarr = './raw/range.zarr'
2025-06-24 21:39:58 - log_args - INFO - chunks = (1000, 1000)
2025-06-24 21:39:58 - log_args - INFO - fetching args done.
2025-06-24 21:39:58 - load_gamma_range - INFO - image shape: (2500,1834)
2025-06-24 21:39:58 - load_gamma_range - INFO - Calculating slant range distance.
2025-06-24 21:39:58 - load_gamma_range - INFO - writing data.
2025-06-24 21:39:58 - load_gamma_range - INFO - Done.
= zarr.open(range_zarr,mode='r')[:]
range_data
plt.imshow(range_data)
plt.colorbar()"Slant range distance")
plt.title( plt.show()
load_gamma_metadata
load_gamma_metadata (rslc_dir:str, dem_par:str, reference:str, meta_file:str)
Load necessary metadata into a toml file.
Type | Details | |
---|---|---|
rslc_dir | str | gamma rslc directory, the name of the rslc and their par files should be ‘????????.rslc’ and ‘????????.rslc.par’ |
dem_par | str | dem par |
reference | str | reference date, eg: ‘20200202’ |
meta_file | str | output, text toml file for meta data |
An example:
= '../../data/gamma/rslc'
rslc_dir = '../../data/gamma/DEM/dem_seg_par'
dem_par = '20220620'
reference = './raw/meta.toml' meta_file
load_gamma_metadata(rslc_dir,dem_par,reference,meta_file)
2025-06-24 21:39:58 - log_args - INFO - running function: load_gamma_metadata
2025-06-24 21:39:58 - log_args - INFO - fetching args:
2025-06-24 21:39:58 - log_args - INFO - rslc_dir = '../../data/gamma/rslc'
2025-06-24 21:39:58 - log_args - INFO - dem_par = '../../data/gamma/DEM/dem_seg_par'
2025-06-24 21:39:58 - log_args - INFO - reference = '20220620'
2025-06-24 21:39:58 - log_args - INFO - meta_file = './raw/meta.toml'
2025-06-24 21:39:58 - log_args - INFO - fetching args done.
2025-06-24 21:39:58 - load_gamma_metadata - INFO - fetching slc related metadata.
2025-06-24 21:39:58 - load_gamma_metadata - INFO - Fetching heading angle
2025-06-24 21:39:58 - load_gamma_metadata - INFO - Fetching range pixel spacing
2025-06-24 21:39:58 - load_gamma_metadata - INFO - fetching azimuth pixel spacing
2025-06-24 21:39:58 - load_gamma_metadata - INFO - Fetching randar wavelength
2025-06-24 21:39:58 - load_gamma_metadata - INFO - fetching dem related metadata
2025-06-24 21:39:58 - load_gamma_metadata - INFO - Run gamma command to calculate baseline:
2025-06-24 21:39:58 - load_gamma_metadata - INFO - run command: base_calc /tmp/tmp7n9c0238/slc_tab ../../data/gamma/rslc/20220620.rslc.par /tmp/tmp7n9c0238/bperp /tmp/tmp7n9c0238/itab - > /tmp/tmp7n9c0238/log
2025-06-24 21:39:58 - load_gamma_metadata - INFO - gamma command finished.
2025-06-24 21:39:58 - load_gamma_metadata - INFO - All meta data:
dates = [ "20210802", "20210816", "20210830", "20210913", "20211011", "20211025", "20220606", "20220620", "20220704", "20220718", "20220801", "20220815", "20220829", "20220912", "20220926", "20221010", "20221024",]
radar_wavelength = 0.24245249210715603
range_pixel_spacing = 4.29054
azimuth_pixel_spacing = 3.740105
lonlat_bbox = [ -148.2606018, 61.099475398661994, -147.89598577255998, 61.2183333,]
merca_bbox = [ -16504294.694782883, 8648700.085300261, -16463705.824278845, 8676129.004166307,]
perpendicular_baseline = [ -97.61360168457031, -45.58580017089844, 17.86680030822754, -26.258899688720703, -63.72420120239258, -56.363399505615234, 64.75759887695312, 0.0, -9.043999671936035, -13.02869987487793, -112.94960021972656, -86.09490203857422, -129.9635009765625, -127.6594009399414, -182.29519653320312, -129.735107421875, -184.31100463867188,]
2025-06-24 21:39:58 - load_gamma_metadata - INFO - writing data in toml file.
2025-06-24 21:39:58 - load_gamma_metadata - INFO - Done.
with open(meta_file,'r') as f:
= toml.load(f) meta_read
meta_read
{'dates': ['20210802',
'20210816',
'20210830',
'20210913',
'20211011',
'20211025',
'20220606',
'20220620',
'20220704',
'20220718',
'20220801',
'20220815',
'20220829',
'20220912',
'20220926',
'20221010',
'20221024'],
'radar_wavelength': 0.24245249210715603,
'range_pixel_spacing': 4.29054,
'azimuth_pixel_spacing': 3.740105,
'lonlat_bbox': [-148.2606018,
61.099475398661994,
-147.89598577255998,
61.2183333],
'merca_bbox': [-16504294.694782883,
8648700.085300261,
-16463705.824278845,
8676129.004166307],
'perpendicular_baseline': [-97.61360168457031,
-45.58580017089844,
17.86680030822754,
-26.258899688720703,
-63.72420120239258,
-56.363399505615234,
64.75759887695312,
0.0,
-9.043999671936035,
-13.02869987487793,
-112.94960021972656,
-86.09490203857422,
-129.9635009765625,
-127.6594009399414,
-182.29519653320312,
-129.735107421875,
-184.31100463867188]}