def fews_symbol_name(
    jdbc_source, filterkey, locationkey, parameterkey, nodata=False,
    styles=None, lookup=None):
    """
    Find fews symbol name.
    Copied from lizard_fewsunblobbed.
    """

    # determine icon layout by looking at filter.id
    # style_name = 'adf'
    # if str(filterkey) in LAYER_STYLES:
    #     icon_style = copy.deepcopy(LAYER_STYLES[str(filterkey)])
    # else:
    #     icon_style = copy.deepcopy(LAYER_STYLES['default'])

    style_name, icon_style = IconStyle.style(
        jdbc_source, filterkey, locationkey, parameterkey, styles, lookup)

    #make icon grey
    if nodata:
        icon_style['color'] = (0.9, 0.9, 0.9, 0)

    # apply icon layout using symbol manager
    symbol_manager = SymbolManager(
        ICON_ORIGINALS,
        os.path.join(settings.MEDIA_ROOT, 'generated_icons'))
    output_filename = symbol_manager.get_symbol_transformed(
        icon_style['icon'], **icon_style)

    return style_name, output_filename
Exemple #2
0
def fews_symbol_name(jdbc_source, filterkey, locationkey, parameterkey,
                     nodata=False, styles=None, lookup=None):
    """
    Find fews symbol name.
    Copied from lizard_fewsunblobbed.
    """

    if isinstance(jdbc_source, JdbcSource):
        style_name, icon_style = IconStyle.style(
            jdbc_source, filterkey, locationkey, parameterkey, styles, lookup)
    else:
        style_name, icon_style = IconStyleWebRS.style(
            jdbc_source, filterkey, locationkey, parameterkey, styles, lookup)

    #make icon grey
    if nodata:
        icon_style['color'] = (0.9, 0.9, 0.9, 0)

    # apply icon layout using symbol manager
    symbol_manager = SymbolManager(
        ICON_ORIGINALS,
        os.path.join(settings.MEDIA_ROOT, 'generated_icons'))
    output_filename = symbol_manager.get_symbol_transformed(
        icon_style['icon'], **icon_style)

    return style_name, output_filename
Exemple #3
0
    def test_empty(self):
        """Do not crash when no iconstyles are available, just return default.
        """

        expected = (
            '::::::',
            {'icon': 'meetpuntPeil.png', 'mask': ('meetpuntPeil_mask.png', ),
             'color': (0.0, 0.5, 1.0, 1.0)})

        jdbc_source = JdbcSource.objects.all()[0]
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filterx', 'loc1', 'par1'),
            expected)
Exemple #4
0
    def test_styles(self):
        """See if styles() output correspond to database contents.
        """
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='', fews_parameter='',
                  icon='icon.png', mask='mask.png', color='ff00ff').save()

        expected = {
            '::::::':
            {'icon': 'icon.png', 'mask': ('mask.png', ),
             'color': (1.0, 0.0, 1.0, 1.0)}}

        self.assertEqual(IconStyle._styles(), expected)
    def layer(self, layer_ids=None, webcolor=None, request=None):
        """Return layer and styles that render points.

        """
        layers = []
        styles = {}
        layer = mapnik.Layer("FEWS JDBC points layer", coordinates.WGS84)

        layer.datasource = mapnik.PointDatasource()

        try:
            named_locations = self._locations()
        except FewsJdbcQueryError:
            logger.exception('Problem querying locations from jdbc2ei.')
            return [], {}

        fews_styles, fews_style_lookup = IconStyle._styles_lookup()

        logger.debug("Number of point objects: %d" % len(named_locations))
        for named_location in named_locations:
            #logger.debug('layer coordinates %s %s %s' % (
            #        named_location['locationid'],
            #        named_location['longitude'],
            #        named_location['latitude']))

            point_style_name, point_style = fews_point_style(
                self.jdbc_source,
                self.filterkey,
                named_location['locationid'],
                self.parameterkey,
                nodata=False,
                styles=fews_styles,
                lookup=fews_style_lookup)

            # Put style in point, filters work on these styles.
            add_datasource_point(
                layer.datasource, named_location['longitude'],
                named_location['latitude'], 'style', str(point_style_name))

            # generate "unique" point style name and append to layer
            # if the same style occurs multiple times, it will overwrite old.
            style_name = str("Lizard-FewsJdbc::%s" % (point_style_name))
            styles[style_name] = point_style

        # Add all style names to the layer styles.
        for style_name in styles.keys():
            layer.styles.append(style_name)

        layers = [layer, ]
        return layers, styles
Exemple #6
0
    def test_not_found(self):
        """Do not crash when corresponding iconstyle is notavailable,
        just return default.
        """
        IconStyle(jdbc_source=None,
                  fews_filter='filter1', fews_location='', fews_parameter='',
                  icon='filter1.png', mask='mask.png', color='00ffff').save()

        expected = (
            '::::::',
            {'icon': 'meetpuntPeil.png', 'mask': ('meetpuntPeil_mask.png', ),
             'color': (0.0, 0.5, 1.0, 1.0)})

        jdbc_source = JdbcSource.objects.all()[0]
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filterx', 'loc1', 'par1'),
            expected)
Exemple #7
0
    def test_lookup(self):
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='', fews_parameter='',
                  icon='icon.png', mask='mask.png',
                  color='ff00ff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='filter1', fews_location='', fews_parameter='',
                  icon='filter1.png', mask='mask.png', color='ff00ff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='loc1',
                  fews_parameter='par1',
                  icon='loc1par1.png', mask='mask.png', color='00ffff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='loc1',
                  fews_parameter='',
                  icon='loc1.png', mask='mask.png', color='00ffff').save()

        expected = {
            # Level0: jdbc_source_id
            None: {
                # Level1: fews_filter
                None: {
                    # Level2: fews_location
                    None: {
                        # Level3: fews_parameter
                        None: '::::::'
                       },
                    'loc1': {
                        # Level3: fews_parameter
                        None: '::::loc1::',
                        'par1': '::::loc1::par1'
                       }
                    },
                'filter1': {
                    # Level2: fews_location
                    None: {
                        # Level3: fews_parameter
                        None: '::filter1::::'
                       }
                    }
                }
            }

        self.assertEqual(IconStyle._lookup(), expected)
Exemple #8
0
    def test_style(self):
        """See if style() output correspond to expected lookup.
        """
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='', fews_parameter='',
                  icon='icon.png', mask='mask.png', color='ff00ff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='filter1', fews_location='', fews_parameter='',
                  icon='filter1.png', mask='mask.png', color='00ffff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='par1', fews_parameter='',
                  icon='par1.png', mask='mask.png', color='00ffff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='filter1', fews_location='loc1',
                  fews_parameter='',
                  icon='loc1.png', mask='mask.png', color='00ffff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='filter1', fews_location='loc1',
                  fews_parameter='par1',
                  icon='par1.png', mask='mask.png', color='00ffff').save()
        IconStyle(jdbc_source=None,
                  fews_filter='', fews_location='loc1',
                  fews_parameter='par1',
                  icon='loc1par1.png', mask='mask.png', color='00ffff').save()

        jdbc_source = JdbcSource.objects.all()[0]

        expected1 = (
            '::::::',
            {'icon': 'icon.png', 'mask': ('mask.png', ),
             'color': (1.0, 0.0, 1.0, 1.0)})
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filterx', 'locy', 'parz'),
            expected1)
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filterx', 'locy', 'parz',
                            ignore_cache=True),
            expected1)

        expected2 = (
            '::filter1::::',
            {'icon': 'filter1.png', 'mask': ('mask.png', ),
             'color': (0.0, 1.0, 1.0, 1.0)})
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filter1', 'l', 'p'),
            expected2)
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filter1', 'l', 'p',
                            ignore_cache=True),
            expected2)

        expected3 = (
            '::filter1::loc1::',
            {'icon': 'loc1.png', 'mask': ('mask.png', ),
             'color': (0.0, 1.0, 1.0, 1.0)})
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filter1', 'loc1', 'p'),
            expected3)

        expected4 = (
            '::filter1::loc1::par1',
            {'icon': 'par1.png', 'mask': ('mask.png', ),
             'color': (0.0, 1.0, 1.0, 1.0)})
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filter1', 'loc1', 'par1'),
            expected4)

        expected5 = (
            '::::loc1::par1',
            {'icon': 'loc1par1.png', 'mask': ('mask.png', ),
             'color': (0.0, 1.0, 1.0, 1.0)})
        self.assertEqual(
            IconStyle.style(jdbc_source, 'filterx', 'loc1', 'par1'),
            expected5)