From: David MENTRE <[email protected]> Note: On my setup, Chinese characters are not rendered correctly (boxes).
Tested: - CLI frontend - maposmatic Web Updated-by: decot (Envelope -> Box2d) Signed-off-by: David Decotigny <[email protected]> --- ocitysmap2/layoutlib/single_page_renderers.py | 4 +- ocitysmap2/maplib/map_canvas.py | 43 ++++++++++++------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/ocitysmap2/layoutlib/single_page_renderers.py b/ocitysmap2/layoutlib/single_page_renderers.py index b370292..2d0f95d 100644 --- a/ocitysmap2/layoutlib/single_page_renderers.py +++ b/ocitysmap2/layoutlib/single_page_renderers.py @@ -26,7 +26,7 @@ import math import datetime import cairo import locale -import mapnik +import mapnik2 import pango import pangocairo @@ -370,7 +370,7 @@ class SinglePageRenderer(Renderer): / rendered_map.width, map_coords_dots[3] / rendered_map.height) - mapnik.render(rendered_map, ctx) + mapnik2.render(rendered_map, ctx) ctx.restore() # Draw a rectangle around the map diff --git a/ocitysmap2/maplib/map_canvas.py b/ocitysmap2/maplib/map_canvas.py index 8cbb9f9..5f77975 100644 --- a/ocitysmap2/maplib/map_canvas.py +++ b/ocitysmap2/maplib/map_canvas.py @@ -23,7 +23,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. import logging -import mapnik +import mapnik2 import os from ocitysmap2 import coords @@ -52,7 +52,7 @@ class MapCanvas: graphical_ratio (float): ratio of the map area (width/height). """ - self._proj = mapnik.Projection(_MAPNIK_PROJECTION) + self._proj = mapnik2.Projection(_MAPNIK_PROJECTION) # This is where the magic of the map canvas happens. Given an original # bounding box and a graphical ratio for the output, the bounding box @@ -65,8 +65,7 @@ class MapCanvas: orig_envelope.width(), orig_envelope.height(), graphical_ratio) - envelope = mapnik.Envelope(off_x, off_y, - off_x+width, off_y+height) + envelope = mapnik2.Box2d(off_x, off_y, off_x+width, off_y+height) self._geo_bbox = self._inverse_envelope(envelope) g_height, g_width = self._geo_bbox.get_pixel_size_for_zoom_factor( @@ -77,8 +76,8 @@ class MapCanvas: # Create the Mapnik map with the corrected width and height and zoom to # the corrected bounding box ('envelope' in the Mapnik jargon) - self._map = mapnik.Map(g_width, g_height, _MAPNIK_PROJECTION) - mapnik.load_map(self._map, stylesheet.path) + self._map = mapnik2.Map(g_width, g_height, _MAPNIK_PROJECTION) + mapnik2.load_map(self._map, stylesheet.path) self._map.zoom_to_box(envelope) # Added shapes to render @@ -115,7 +114,7 @@ class MapCanvas: (opaque). line_width (float): line width for the features that will be drawn. """ - col = mapnik.Color(str_color) + col = mapnik2.Color(str_color) col.a = int(255 * alpha) self._shapes.append({'shape_file': shape_file, 'color': col, @@ -143,33 +142,33 @@ class MapCanvas: shape_file.flush() shpid = os.path.basename(shape_file.get_filepath()) - s,r = mapnik.Style(), mapnik.Rule() - r.symbols.append(mapnik.PolygonSymbolizer(color)) - r.symbols.append(mapnik.LineSymbolizer(color, line_width)) + s,r = mapnik2.Style(), mapnik2.Rule() + r.symbols.append(mapnik2.PolygonSymbolizer(color)) + r.symbols.append(mapnik2.LineSymbolizer(color, line_width)) s.rules.append(r) self._map.append_style('style_%s' % shpid, s) - layer = mapnik.Layer(shpid) - layer.datasource = mapnik.Shapefile(file=shape_file.get_filepath()) + layer = mapnik2.Layer(shpid) + layer.datasource = mapnik2.Shapefile(file=shape_file.get_filepath()) layer.styles.append('style_%s' % shpid) self._map.layers.append(layer) def _project_envelope(self, bbox): """Project the given bounding box into the rendering projection.""" - envelope = mapnik.Envelope(bbox.get_top_left()[1], - bbox.get_top_left()[0], - bbox.get_bottom_right()[1], - bbox.get_bottom_right()[0]) - c0 = self._proj.forward(mapnik.Coord(envelope.minx, envelope.miny)) - c1 = self._proj.forward(mapnik.Coord(envelope.maxx, envelope.maxy)) - return mapnik.Envelope(c0.x, c0.y, c1.x, c1.y) + envelope = mapnik2.Box2d(bbox.get_top_left()[1], + bbox.get_top_left()[0], + bbox.get_bottom_right()[1], + bbox.get_bottom_right()[0]) + c0 = self._proj.forward(mapnik2.Coord(envelope.minx, envelope.miny)) + c1 = self._proj.forward(mapnik2.Coord(envelope.maxx, envelope.maxy)) + return mapnik2.Box2d(c0.x, c0.y, c1.x, c1.y) def _inverse_envelope(self, envelope): """Inverse the given cartesian envelope (in 900913) back to a 4002 bounding box.""" - c0 = self._proj.inverse(mapnik.Coord(envelope.minx, envelope.miny)) - c1 = self._proj.inverse(mapnik.Coord(envelope.maxx, envelope.maxy)) + c0 = self._proj.inverse(mapnik2.Coord(envelope.minx, envelope.miny)) + c1 = self._proj.inverse(mapnik2.Coord(envelope.maxx, envelope.maxy)) return coords.BoundingBox(c0.y, c0.x, c1.y, c1.x) if __name__ == '__main__': @@ -196,6 +195,6 @@ if __name__ == '__main__': 'blue', 0.3) canvas.render() - mapnik.render_to_file(canvas.get_rendered_map(), '/tmp/mymap.png', 'png') + mapnik2.render_to_file(canvas.get_rendered_map(), '/tmp/mymap.png', 'png') print "Generated /tmp/mymap.png" -- 1.7.7.3
