def test_merge_values(self):
        from c2cgeoportal_geoportal.lib.wmstparsing import parse_extent, TimeExtentValue

        e1 = parse_extent(["2000", "2005"], "2000/2005")
        e2 = parse_extent(["2001", "2003"], "2001/2003")
        self.assertTrue(isinstance(e1, TimeExtentValue))
        self.assertTrue(isinstance(e2, TimeExtentValue))
        e1.merge(e2)
        d = e1.to_dict()
        self.assertEqual(
            d,
            {
                "minValue":
                "2000-01-01T00:00:00Z",
                "maxValue":
                "2005-01-01T00:00:00Z",
                "resolution":
                "year",
                "values": [
                    "2000-01-01T00:00:00Z",
                    "2001-01-01T00:00:00Z",
                    "2003-01-01T00:00:00Z",
                    "2005-01-01T00:00:00Z",
                ],
                "minDefValue":
                "2000-01-01T00:00:00Z",
                "maxDefValue":
                "2005-01-01T00:00:00Z",
            },
        )
    def test_merge_value_interval(self):
        from c2cgeoportal_geoportal.lib.wmstparsing import parse_extent

        tev = parse_extent(["2000", "2001"], "2000")
        tei = parse_extent(["2000/2010/P1Y"], "2002")
        self.assertRaises(ValueError, tev.merge, tei)
        self.assertRaises(ValueError, tei.merge, tev)
Beispiel #3
0
    def _merge_time(time_, layer_theme, layer, wms):
        errors = set()
        wmslayer = layer.layer
        try:
            if wmslayer in wms["layers"]:
                wms_layer_obj = wms["layers"][wmslayer]

                if layer.time_mode != "disabled":
                    if wms_layer_obj["timepositions"]:
                        extent = parse_extent(
                            wms_layer_obj["timepositions"],
                            wms_layer_obj["defaulttimeposition"])
                        time_.merge(layer_theme, extent, layer.time_mode,
                                    layer.time_widget)
                    else:
                        errors.add(
                            "Error: time layer '{}' has no time information in capabilities"
                            .format(layer.name))

                for child_layer_name in wms_layer_obj["children"]:
                    child_layer = wms["layers"][child_layer_name]
                    if child_layer["timepositions"]:
                        extent = parse_extent(
                            child_layer["timepositions"],
                            child_layer["defaulttimeposition"])
                        # The time mode comes from the layer group
                        time_.merge(layer_theme, extent, layer.time_mode,
                                    layer.time_widget)

        except ValueError:  # pragma no cover
            errors.add("Error while handling time for layer '{}': {}".format(
                layer.name,
                sys.exc_info()[1]))

        return errors
 def test_merge_interval(self):
     from c2cgeoportal_geoportal.lib.wmstparsing import parse_extent, TimeExtentInterval
     e1 = parse_extent(["2000/2005/P1Y"], "2000/2005")
     e2 = parse_extent(["2006/2010/P1Y"], "2006/2010")
     self.assertTrue(isinstance(e1, TimeExtentInterval))
     self.assertTrue(isinstance(e2, TimeExtentInterval))
     e1.merge(e2)
     d = e1.to_dict()
     self.assertEqual(d, {
         "minValue": "2000-01-01T00:00:00Z",
         "maxValue": "2010-01-01T00:00:00Z",
         "resolution": "year",
         "interval": (1, 0, 0, 0),
         "minDefValue": "2000-01-01T00:00:00Z",
         "maxDefValue": "2010-01-01T00:00:00Z",
     })
    def test_parse_interval(self):
        from c2cgeoportal_geoportal.lib.wmstparsing import parse_extent, TimeExtentInterval

        extent = parse_extent(["2000/2005/P1Y"], "2002")
        self.assertTrue(isinstance(extent, TimeExtentInterval))
    def test_parse_values(self):
        from c2cgeoportal_geoportal.lib.wmstparsing import parse_extent, TimeExtentValue

        extent = parse_extent(["2005", "2006"], "2005")
        self.assertTrue(isinstance(extent, TimeExtentValue))
    def test_merge_different_intervals(self):
        from c2cgeoportal_geoportal.lib.wmstparsing import parse_extent

        e1 = parse_extent(["2000/2005/P1Y"], "2002")
        e2 = parse_extent(["2006/2010/P1M"], "2002")
        self.assertRaises(ValueError, e1.merge, e2)
Beispiel #8
0
 def merge_time(wms_layer_obj: Dict[str, Any]) -> None:
     extent = parse_extent(wms_layer_obj["timepositions"], wms_layer_obj["defaulttimeposition"])
     time_.merge(layer_theme, extent, layer.time_mode, layer.time_widget)