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
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
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)
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
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)
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)
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)