Source code for satpy.readers.meris_nc_sen3

# Copyright (c) 2021 Satpy developers
#
# This file is part of satpy.
#
# satpy is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# satpy is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# satpy.  If not, see <http://www.gnu.org/licenses/>.
"""ENVISAT MERIS reader.

Sentinel 3 like format: https://earth.esa.int/eogateway/documents/20142/37627/MERIS-Sentinel-3-Like-L1-andL2-PFS.pdf

Default:
    scn = Scene(filenames=my_files, reader='meris_nc_sen3')

References:
    - :func:`xarray.open_dataset`
"""

import logging
from functools import reduce

import numpy as np

from satpy.readers.olci_nc import NCOLCI2, BitFlags, NCOLCIAngles, NCOLCIBase, NCOLCIMeteo

logger = logging.getLogger(__name__)


[docs] class NCMERISCal(NCOLCIBase): """Dummy class for calibration.""" def __init__(self, filename, filename_info, filetype_info): """Init the meris reader base.""" super(NCMERISCal, self).__init__(filename, filename_info, filetype_info) self.sensor = 'meris'
[docs] class NCMERISGeo(NCOLCIBase): """Dummy class for navigation.""" def __init__(self, filename, filename_info, filetype_info): """Init the meris reader base.""" super(NCMERISGeo, self).__init__(filename, filename_info, filetype_info) self.sensor = 'meris'
[docs] class NCMERIS2(NCOLCI2): """File handler for MERIS l2.""" def __init__(self, filename, filename_info, filetype_info): """Init the file handler.""" super(NCMERIS2, self).__init__(filename, filename_info, filetype_info) self.sensor = 'meris' self.reflectance_prefix = 'M' self.reflectance_suffix = '_rho_w'
[docs] def getbitmask(self, wqsf, items=None): """Get the bitmask. Experimental default mask.""" items = items or ['SEA_ICE', 'MEGLINT', 'HIGHGLINT', 'HAZE_OVER_WATER', 'WHITECAPS', 'AC_FAIL', 'WHITE_SCATT', 'LOWRW', 'HIGHRW', 'OUT_OF_RANGE_AAC', 'OUT_OF_SCOPE_AAC', 'OUT_OF_RANGE_OC_NN', 'OUT_OF_SCOPE_OC_NN', 'OUT_OF_RANGE_CHL_OC4ME_INPUT', 'OUT_OF_RANGE_CHL_OC4ME'] bflags = BitFlags( wqsf, flag_list=['SEA_ICE', 'MEGLINT', 'HIGHGLINT', 'CASE2_S', 'CASE2_ANOM', 'HAZE_OVER_WATER', 'WHITECAPS', 'AC_FAIL', 'BPAC_ON', 'WHITE_SCATT', 'LOWRW', 'HIGHRW', 'OUT_OF_RANGE_AAC', 'OUT_OF_SCOPE_AAC', 'OUT_OF_RANGE_OC_NN', 'OUT_OF_SCOPE_OC_NN', 'OUT_OF_RANGE_CHL_OC4ME_INPUT', 'OUT_OF_RANGE_CHL_OC4ME'], ) return reduce(np.logical_or, [bflags[item] for item in items])
[docs] class NCMERISAngles(NCOLCIAngles): """File handler for the MERIS angles.""" def __init__(self, filename, filename_info, filetype_info): """Init the file handler.""" super(NCMERISAngles, self).__init__(filename, filename_info, filetype_info) self.sensor = 'meris'
[docs] class NCMERISMeteo(NCOLCIMeteo): """File handler for the MERIS meteo data.""" def __init__(self, filename, filename_info, filetype_info): """Init the file handler.""" super(NCMERISMeteo, self).__init__(filename, filename_info, filetype_info) self.sensor = 'meris'