Source code for polar2grid.readers.amsr2_l1b
#!/usr/bin/env python3
# encoding: utf-8
# Copyright (C) 2016-2021 Space Science and Engineering Center (SSEC),
# University of Wisconsin-Madison.
#
# This program 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.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
#
# This file is part of the polar2grid software package. Polar2grid takes
# satellite observation data, remaps it, and writes it to a file format for
# input into another program.
# Documentation: http://www.ssec.wisc.edu/software/polar2grid/
"""AMSR2 L1B files contain various parameters from the GCOM-W1 AMSR2 instrument.
This reader can be used by specifying the reader name
``amsr2_l1b`` to the ``polar2grid.sh`` script.
Supported files usually have the following naming scheme::
GW1AM2_201607201808_128A_L1DLBTBR_1110110.h5
This reader's default remapping algorithm is ``nearest`` for nearest
neighbor resampling due to the instruments scan pattern and swath shape.
The ``--distance_upper_bound`` flag defaults to 12.
Currently this reader provides only the following datasets:
+---------------------------+-----------------------------------------------------------+
| Product Name | Description |
+===========================+===========================================================+
| btemp_36.5v | Brightness Temperature 36.5GHz Polarization Vertical |
+---------------------------+-----------------------------------------------------------+
| btemp_36.5h | Brightness Temperature 36.5GHz Polarization Horizontal |
+---------------------------+-----------------------------------------------------------+
| btemp_89.0av | Brightness Temperature 89.0GHz A Polarization Vertical |
+---------------------------+-----------------------------------------------------------+
| btemp_89.0ah | Brightness Temperature 89.0GHz A Polarization Horizontal |
+---------------------------+-----------------------------------------------------------+
| btemp_89.0bv | Brightness Temperature 89.0GHz B Polarization Vertical |
+---------------------------+-----------------------------------------------------------+
| btemp_89.0bh | Brightness Temperature 89.0GHz B Polarization Horizontal |
+---------------------------+-----------------------------------------------------------+
Special AMSR2 Naval Research Lab (NRL) PNG Scaling
--------------------------------------------------
A common use case for the AMSR2 L1B reader is to generate PNG images similar
to those generated by the U.S. Naval Research Lab (NRL) with a colormap and
coastlines. This requires using an alternate non-default scaling configuration
provided in the tarball. It can be used by providing the
``--extra-config-path $POLAR2GRID_HOME/example_enhancements/amsr2_png``
flag when generating AMSR2 L1B GeoTIFFs. This allows the scaling provided
in the ``$POLAR2GRID_HOME/example_enhancements/amsr2_png/enhancements/generic.yaml``
file to be used. Once this rescaling has been done, colormap files can be
found in ``$POLAR2GRID_HOME/colormaps`` which can then be applied using the
the `add_colormap.sh` script.
See the example section :doc:`../../examples/amsr2_example`
for more information on generating these NRL-like PNGs.
"""
from __future__ import annotations
from argparse import ArgumentParser, _ArgumentGroup
from typing import Optional
from satpy import DataQuery
from ._base import ReaderProxyBase
DEFAULT_CHANNELS = [
# "btemp_10.7v",
# "btemp_10.7h",
"btemp_36.5v",
"btemp_36.5h",
"btemp_89.0av",
"btemp_89.0ah",
"btemp_89.0bv",
"btemp_89.0bh",
]
[docs]class ReaderProxy(ReaderProxyBase):
"""Provide Polar2Grid-specific information about this reader's products."""
is_polar2grid_reader = True
[docs] def get_default_products(self) -> list[str]:
"""Get products to load if users hasn't specified any others."""
return DEFAULT_CHANNELS
[docs] def get_all_products(self) -> list[str]:
"""Get all polar2grid products that could be loaded."""
return DEFAULT_CHANNELS
@property
def _aliases(self) -> dict[str, DataQuery]:
return {}
[docs]def add_reader_argument_groups(
parser: ArgumentParser, group: Optional[_ArgumentGroup] = None
) -> tuple[Optional[_ArgumentGroup], Optional[_ArgumentGroup]]:
"""Add reader-specific command line arguments to an existing argument parser.
If ``group`` is provided then arguments are added to this group. If not,
a new group is added to the parser and arguments added to this new group.
"""
if group is None:
group = parser.add_argument_group(title="AMSR2 L1B Reader")
return group, None