Skip to content
Snippets Groups Projects
Commit 23212bd3 authored by Bruce Flynn's avatar Bruce Flynn
Browse files

Script for writing VIIRS scan line byte sizes to netcdf

parent a1789f48
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
import numpy as np
import netCDF4
from edosl0util import jpssrdr
from edosl0util.headers import GROUP_CONTINUING, GROUP_LAST
def write_netcdf_file(destpath, scans, sizes):
dataset = netCDF4.Dataset(destpath, 'w')
dataset.createDimension('scan', size=len(scans))
dataset.createDimension('apid', size=len(sizes))
dataset.createVariable('time', 'u8', ('scan',))
dataset.createVariable('size', 'u8', ('apid', 'scan',))
dataset.createVariable('apid', 'u2', ('apid',))
dataset['time'][:] = np.array(list(scans))
apids = sorted(sizes.keys())
# assert len(apids) == 16, "Expected 16 apids, got {}".format(apids)
dat = np.array([sizes[a] for a in apids])
dataset['size'][:] = dat
dataset['apid'][:] = np.array(apids)
dataset.close()
def read_data_from_rdr(filepath):
# XXX: just get the VIIRS Science RDR for now
rdr = jpssrdr.rdr_datasets(filepath)['science'][0]
scans = set()
sizes = {}
for tracker, packet in rdr.packets():
apid = packet.apid
scan = tracker.obs_time
size = tracker.size
if apid not in sizes:
sizes[apid] = []
# Sum up sizes for packet groups
if packet.sequence_grouping in (GROUP_CONTINUING, GROUP_LAST):
sizes[apid][-1] += size
else:
sizes[apid].append(size)
scans.add(scan)
return scans, sizes
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('viirs_rdr')
args = parser.parse_args()
destpath = args.viirs_rdr + '.size.nc'
scans, sizes = read_data_from_rdr(args.viirs_rdr)
write_netcdf_file(destpath, scans, sizes)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment