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
LT1AB
Scott Staniewicz 2021-07-21 00:59:00 -05:00 committed by GitHub
parent 85463f182a
commit eb5790a884
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -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

View File

@ -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')