I'm trying to use Python to create a TextSymbolizer to display a trail name above the trail LineSymbolizer. Below this layer is the OSM base layer which contains its own data for that trail.
I can display the line but I cannot display any text.
I've compiled Mapnik with debug turned on only to find that there's no logging near the text symbolizer code. I had a go with gdb but I haven't spent enough time to work out how to debug from python into the Mapnik shared library. I'm happy enough to debug but I'm not familiar with gdb.
I also edited the osm.xml and took away the trails and trail names which might be interfering with the TextSymbolizer but I didn't see any difference.
imgx = 400 imgy = 400 m = mapnik.Map(imgx,imgy) m.buffer_size = 1000 workoutParams = dict(host='localhost',port='5432',user='postgres',password='password',dbname='postgis') workoutParams['estimate_extent'] = False workoutParams['extent']='-180,-89.99,180,89.99' workoutTable = "(select id, geometry, 'really long trail name' as trail_name from pub_trail_segment where pub_trail_id = %s) as route" % idNumber workoutParams['table']= workoutTable workoutDatasource = PostGIS(**workoutParams) workoutLayer = Layer('route','+proj=latlong +datum=WGS84') workoutLayer.datasource = workoutDatasource workoutStyle = mapnik.Style() segmentStyleRule = mapnik.Rule() segmentStyleRule.symbols.append(mapnik.LineSymbolizer(mapnik.Color('blue'),1)) #50 for print segmentTextSymbolizer = mapnik.TextSymbolizer('trail_name', 'book-fonts', 20, mapnik.Color('blue')) segmentTextSymbolizer.halo_radius = 1 segmentTextSymbolizer.label_placement = mapnik.label_placement.LINE_PLACEMENT segmentTextSymbolizer.allow_overlap = True segmentTextSymbolizer.avoid_edges = False segmentStyleRule.symbols.append(segmentTextSymbolizer) workoutStyle.rules.append(segmentStyleRule) m.append_style('route',workoutStyle) workoutLayer.styles.append('route') m.layers.append(workoutLayer) m.zoom_to_box(bbox) im = mapnik.Image(imgx,imgy) mapnik.render(m, im)
What am I doing wrong?