Ok, here is what I came up with for AMSU-A (based entirely on Martins code, full example script attached):
def amsua(scans_nb):
scan_len = 30 # 30 samples per scan
scan_rate = 8 # single scan, seconds
scan_angle = -48.3 # swath, degrees
sampling_interval = 0.2 # single view, seconds
sync_time = 0.00355 # delay before the scan starts, seconds
# build the instrument
samples = np.vstack(((scan_points - (scan_len*0.5-0.5)) / (scan_len*0.5) * np.deg2rad(scan_angle),
np.zeros((len(scan_points),)))).transpose()
samples = np.tile(samples, [scans_nb, 1])
# building the corresponding times array
offset = np.arange(scans_nb) * scan_rate
times = (np.tile(scan_points * sampling_interval + sync_time , [scans_nb, 1])
+ np.expand_dims(offset, 1))
return ScanGeometry(samples, times.ravel())
Numbers come from the NOAA KLM guide. Haven't really tested it against any reference yet, so please don't be surprised if it's not very precise.
AMSU-B should be very similar except that it scans three times faster than AMSU-A.
Regards,
Mikhail