Source code for sorts.radar.scans.fence

#!/usr/bin/env python

'''

'''

import numpy as np

from .scan import Scan

[docs]class Fence(Scan): '''General fence scan. '''
[docs] def __init__(self, azimuth = 0.0, min_elevation=30.0, dwell=0.2, num=20): super().__init__(coordinates='azelr') self._dwell = dwell self.num = num self.min_elevation = min_elevation self.azimuth = azimuth self._az = np.empty((num,), dtype=np.float64) self._el = np.linspace(min_elevation, 180-min_elevation, num=num, dtype=np.float64) inds_ = self._el > 90.0 self._az[inds_] = np.mod(self.azimuth + 180.0, 360.0) self._az[np.logical_not(inds_)] = self.azimuth self._el[inds_] = 180.0 - self._el[inds_]
[docs] def dwell(self, t=None): if t is None: return self._dwell else: if isinstance(t, float) or isinstance(t, int): return self._dwell else: return np.ones(t.shape, dtype=t.dtype)*self._dwell
[docs] def min_dwell(self): return self._dwell
[docs] def cycle(self): return self.num*self._dwell
[docs] def pointing(self, t): ind = (np.mod(t/self.cycle(), 1)*self.num).astype(np.int) if isinstance(t, float) or isinstance(t, int): shape = (3, ) else: shape = (3, len(t)) azelr = np.empty(shape, dtype=np.float64) azelr[0,...] = self._az[ind] azelr[1,...] = self._el[ind] azelr[2,...] = 1.0 return azelr