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 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
Exemple #3
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
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
Exemple #5
0
    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
Exemple #6
0
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
Exemple #8
0
    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]
Exemple #9
0
    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
Exemple #14
0
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]