kopia lustrzana https://github.com/hholzgra/ocitysmap
Merge branch 'upstream_dev_render_overlay' into upstream_dev_markdown
commit
cd0709729a
|
|
@ -111,6 +111,7 @@ class RenderingConfiguration:
|
|||
self.language = None # str (locale)
|
||||
|
||||
self.stylesheet = None # Obj Stylesheet
|
||||
self.overlay = None # Obj Stylesheet
|
||||
|
||||
self.paper_width_mm = None
|
||||
self.paper_height_mm = None
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ from ocitysmap.indexlib.renderer import StreetIndexRenderer
|
|||
from indexlib.indexer import StreetIndex
|
||||
from indexlib.commons import IndexDoesNotFitError, IndexEmptyError
|
||||
import draw_utils
|
||||
from ocitysmap.maplib.map_canvas import MapCanvas
|
||||
|
||||
LOG = logging.getLogger('ocitysmap')
|
||||
|
||||
|
|
@ -145,6 +146,14 @@ class SinglePageRenderer(Renderer):
|
|||
rc.osmid is not None
|
||||
)
|
||||
|
||||
# Prepare map overlay
|
||||
if self.rc.overlay:
|
||||
self._overlay_canvas = MapCanvas(self.rc.overlay,
|
||||
self.rc.bounding_box,
|
||||
float(self._map_coords[2]), # W
|
||||
float(self._map_coords[3]), # H
|
||||
dpi)
|
||||
|
||||
# Prepare the grid
|
||||
self.grid = self._create_grid(self._map_canvas)
|
||||
|
||||
|
|
@ -159,6 +168,11 @@ class SinglePageRenderer(Renderer):
|
|||
# Commit the internal rendering stack of the map
|
||||
self._map_canvas.render()
|
||||
|
||||
if self.rc.overlay:
|
||||
self._overlay_canvas.render()
|
||||
|
||||
|
||||
|
||||
|
||||
def _create_index_rendering(self, on_the_side):
|
||||
"""
|
||||
|
|
@ -404,11 +418,20 @@ class SinglePageRenderer(Renderer):
|
|||
# Draw the rescaled Map
|
||||
ctx.save()
|
||||
rendered_map = self._map_canvas.get_rendered_map()
|
||||
LOG.debug('Map:')
|
||||
LOG.debug('Mapnik scale: 1/%f' % rendered_map.scale_denominator())
|
||||
LOG.debug('Actual scale: 1/%f' % self._map_canvas.get_actual_scale())
|
||||
mapnik.render(rendered_map, ctx)
|
||||
ctx.restore()
|
||||
|
||||
# Draw the rescaled Overlay
|
||||
if self.rc.overlay:
|
||||
ctx.save()
|
||||
rendered_overlay = self._overlay_canvas.get_rendered_map()
|
||||
LOG.debug('Overlay:')
|
||||
mapnik.render(rendered_overlay, ctx)
|
||||
ctx.restore()
|
||||
|
||||
# Draw a rectangle around the map
|
||||
ctx.rectangle(0, 0, map_coords_dots[2], map_coords_dots[3])
|
||||
ctx.stroke()
|
||||
|
|
|
|||
16
render.py
16
render.py
|
|
@ -83,6 +83,10 @@ def main():
|
|||
metavar='NAME',
|
||||
help='specify which stylesheet to use. Defaults to the '
|
||||
'first specified in the configuration file.')
|
||||
parser.add_option('--overlay', dest='overlay',
|
||||
metavar='NAME',
|
||||
help='specify which overlay stylesheet to use. '
|
||||
'Defaults to none')
|
||||
parser.add_option('-l', '--layout', dest='layout',
|
||||
metavar='NAME',
|
||||
default=KNOWN_RENDERERS_NAMES[0].split()[0],
|
||||
|
|
@ -156,6 +160,17 @@ def main():
|
|||
% (ex, ', '.join(map(lambda s: s.name,
|
||||
mapper.STYLESHEET_REGISTRY))))
|
||||
|
||||
# Parse overlay stylesheet (defaults to none)
|
||||
if options.overlay is None:
|
||||
overlay = None
|
||||
else:
|
||||
try:
|
||||
overlay = mapper.get_stylesheet_by_name(options.overlay)
|
||||
except LookupError, ex:
|
||||
parser.error("%s. Available stylesheets: %s."
|
||||
% (ex, ', '.join(map(lambda s: s.name,
|
||||
mapper.STYLESHEET_REGISTRY))))
|
||||
|
||||
# Parse rendering layout
|
||||
if options.layout is None:
|
||||
cls_renderer = ocitysmap.layoutlib.renderers.get_renderers()[0]
|
||||
|
|
@ -226,6 +241,7 @@ def main():
|
|||
rc.bounding_box = bbox
|
||||
rc.language = options.language
|
||||
rc.stylesheet = stylesheet
|
||||
rc.overlay = overlay
|
||||
if options.orientation == 'portrait':
|
||||
rc.paper_width_mm = paper_descr[1]
|
||||
rc.paper_height_mm = paper_descr[2]
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue