@@ -468,6 +468,14 @@ def delete_safely(filename):
468
468
pass
469
469
470
470
471
+ def get_range_deramp (grid : isce .product .RadarGridParameters ) -> np .ndarray :
472
+ """Compute the phase ramp required to shift a backprojected grid to
473
+ baseband in range.
474
+ """
475
+ r = grid .starting_range + grid .range_pixel_spacing * np .arange (grid .width )
476
+ return np .exp (- 1j * 4 * np .pi / grid .wavelength * r )
477
+
478
+
471
479
def focus (runconfig ):
472
480
# Strip off two leading namespaces.
473
481
cfg = runconfig .runconfig .groups
@@ -643,6 +651,8 @@ def temp(suffix):
643
651
if not cfg .processing .is_enabled .azcomp :
644
652
continue
645
653
654
+ deramp = get_range_deramp (ogrid [frequency ])
655
+
646
656
for i in range (0 , ogrid [frequency ].length , na ):
647
657
# h5py doesn't follow usual slice rules, raises exception
648
658
# if dest_sel slices extend past dataset shape.
@@ -658,6 +668,7 @@ def temp(suffix):
658
668
kernel , atmos , vars (cfg .processing .azcomp .rdr2geo ),
659
669
vars (cfg .processing .azcomp .geo2rdr ))
660
670
log .debug (f"max(abs(z)) = { np .max (np .abs (z ))} " )
671
+ z *= deramp [None , j :jmax ]
661
672
zf = to_complex32 (scale * z )
662
673
acdata .write_direct (zf , dest_sel = block )
663
674
0 commit comments