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 style(self): """Return mapnik point style. """ symbol_manager = SymbolManager( ICON_ORIGINALS, os.path.join(settings.MEDIA_ROOT, 'generated_icons')) icon = ICON_STYLE['icon'] mask = ICON_STYLE['mask'] override_color = self.measurement.supplier.html_color if override_color: override_color = override_color.lstrip('#') try: color = html_to_mapnik(override_color) except ValueError: color = ICON_STYLE['color'] else: color = ICON_STYLE['color'] output_filename = symbol_manager.get_symbol_transformed( icon, mask=mask, color=color, icon=icon, size=ICON_SIZE) output_filename_abs = os.path.join( settings.MEDIA_ROOT, 'generated_icons', output_filename) # use filename in mapnik pointsymbolizer point_looks = mapnik.PointSymbolizer( output_filename_abs, 'png', 16, 16) point_looks.allow_overlap = True layout_rule = mapnik.Rule() layout_rule.symbols.append(point_looks) points_style = mapnik.Style() points_style.rules.append(layout_rule) return points_style
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 fews_symbol_name( fews_filter_pk, fews_location_pk, fews_parameter_pk, nodata=False, styles=None, lookup=None): """Find fews symbol name""" # determine icon layout by looking at filter.id # if str(fews_filter.fews_id) in LAYER_STYLES: # icon_style = copy.deepcopy(LAYER_STYLES[str(fews_filter.fews_id)]) # else: # icon_style = copy.deepcopy(LAYER_STYLES['default']) style_name, icon_style = IconStyle.style( fews_filter_pk, fews_location_pk, fews_parameter_pk, 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 _get_location_style(self): 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) output_filename_abs = os.path.join( settings.MEDIA_ROOT, 'generated_icons', output_filename) # use filename in mapnik pointsymbolizer point_symbolizer = mapnik.PointSymbolizer(*get_pointsymbolizer_args(output_filename_abs)) point_symbolizer.allow_overlap = True text_symbolizer = mapnik.TextSymbolizer(mapnik.Expression('[Name]'), 'DejaVu Sans Book', 11, mapnik.Color('black')) text_symbolizer.displacement = (8, -8) text_symbolizer.vertical_alignment = mapnik.vertical_alignment.TOP text_symbolizer.horizontal_alignment = mapnik.horizontal_alignment.RIGHT text_symbolizer.halo_fill = mapnik.Color('white') text_symbolizer.halo_radius = 1 text_symbolizer.allow_overlap = True text_symbolizer.avoid_edges = False layout_rule = mapnik.Rule() layout_rule.symbols.append(point_symbolizer) layout_rule.symbols.append(text_symbolizer) point_style = mapnik.Style() point_style.rules.append(layout_rule) return point_style
def symbol_filename(color): symbol_manager = SymbolManager( ICON_ORIGINALS, os.path.join(settings.MEDIA_ROOT, 'generated_icons')) filename = symbol_manager.get_symbol_transformed( default_symbol_name(), mask=(default_symbol_mask(),), color=color) return filename
def symbol_filename(color): symbol_manager = SymbolManager( ICON_ORIGINALS, os.path.join(settings.MEDIA_ROOT, 'generated_icons')) output_filename = symbol_manager.get_symbol_transformed( 'meetpuntPeil.png', mask=('meetpuntPeil_mask.png',), color=color) output_filename_abs = os.path.join( settings.MEDIA_ROOT, 'generated_icons', output_filename) return output_filename_abs
def legend_image_urls(self): """ returns symbol TODO: the identifier is always None, so individual symbols cannot be retrieved. """ 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) icon = '%sgenerated_icons/%s' % (settings.MEDIA_URL, output_filename) return [icon]
def symbol_url(self, identifier=None, start_date=None, end_date=None, icon_style=None): """Return symbol for identifier. Implementation: respect the fact when icon_style is already given. If it's empty, generate own icon if applicable. """ sm = SymbolManager(ICON_ORIGINALS, os.path.join( settings.MEDIA_ROOT, 'generated_icons')) if icon_style is None: icon_style = {'icon': 'empty.png'} output_filename = sm.get_symbol_transformed(icon_style['icon'], **icon_style) return settings.MEDIA_URL + 'generated_icons/' + output_filename
def symbol_filename(icon, mask, color): """ Generates symbol and returns symbol filename. Uses SymbolManager to generate icons. TODO: Move ICON_ORIGINALS from lizard_map.models to here? Input: icon: icon filename, i.e. empty.png mask: mask filename, color: color tuple, i.e. (1.0, 1.0, 1.0, 1.0) """ from lizard_map.models import ICON_ORIGINALS icon_style = {"icon": icon, "mask": (mask,), "color": color.to_tuple()} 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 output_filename
def style(self): """ Make mapnik point style """ 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) output_filename_abs = os.path.join(settings.MEDIA_ROOT, 'generated_icons', output_filename) point_looks = mapnik.PointSymbolizer() point_looks.filename = output_filename_abs point_looks.allow_overlap = True layout_rule = mapnik.Rule() layout_rule.symbols.append(point_looks) point_style = mapnik.Style() point_style.rules.append(layout_rule) return point_style
def style(self): """ Make mapnik point style """ 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) output_filename_abs = os.path.join( settings.MEDIA_ROOT, 'generated_icons', output_filename) point_looks = mapnik.PointSymbolizer() point_looks.filename = output_filename_abs point_looks.allow_overlap = True layout_rule = mapnik.Rule() layout_rule.symbols.append(point_looks) point_style = mapnik.Style() point_style.rules.append(layout_rule) return point_style
def _default_mapnik_style(self): """ Default implementation, not using any external django objects. TODO: make configurable. """ icon_style = { 'icon': 'meetpuntPeil.png', 'mask': ('meetpuntPeil_mask.png', ), 'color': (1.0, 0.5, 0.0, 1.0)} 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) output_filename_abs = os.path.join( settings.MEDIA_ROOT, 'generated_icons', output_filename) # use filename in mapnik pointsymbolizer point_looks = mapnik.PointSymbolizer( str(output_filename_abs), 'png', 16, 16) point_looks.allow_overlap = True layout_rule = mapnik.Rule() layout_rule.symbols.append(point_looks) area_looks = mapnik.PolygonSymbolizer(mapnik.Color("#ff8877")) line_looks = mapnik.LineSymbolizer(mapnik.Color('#997766'), 1) layout_rule.symbols.append(area_looks) layout_rule.symbols.append(line_looks) # We use 'class' to filter the correct style for the locations # layout_rule.filter = mapnik.Filter( # "[style] = '%s'" % str(point_style_name)) point_style = mapnik.Style() point_style.rules.append(layout_rule) return point_style
from lizard_map.models import ICON_ORIGINALS from lizard_map.symbol_manager import SymbolManager from lizard_map.workspace import WorkspaceItemAdapter from lizard_riool.models import Manhole from lizard_riool.models import Sewer from lizard_riool.models import SewerMeasurement from lizard_riool.models import CLASSES logger = logging.getLogger(__name__) MEDIA_URL = settings.MEDIA_URL STATIC_URL = settings.STATIC_URL GENERATED_ICONS = os.path.join(settings.MEDIA_ROOT, 'generated_icons') SYMBOL_MANAGER = SymbolManager(ICON_ORIGINALS, GENERATED_ICONS) RIOOL_ICON = 'pixel2.png' RIOOL_ICON_LARGE = 'pixel16.png' DATABASE = settings.DATABASES['default'] PARAMS = { 'host': DATABASE['HOST'], 'port': DATABASE['PORT'], 'user': DATABASE['USER'], 'password': DATABASE['PASSWORD'], 'dbname': DATABASE['NAME'], } def html_to_mapnik(color): r, g, b = color[0:2], color[2:4], color[4:6]