Example #1
0
def _load_area_def(dsid, file_handlers):
    """Load the area definition of *dsid*."""
    area_defs = [fh.get_area_def(dsid) for fh in file_handlers]
    area_defs = [area_def for area_def in area_defs if area_def is not None]

    final_area = StackedAreaDefinition(*area_defs)
    return final_area.squeeze()
Example #2
0
    def _load_area_def(self, dsid, file_handlers):
        """Load the area definition of *dsid*."""
        area_defs = [fh.get_area_def(dsid) for fh in file_handlers]
        area_defs = [area_def for area_def in area_defs
                     if area_def is not None]

        final_area = StackedAreaDefinition(*area_defs)
        return final_area.squeeze()
Example #3
0
def _stack_area_defs(area_def_dict):
    """Stack given dict of area definitions and return a StackedAreaDefinition."""
    area_defs = [area_def_dict[area_def] for
                 area_def in sorted(area_def_dict.keys())
                 if area_def is not None]

    area_def = StackedAreaDefinition(*area_defs)
    area_def = area_def.squeeze()

    return area_def
Example #4
0
def _sunz_stacked_area_def():
    """Get fake stacked area for testing sunz generation."""
    area1 = AreaDefinition('test', 'test', 'test', {'proj': 'merc'}, 2, 1,
                           (-2000, 0, 2000, 2000))
    area2 = AreaDefinition('test', 'test', 'test', {'proj': 'merc'}, 2, 1,
                           (-2000, -2000, 2000, 0))
    return StackedAreaDefinition(area1, area2)
Example #5
0
def _angle_cache_stacked_area_def():
    area1 = AreaDefinition(
        "test", "", "",
        {"proj": "merc"},
        5, 2,
        (2500, 500, 7500, 2500),
    )
    area2 = AreaDefinition(
        "test", "", "",
        {"proj": "merc"},
        5, 3,
        (2500, -2500, 7500, 500),
    )
    return StackedAreaDefinition(area1, area2)
Example #6
0
def _get_new_flipped_area_definition(dataset_area_attr, area_extents_to_update, flip_areadef_stacking):
    """Get a new area definition with updated area_extents for flipped geostationary datasets."""
    if len(area_extents_to_update) == 1:
        # just update the area extents using the AreaDefinition copy method
        new_area_def = dataset_area_attr.copy(area_extent=area_extents_to_update[0])
    else:
        # update the stacked AreaDefinitions singularly
        new_area_defs_to_stack = []
        for n_area_def, area_def in enumerate(dataset_area_attr.defs):
            new_area_defs_to_stack.append(area_def.copy(area_extent=area_extents_to_update[n_area_def]))

        # flip the order of stacking if the area is upside down
        if flip_areadef_stacking:
            new_area_defs_to_stack = new_area_defs_to_stack[::-1]

        # regenerate the StackedAreaDefinition
        new_area_def = StackedAreaDefinition(*new_area_defs_to_stack)

    return new_area_def
Example #7
0
    def test_load_dataset_with_area_for_stacked_areas(self, ldwa):
        """Test _load_dataset_with_area() for stacked area definitions."""
        import xarray as xr
        import numpy as np
        from pyresample.geometry import AreaDefinition, StackedAreaDefinition
        from satpy.readers.yaml_reader import GEOFlippableFileYAMLReader

        reader = GEOFlippableFileYAMLReader()

        dsid = MagicMock()
        coords = MagicMock()

        # create a dummy upright xarray
        original_area_extents = [(-1500, -1000, 1500, 1000),
                                 (3000, 5000, 7000, 8000)]
        original_array = np.arange(12).reshape((4, 3))

        area_def0 = AreaDefinition(
            'test',
            'test',
            'test',
            {
                'proj': 'geos',
                'h': 35785831,
                'type': 'crs'
            },
            3,
            2,
            original_area_extents[0],
        )
        area_def1 = area_def0.copy(area_extent=original_area_extents[1])

        dummy_ds_xr = xr.DataArray(
            original_array,
            dims=('y', 'x'),
            attrs={'area': StackedAreaDefinition(area_def0, area_def1)})

        # check that left-right image is flipped correctly
        dummy_ds_xr.attrs['area'].defs[0] = area_def0.copy(area_extent=(1500,
                                                                        -1000,
                                                                        -1500,
                                                                        1000))
        dummy_ds_xr.attrs['area'].defs[1] = area_def1.copy(area_extent=(7000,
                                                                        5000,
                                                                        3000,
                                                                        8000))
        ldwa.return_value = dummy_ds_xr.copy()
        res = reader._load_dataset_with_area(dsid, coords, 'NE')
        np.testing.assert_equal(res.values, np.fliplr(original_array))
        np.testing.assert_equal(res.attrs['area'].defs[0].area_extent,
                                original_area_extents[0])
        np.testing.assert_equal(res.attrs['area'].defs[1].area_extent,
                                original_area_extents[1])

        # check that upside down image is flipped correctly
        dummy_ds_xr.attrs['area'].defs[0] = area_def0.copy(area_extent=(-1500,
                                                                        1000,
                                                                        1500,
                                                                        -1000))
        dummy_ds_xr.attrs['area'].defs[1] = area_def1.copy(area_extent=(3000,
                                                                        8000,
                                                                        7000,
                                                                        5000))
        ldwa.return_value = dummy_ds_xr.copy()
        res = reader._load_dataset_with_area(dsid, coords, 'NE')
        np.testing.assert_equal(res.values, np.flipud(original_array))
        # note that the order of the stacked areadefs is flipped here, as expected
        np.testing.assert_equal(res.attrs['area'].defs[1].area_extent,
                                original_area_extents[0])
        np.testing.assert_equal(res.attrs['area'].defs[0].area_extent,
                                original_area_extents[1])