Beispiel #1
0
def test_textsymbolizer_init():
    ts = mapnik2.TextSymbolizer(mapnik2.Expression('[Field_Name]'), 'Font Name', 8, mapnik2.Color('black'))

    eq_(str(ts.name), str(mapnik2.Expression('[Field_Name]')))
    eq_(ts.face_name, 'Font Name')
    eq_(ts.text_size, 8)
    eq_(ts.fill, mapnik2.Color('black'))
    eq_(ts.label_placement, mapnik2.label_placement.POINT_PLACEMENT)
Beispiel #2
0
def test_shieldsymbolizer_init():
    s = mapnik2.ShieldSymbolizer(
        mapnik2.Expression('[Field Name]'), 'DejaVu Sans Bold', 6,
        mapnik2.Color('#000000'),
        mapnik2.PathExpression('../data/images/dummy.png'))
    eq_(s.anchor, (
        0.0,
        0.5,
    ))
    eq_(s.displacement, (0.0, 0.0))
    eq_(s.allow_overlap, False)
    eq_(s.avoid_edges, False)
    eq_(s.character_spacing, 0)
    eq_(str(s.name), str(mapnik2.Expression('[Field Name]')))
    eq_(s.face_name, 'DejaVu Sans Bold')
    eq_(s.allow_overlap, False)
    eq_(s.fill, mapnik2.Color('#000000'))
    eq_(s.force_odd_labels, False)
    eq_(s.halo_fill, mapnik2.Color('rgb(255,255,255)'))
    eq_(s.halo_radius, 0)
    eq_(s.label_placement, mapnik2.label_placement.POINT_PLACEMENT)
    eq_(s.minimum_distance, 0.0)
    eq_(s.text_ratio, 0)
    eq_(s.text_size, 6)
    eq_(s.wrap_width, 0)
    eq_(s.vertical_alignment, mapnik2.vertical_alignment.MIDDLE)
    eq_(s.label_spacing, 0)
    eq_(s.label_position_tolerance, 0)
    # 22.5 * M_PI/180.0 initialized by default
    assert_almost_equal(s.max_char_angle_delta, 0.39269908169872414)

    eq_(s.wrap_character, ' ')
    eq_(s.text_transform, mapnik2.text_transform.NONE)
    eq_(s.line_spacing, 0)
    eq_(s.character_spacing, 0)

    # r1341
    eq_(s.wrap_before, False)
    eq_(s.horizontal_alignment, mapnik2.horizontal_alignment.MIDDLE)
    eq_(s.justify_alignment, mapnik2.justify_alignment.MIDDLE)
    eq_(s.opacity, 1.0)

    # r2300
    eq_(s.minimum_padding, 0.0)

    # was mixed with s.opacity
    eq_(s.text_opacity, 1.0)

    eq_(s.shield_displacement, (0.0, 0.0))
    # TODO - the pattern in bindings seems to be to get/set
    # strings for PathExpressions... should we pass objects?
    eq_(s.filename, '../data/images/dummy.png')

    eq_(s.transform, 'matrix(1, 0, 0, 1, 0, 0)')

    raise Todo(
        "FontSet pickling support needed: http://trac.mapnik2.org/ticket/348")
    eq_(s.fontset, '')
def test_renders_with_agg():
    sym = mapnik2.GlyphSymbolizer("DejaVu Sans Condensed",
                                  mapnik2.Expression("'í'"))
    sym.allow_overlap = True
    sym.angle = mapnik2.Expression(
        "[azimuth]+90")  #+90 so the top of the glyph points upwards
    sym.size = mapnik2.Expression("[value]")
    sym.color = mapnik2.Expression("'#ff0000'")

    _map = create_map_and_append_symbolyzer(sym)
    im = mapnik2.Image(_map.width, _map.height)
    mapnik2.render(_map, im)
    save_data('agg_glyph_symbolizer.png', im.tostring('png'))
    assert contains_word('\xff\x00\x00\xff', im.tostring())
Beispiel #4
0
def test_textsymbolizer_pickle():
    ts = mapnik2.TextSymbolizer(mapnik2.Expression('[Field_Name]'),
                                'Font Name', 8, mapnik2.Color('black'))

    eq_(str(ts.name), str(mapnik2.Expression('[Field_Name]')))
    eq_(ts.face_name, 'Font Name')
    eq_(ts.text_size, 8)
    eq_(ts.fill, mapnik2.Color('black'))

    raise Todo("text_symbolizer pickling currently disabled")

    ts2 = pickle.loads(pickle.dumps(ts, pickle.HIGHEST_PROTOCOL))
    eq_(ts.name, ts2.name)
    eq_(ts.face_name, ts2.face_name)
    eq_(ts.allow_overlap, ts2.allow_overlap)
    eq_(ts.displacement, ts2.displacement)
    eq_(ts.anchor, ts2.anchor)
    eq_(ts.fill, ts2.fill)
    eq_(ts.force_odd_labels, ts2.force_odd_labels)
    eq_(ts.halo_fill, ts2.halo_fill)
    eq_(ts.halo_radius, ts2.halo_radius)
    eq_(ts.label_placement, ts2.label_placement)
    eq_(ts.minimum_distance, ts2.minimum_distance)
    eq_(ts.text_ratio, ts2.text_ratio)
    eq_(ts.text_size, ts2.text_size)
    eq_(ts.wrap_width, ts2.wrap_width)
    eq_(ts.vertical_alignment, ts2.vertical_alignment)
    eq_(ts.label_spacing, ts2.label_spacing)
    eq_(ts.label_position_tolerance, ts2.label_position_tolerance)
    # 22.5 * M_PI/180.0 initialized by default
    assert_almost_equal(s.max_char_angle_delta, 0.39269908169872414)

    eq_(ts.wrap_character, ts2.wrap_character)
    eq_(ts.text_transform, ts2.text_transform)
    eq_(ts.line_spacing, ts2.line_spacing)
    eq_(ts.character_spacing, ts2.character_spacing)

    # r1341
    eq_(ts.wrap_before, ts2.wrap_before)
    eq_(ts.horizontal_alignment, ts2.horizontal_alignment)
    eq_(ts.justify_alignment, ts2.justify_alignment)
    eq_(ts.opacity, ts2.opacity)

    # r2300
    eq_(s.minimum_padding, 0.0)

    raise Todo(
        "FontSet pickling support needed: http://trac.mapnik2.org/ticket/348")
    eq_(ts.fontset, ts2.fontset)
Beispiel #5
0
def ogc_TextSymbolizer_to_mapnik(text):
    name = text.Label.find("{%s}PropertyName" % rule.nsmap['ogc'])
    if not name and hasattr(text, 'Label'):
        name = shlex.split(str(text.Label))[0]
    #face_name = '[%s]' % text.Font
    face_name = 'DejaVu Sans Book'
    size = 10
    for css in text.Font.CssParameter:
        if css.get('name') == 'font-family':
            face_name = css.text
        elif css.get('name') == 'font-size':
            size = int(float(css.text))
    color = mapnik.Color('black')
    for css in text.Fill.CssParameter:
        if css.get('name') == 'fill':
            color = mapnik.Color(css.text)
    m_text = mapnik.TextSymbolizer(mapnik.Expression('[%s]' % name),
                                   str(face_name), int(size), color)
    if hasattr(text, 'LabelPlacement'):
        if hasattr(text.LabelPlacement, 'LinePlacement'):
            m_text.label_placement = mapnik.label_placement.LINE_PLACEMENT
    if hasattr(text, 'Halo'):
        h = text.Halo
        if hasattr(h, 'Radius'):
            m_text.halo_radius = float(h.Radius)
        if hasattr(h, 'Fill'):
            for css in h.Fill.CssParameter:
                if css.get('name') == 'fill':
                    m_text.halo_fill = mapnik.Color(css.text)
    yield m_text
Beispiel #6
0
def create_grid_map(width,height):
    places_ds = mapnik2.PointDatasource()
    places_ds.add_point(143.10,-38.60,'Name','South East')
    places_ds.add_point(142.48,-38.60,'Name','South West')
    places_ds.add_point(142.48,-38.38,'Name','North West')
    places_ds.add_point(143.10,-38.38,'Name','North East')
    s = mapnik2.Style()
    r = mapnik2.Rule()
    #symb = mapnik2.PointSymbolizer()
    symb = mapnik2.MarkersSymbolizer()
    symb.allow_overlap = True
    r.symbols.append(symb)
    label = mapnik2.TextSymbolizer(mapnik2.Expression('[Name]'),
                'DejaVu Sans Book',
                10,
                mapnik2.Color('black')
                )
    label.allow_overlap = True
    label.displacement = (0,-10)
    #r.symbols.append(label)

    s.rules.append(r)
    lyr = mapnik2.Layer('Places')
    lyr.datasource = places_ds
    lyr.styles.append('places_labels')
    m = mapnik2.Map(width,height)
    m.append_style('places_labels',s)
    m.layers.append(lyr)
    return m
Beispiel #7
0
def test_render_grid():
    places_ds = mapnik2.PointDatasource()
    places_ds.add_point(143.10, -38.60, 'Name', 'South East')
    places_ds.add_point(142.48, -38.60, 'Name', 'South West')
    places_ds.add_point(142.48, -38.38, 'Name', 'North West')
    places_ds.add_point(143.10, -38.38, 'Name', 'North East')
    s = mapnik2.Style()
    r = mapnik2.Rule()
    #symb = mapnik2.PointSymbolizer()
    symb = mapnik2.MarkersSymbolizer()
    symb.allow_overlap = True
    r.symbols.append(symb)
    label = mapnik2.TextSymbolizer(mapnik2.Expression('[Name]'),
                                   'DejaVu Sans Book', 10,
                                   mapnik2.Color('black'))
    label.allow_overlap = True
    label.displacement = (0, -10)
    #r.symbols.append(label)

    s.rules.append(r)
    lyr = mapnik2.Layer('Places')
    lyr.datasource = places_ds
    lyr.styles.append('places_labels')
    m = mapnik2.Map(256, 256)
    m.append_style('places_labels', s)
    m.layers.append(lyr)
    ul_lonlat = mapnik2.Coord(142.30, -38.20)
    lr_lonlat = mapnik2.Coord(143.40, -38.80)
    m.zoom_to_box(mapnik2.Box2d(ul_lonlat, lr_lonlat))
    grid = mapnik2.render_grid(m, 0, key='Name', resolution=4, fields=['Name'])
    eq_(grid, grid_correct)
    eq_(resolve(grid, 0, 0), None)

    # check every pixel of the nw symbol
    expected = {"Name": "North West"}

    # top row
    eq_(resolve(grid, 23, 9), expected)
    eq_(resolve(grid, 23, 10), expected)
    eq_(resolve(grid, 23, 11), expected)

    # core
    eq_(resolve(grid, 24, 8), expected)
    eq_(resolve(grid, 24, 9), expected)
    eq_(resolve(grid, 24, 10), expected)
    eq_(resolve(grid, 24, 11), expected)
    eq_(resolve(grid, 24, 12), expected)
    eq_(resolve(grid, 25, 8), expected)
    eq_(resolve(grid, 25, 9), expected)
    eq_(resolve(grid, 25, 10), expected)
    eq_(resolve(grid, 25, 11), expected)
    eq_(resolve(grid, 25, 12), expected)

    # bottom row
    eq_(resolve(grid, 26, 9), expected)
    eq_(resolve(grid, 26, 10), expected)
    eq_(resolve(grid, 26, 11), expected)
def test_renders_with_cairo():
    if not mapnik2.has_pycairo():
        return
    sym = mapnik2.GlyphSymbolizer("DejaVu Sans Condensed",
                                  mapnik2.Expression("'í'"))
    sym.allow_overlap = True
    sym.angle = mapnik2.Expression(
        "[azimuth]+90")  #+90 so the top of the glyph points upwards
    sym.size = mapnik2.Expression("[value]")
    sym.color = mapnik2.Expression("'#ff0000'")
    _map = create_map_and_append_symbolyzer(sym)

    from cStringIO import StringIO
    import cairo
    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 256, 256)
    mapnik2.render(_map, surface)
    im = mapnik2.Image.from_cairo(surface)
    save_data('cairo_glyph_symbolizer.png', im.tostring('png'))
    assert contains_word('\xff\x00\x00\xff', im.tostring())
Beispiel #9
0
    def to_mapnik(self):
        sym = mapnik.ShieldSymbolizer(
            mapnik.Expression(self.name), self.face_name, self.size,
            mapnik.Color(str(self.color)) if self.color else None, self.file,
            self.type, self.width, self.height)

        sym.character_spacing = self.character_spacing or sym.character_spacing
        sym.line_spacing = self.line_spacing or sym.line_spacing
        sym.spacing = self.spacing or sym.line_spacing
        sym.minimum_distance = self.min_distance or sym.minimum_distance

        return sym
Beispiel #10
0
    def to_mapnik(self):
        sym = mapnik.TextSymbolizer(mapnik.Expression(self.name),
                                    self.face_name, self.size,
                                    mapnik.Color(str(self.color)))

        sym.wrap_width = self.wrap_width or sym.wrap_width
        sym.label_spacing = self.spacing or sym.label_spacing
        sym.label_position_tolerance = self.label_position_tolerance or sym.label_position_tolerance
        sym.max_char_angle_delta = self.max_char_angle_delta or sym.max_char_angle_delta
        sym.halo_fill = mapnik.Color(str(
            self.halo_color)) if self.halo_color else sym.halo_fill
        sym.halo_radius = self.halo_radius or sym.halo_radius
        sym.character_spacing = self.character_spacing or sym.character_spacing
        sym.line_spacing = self.line_spacing or sym.line_spacing
        sym.avoid_edges = self.avoid_edges.value if self.avoid_edges else sym.avoid_edges
        sym.minimum_distance = self.min_distance or sym.minimum_distance
        sym.allow_overlap = self.allow_overlap.value if self.allow_overlap else sym.allow_overlap
        sym.text_transform = self.text_transform if self.text_transform else sym.text_transform

        sym.displacement(self.dx or 0, self.dy or 0)

        return sym
def ogc_filter_to_mapnik(ogc_filter):
    if hasattr(ogc_filter,'PropertyIsGreaterThan'):
        prop = ogc_filter.PropertyIsGreaterThan
        operator = '>'
        #cql = "[%s] > %s" % (prop.PropertyName,prop.Literal)
    elif hasattr(ogc_filter,'PropertyIsLessThan'):
        prop = ogc_filter.PropertyIsLessThan
        operator = '<'
    elif hasattr(ogc_filter,'PropertyIsEqualTo'):
        prop = ogc_filter.PropertyIsEqualTo
        operator = '='
    elif hasattr(ogc_filter,'PropertyIsNotEqualTo'):
        prop = ogc_filter.PropertyIsNotEqualTo
        operator = '!='
    if is_number(prop.Literal.text):
        cql = "[%s] %s %s" % (prop.PropertyName,operator,prop.Literal)
    else:
        cql = "[%s] %s '%s'" % (prop.PropertyName,operator,prop.Literal.text)
    if mapnik.mapnik_version() >= 800:
        return mapnik.Expression(str(cql))
    else:
        return mapnik.Filter(str(cql))
def create_map_and_append_symbolyzer(sym):
    srs = '+init=epsg:32630'
    lyr = mapnik2.Layer('arrows')
    lyr.datasource = mapnik2.Shapefile(file='../data/shp/arrows.shp', )
    lyr.srs = srs
    _map = mapnik2.Map(256, 256, srs)
    style = mapnik2.Style()
    rule = mapnik2.Rule()
    rule.symbols.append(sym)

    # put a test symbolizer to see what is the azimuth being read
    ts = mapnik2.TextSymbolizer(mapnik2.Expression('[azimuth]'),
                                "DejaVu Sans Book", 10, mapnik2.Color("black"))
    ts.allow_overlap = True
    rule.symbols.append(ts)

    style.rules.append(rule)
    _map.append_style('foo', style)
    lyr.styles.append('foo')
    _map.layers.append(lyr)
    _map.zoom_to_box(mapnik2.Box2d(0, 0, 8, 8))
    return _map
Beispiel #13
0
def test_unicode_regex_match():
    f = mapnik2.Feature(0)
    f["name"] = 'Québec'
    expr = mapnik2.Expression("[name].match('Québec')")
    eq_(expr.evaluate(f), '1')  # 1 == True
Beispiel #14
0
def test_unicode_regex_replace():
    f = mapnik2.Feature(0)
    f["name"] = 'Québec'
    expr = mapnik2.Expression("[name].replace('(\B)|( )','$1 ')")
    eq_(expr.evaluate(f), 'Q u é b e c')
def main(root,**options):
    m = mapnik.Map(1,1)
    
    idx = 0
    
    layers = []
    if hasattr(root,'NamedLayer'):
        layers.extend(root.NamedLayer)
    if hasattr(root,'UserLayer'):
        layers.extend(root.UserLayer)
    for layer in layers:
        lyr = mapnik.Layer(str(getattr(layer,'Name',None) or 'Layer'))
        datasource = options.get('datasource')
        if datasource and datasource.endswith('shp'):
            shp_dir = os.path.abspath(datasource).split('.shp')[0]
            name = datasource.split('.shp')[0]
            lyr.datasource = mapnik.Shapefile(file=shp_dir)
            if options.get('srid'):
                lyr.srs = '+init=epsg:%s' % options.get('srid')
                m.srs = lyr.srs
            else:
                srs = proj4_from_osr(shp_dir)
                if srs:
                    lyr.srs = srs
    
        for user_style in layer.UserStyle:
            for feature_style in user_style.FeatureTypeStyle:
                m_sty = mapnik.Style()
                # TODO = Styles should have title,abstract, etc...
                sty_name = getattr(feature_style,'Name',None)
                if not sty_name:
                    sty_name = '%s %s' % (lyr.name,str(idx))
                sty_name = str(sty_name)
    
                for rule in feature_style.Rule:
                    #print rule.get_childen()
                    m_rule = mapnik.Rule(str(getattr(rule,'Name','')))
                    ogc_filter = rule.find("{%s}Filter" % rule.nsmap['ogc'])
                    if ogc_filter is not None:
                        # TODO - support ogc:And and oc:Or
                        m_rule.filter = ogc_filter_to_mapnik(ogc_filter)
                    else:
                        if hasattr(rule,'ElseFilter'):
                              m_rule.set_else(True)
                    if hasattr(rule,'MaxScaleDenominator'):
                        m_rule.max_scale = float(rule.MaxScaleDenominator)
                    if hasattr(rule,'MinScaleDenominator'):
                        m_rule.min_scale = float(rule.MinScaleDenominator)                    
                    if hasattr(rule,'LineSymbolizer'):
                        stroke = rule.LineSymbolizer.Stroke
                        m_stroke = stroke_to_mapnik(stroke)
                        m_rule.symbols.append(mapnik.LineSymbolizer(m_stroke))
                    if hasattr(rule,'PolygonSymbolizer'):
                        m_poly = mapnik.PolygonSymbolizer()
                        if hasattr(rule.PolygonSymbolizer,'Fill'):
                            fill = rule.PolygonSymbolizer.Fill
                            for css in fill.CssParameter:
                                if css.get('name') == 'fill':
                                    m_poly.fill = mapnik.Color(css.text)
                                elif css.get('name') == 'fill-opacity':
                                    m_poly.opacity = float(css.text)
                                else:
                                    raise Exception('unhanded: ' + css.get('name'))
                        if hasattr(rule.PolygonSymbolizer,'Stroke'):
                            stroke = rule.PolygonSymbolizer.Stroke
                            m_stroke = stroke_to_mapnik(stroke)
                            m_rule.symbols.append(mapnik.LineSymbolizer(m_stroke))
                            
                        m_rule.symbols.append(m_poly)
                    if hasattr(rule,'PointSymbolizer'):
                        #fill = rule.PolygonSymbolizer.Fill
                        #m_point = point_to_mapnik(point)
                        # TODO
                        m_rule.symbols.append(mapnik.PointSymbolizer())
                    if hasattr(rule,'TextSymbolizer'):
                        text = rule.TextSymbolizer
                        name = text.Label.find("{%s}PropertyName" % rule.nsmap['ogc'])
                        if not name and hasattr(text,'Label'):
                            name = shlex.split(str(text.Label))[0]

                        face_name = '[%s]' % text.Font

                        face_name = 'DejaVu Sans Book'
                        size = 10
                        for css in text.Font.CssParameter:
                           if css.get('name') == 'font-family':
                               face_name = css.text
                           elif css.get('name') == 'font-size':
                               size = int(float(css.text))
                        color = mapnik.Color('black')
                        for css in text.Fill.CssParameter:
                            if css.get('name') == 'fill':
                                color = mapnik.Color(css.text)
                        m_text = mapnik.TextSymbolizer(mapnik.Expression('['+str(name)+']'),str(face_name),int(size),color)
                        if hasattr(text,'LabelPlacement'):
                            if hasattr(text.LabelPlacement,'LinePlacement'):
                                m_text.label_placement = mapnik.label_placement.LINE_PLACEMENT
                        if hasattr(text,'Halo'):
                            h = text.Halo
                            if hasattr(h,'Radius'):
                                m_text.halo_radius = float(h.Radius)
                            if hasattr(h,'Fill'):
                                for css in h.Fill.CssParameter:
                                    if css.get('name') == 'fill':
                                        m_text.halo_fill = mapnik.Color(css.text)
                            
                        m_rule.symbols.append(m_text)

                    m_sty.rules.append(m_rule)
                
                lyr.styles.append(sty_name)
                m.append_style(sty_name,m_sty)
                idx+= 1
                
    m.layers.append(lyr)
    if FIX_HEX:
        (handle, path) = tempfile.mkstemp(suffix='.xml', prefix='geotools2mapnik-')
        os.close(handle)
        open(path,'w').write(mapnik.save_map_to_string(m))
        tree = objectify.parse(path)
        fix_colors(tree)
        print etree.tostring(tree)#,pretty_print=True)
    else:
        print mapnik.save_map_to_string(m)
Beispiel #16
0
def mapnik_rendering(f_pct,f_vct,f_render):
	import mapnik2 as mapnik

	ref_pct = GR.geo_raster.open(f_pct)
	proj = ref_pct.projection
	tr = ref_pct.geo_transform
	width = ref_pct.width
	height = ref_pct.height
	size_p = tr[1]
	minx = tr[0]
	maxy = tr[3]
	miny = tr[3] - height * size_p
	maxx = tr[0] + width * size_p
	bbox = (minx, miny, maxx, maxy)

	#---- init
	_map = mapnik.Map(width,height)
	_map.background = mapnik.Color('black')
	#----==== raster
	style_gdal = mapnik.Style() # style object to hold rules
	rule_gdal = mapnik.Rule() # rule object to hold symbolizers
	symbol_gdal = mapnik.RasterSymbolizer()
	#symbol_gdal.opacity = 0.5
	#$symbol_gdal.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_INHERIT, mapnik.Color(255,255,255))
	c = mapnik.RasterColorizer( mapnik.COLORIZER_LINEAR , mapnik.Color(0,0,0) )
	
	c.epsilon = 0.001
	c.add_stop(0)
	c.add_stop(900, mapnik.COLORIZER_LINEAR, mapnik.Color("#F3DDB4"))
	c.add_stop(1300, mapnik.COLORIZER_LINEAR, mapnik.Color("cyan"))
	c.add_stop(2000, mapnik.COLORIZER_LINEAR, mapnik.Color("white"))
	#c.get_color(2000)
	#c.stops[1].color
	#'''
	symbol_gdal.colorizer = c
	
	rule_gdal.symbols.append(symbol_gdal)
	style_gdal.rules.append(rule_gdal)
	_map.append_style("Raster Style", style_gdal)
	mlyr_gdal = mapnik.Layer('TM_images')
	mlyr_gdal.datasource = mapnik.Gdal(file=f_pct,band=1,bbox=bbox)
	#mlyr_gdal.srs = '+proj=utm +zone=46 +ellps=WGS84 +units=m +no_defs '
	mlyr_gdal.styles.append('Raster Style')
	_map.layers.append(mlyr_gdal)
	
	#'''
	#----==== shape
	style_vct = mapnik.Style() # style object to hold rules
	rule_vct = mapnik.Rule() # rule object to hold symbolizers
	
	#==== ==== add labels
	symbol_text = mapnik.TextSymbolizer(mapnik.Expression('[Code_uniq]'), 'DejaVu Sans Book', 20, mapnik.Color('black'))
	symbol_text.halo_fill = mapnik.Color('white')
	symbol_text.halo_radius = 1
	symbol_text.avoid_edges = True 
	#symbol_text.allow_overlap = False
	symbol_text.vertical_alignment = mapnik.vertical_alignment.TOP
	symbol_text.label_placement = mapnik.label_placement.POINT_PLACEMENT #LINE_PLACEMENT # is default
	rule_vct.symbols.append(symbol_text)
	
	#==== ==== 1.add polygon
	symbol_vct = mapnik.PolygonSymbolizer(mapnik.Color('#059BFF'))
	symbol_vct.opacity = 1#0.6
	rule_vct.symbols.append(symbol_vct) # add the symbolizer to the rule object
	#==== ==== 2.add outlines
	line_symbolizer = mapnik.LineSymbolizer(mapnik.Color('black'),0.3)
	rule_vct.symbols.append(line_symbolizer) # add the symbolizer to the rule object
	
	
	style_vct.rules.append(rule_vct) # now add the rule to the style and we're done
	_map.append_style('vector',style_vct) # Styles are given names only as they are applied to the map
	ds_shp = mapnik.Shapefile(file=f_vct)
	mlyr_shp = mapnik.Layer('lakes') 

	mlyr_shp.datasource = ds_shp
	mlyr_shp.styles.append('vector')
	_map.layers.append(mlyr_shp)
	

	#'''
	_map.zoom_all()
	
	# Write the data to a png image called world.png the current directory
	mapnik.render_to_file(_map,f_render, 'png')
	print f_render


	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
Beispiel #17
0
def ogc_filter_to_mapnik(ogc_filter):
    cql = _ogc_filter_to_expression(ogc_filter.getchildren()[0])
    if mapnik.mapnik_version() >= 800:
        return mapnik.Expression(str(cql))
    else:
        return mapnik.Filter(str(cql))
# center of the image
label_x = xmin + ((xmax - xmin) / 2)

# bottom of the image
label_y = ymin + ((ymax - ymin) / 30)

# create PointDatasource
pds = mapnik2.PointDatasource()

# place scale at the bottom-center of the map
pds.add_point(label_x, label_y, 'Name', "Scale: 1:" + str(m.scale_denominator()))

# create label symbolizers
if mapnik2.mapnik_version() >= 800:
    text = mapnik2.TextSymbolizer(mapnik2.Expression('[Name]'),'DejaVu Sans Bold',12,mapnik2.Color('black'))
else:
    text = mapnik2.TextSymbolizer('Name','DejaVu Sans Bold',12,mapnik2.Color('black'))

s3 = mapnik2.Style()
r3 = mapnik2.Rule()
r3.symbols.append(text)
s3.rules.append(r3)

lyr3 = mapnik2.Layer('Memory Datasource')
lyr3.datasource = pds
lyr3.styles.append('Style')
m.layers.append(lyr3)
m.append_style('Style',s3)

###
Beispiel #19
0
# center of the image
label_x = xmin + ((xmax - xmin) / 2)

# bottom of the image
label_y = ymin + ((ymax - ymin) / 30)

# create PointDatasource
pds = mapnik2.PointDatasource()

# place scale at the bottom-center of the map
pds.add_point(label_x, label_y, 'Name',
              "Scale: 1:" + str(m.scale_denominator()))

# create label symbolizers
if mapnik2.mapnik_version() >= 800:
    text = mapnik2.TextSymbolizer(mapnik2.Expression('[Name]'),
                                  'DejaVu Sans Bold', 12,
                                  mapnik2.Color('black'))
else:
    text = mapnik2.TextSymbolizer('Name', 'DejaVu Sans Bold', 12,
                                  mapnik2.Color('black'))

s3 = mapnik2.Style()
r3 = mapnik2.Rule()
r3.symbols.append(text)
s3.rules.append(r3)

lyr3 = mapnik2.Layer('Memory Datasource')
lyr3.datasource = pds
lyr3.styles.append('Style')
m.layers.append(lyr3)
Beispiel #20
0
# will be drawn entirely "above" the previous one.  Performance wise using
# multiple styles in one layer is the same has having multiple layers.
# The paradigm is useful mostly as a convenience.

provpoly_style = mapnik2.Style()

# A Style needs one or more rules.  A rule will normally consist of a filter
# for feature selection, and one or more symbolizers.

provpoly_rule_on = mapnik2.Rule()

# A Expression() allows the selection of features to which the symbology will
# be applied.  More on Mapnik expressions can be found in Tutorial #2.
# A given feature can only match one filter per rule per style.

provpoly_rule_on.filter = mapnik2.Expression("[NAME_EN] = 'Ontario'")

# Here a symbolizer is defined.  Available are:
#     - LineSymbolizer(Color(),<width>)
#     - LineSymbolizer(Stroke())
#     - PolygonSymbolizer(Color())
#     - PointSymbolizer(<file>,<type>,<width>,<height>)

# Some of them can accept a Color() instance, which can be created with:
#     - Color(<red>, <green>, <blue>)
#     - Color(<red>, <green>, <blue>, <alpha>)
#     - Color(<string>) where <string> will be something like '#00FF00'
#       or '#0f0' or 'green'

provpoly_rule_on.symbols.append(
    mapnik2.PolygonSymbolizer(mapnik2.Color(250, 190, 183)))