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"