From eb5790a884cf9adf111d90ad3d08cc6ed1b1ac1b Mon Sep 17 00:00:00 2001 From: Scott Staniewicz Date: Wed, 21 Jul 2021 00:59:00 -0500 Subject: [PATCH] Speed up baselineGrid.py and cut prints (#314) * track the prev guess in `geo2rdr`, break after convergence * create doppler Poly once, avoid prints Orbit.geo2rdr creates a poly, which prints "Polynomial Order: 0 - by - 0" each time --- components/isceobj/Orbit/Orbit.py | 8 ++++++-- contrib/stack/stripmapStack/baselineGrid.py | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/components/isceobj/Orbit/Orbit.py b/components/isceobj/Orbit/Orbit.py index e3cdc1f..dcaafd1 100644 --- a/components/isceobj/Orbit/Orbit.py +++ b/components/isceobj/Orbit/Orbit.py @@ -1003,7 +1003,6 @@ class Orbit(Component): Takes a lat, lon, height triplet and returns azimuth time and range. Assumes zero doppler for now. ''' - from isceobj.Planet.Planet import Planet from isceobj.Util.Poly2D import Poly2D if doppler is None: @@ -1021,6 +1020,8 @@ class Orbit(Component): delta = (self.maxTime - self.minTime).total_seconds() * 0.5 tguess = self.minTime + datetime.timedelta(seconds = delta) outOfBounds = False + # Start the previous guess tracking with dummy value + t_prev_guess = tguess + datetime.timedelta(seconds=10) for ii in range(51): try: sv = self.interpolateOrbit(tguess, method='hermite') @@ -1045,11 +1046,14 @@ class Orbit(Component): fnprime = c1 + c2 * dopfact tguess = tguess - datetime.timedelta(seconds = fn/fnprime) + if abs(tguess - t_prev_guess).total_seconds() < 5e-9: + break + else: + t_prev_guess = tguess if outOfBounds: raise Exception('Interpolation time out of bounds') - return tguess, rng diff --git a/contrib/stack/stripmapStack/baselineGrid.py b/contrib/stack/stripmapStack/baselineGrid.py index d8cb0c0..2959e4d 100755 --- a/contrib/stack/stripmapStack/baselineGrid.py +++ b/contrib/stack/stripmapStack/baselineGrid.py @@ -52,6 +52,7 @@ def main(iargs=None): ''' inps=cmdLineParse(iargs) from isceobj.Planet.Planet import Planet + from isceobj.Util.Poly2D import Poly2D import numpy as np import shelve @@ -101,6 +102,8 @@ def main(iargs=None): nAzimuth = int(np.max([30,int(np.ceil(azimuthLimits))])) azimuthTime = [mSensingStart + datetime.timedelta(seconds= x * azimuthLimits/(nAzimuth-1.0)) for x in range(nAzimuth)] + doppler = Poly2D() + doppler.initPoly(azimuthOrder=0, rangeOrder=0, coeffs=[[0.]]) Bperp = np.zeros((nAzimuth,nRange), dtype=np.float32) Bpar = np.zeros((nAzimuth,nRange), dtype=np.float32) @@ -123,7 +126,7 @@ def main(iargs=None): target = mOrb.rdr2geo(taz, rng) targxyz = np.array(refElp.LLH(target[0], target[1], target[2]).ecef().tolist()) - slvTime,slvrng = sOrb.geo2rdr(target) + slvTime, slvrng = sOrb.geo2rdr(target, doppler=doppler, wvl=0) secondarySV = sOrb.interpolateOrbit(slvTime, method='hermite')