def render_image(start_time, end_time): ll = (30.708, -27.414, 32.179, -25.652) prj = mapnik.Projection("+init=epsg:900913") c0 = prj.forward(mapnik.Coord(ll[0], ll[1])) c1 = prj.forward(mapnik.Coord(ll[2], ll[3])) z = 3 imgx = 336 * z imgy = 450 * z m = mapnik.Map(imgx, imgy) mapnik.load_map(m, "gpx-nolayer.xml") db_params = dict( dbname="gpx-merc", user="******", password="******", host="localhost", port=5433, estimate_extent=False, extent="3390650.221286806, -3163145.87245787, 3609898.596229789, -2956043.104540316", ) lyr = Layer("points", "+init=epsg:900913") db_params["table"] = ( "(select gps_points.geom as geom, gpx_files.gps_name as gps_name from gps_points INNER join gpx_files on gpx_files.id = gps_points.gpx_id where gps_points.timestamp >= '" + start_time + "' and gps_points.timestamp < '" + end_time + "') as points" ) lyr.datasource = PostGIS(**db_params) lyr.styles.append("points") m.layers.append(lyr) if hasattr(mapnik, "mapnik_version") and mapnik.mapnik_version() >= 800: bbox = mapnik.Box2d(c0.x, c0.y, c1.x, c1.y) else: bbox = mapnik.Envelope(c0.x, c0.y, c1.x, c1.y) m.zoom_to_box(bbox) im = mapnik.Image(imgx, imgy) mapnik.render(m, im) view = im.view(0, 0, imgx, imgy) # x,y,width,height view.save("frames/" + start_time + ".png", "png")
def process_trip(self, request, reqparams): """Process Trip request.""" if not 'trip_id' in reqparams: return trip_id = reqparams['trip_id'] trip = get_object_or_404(Trip, pk=trip_id, offer__id__isnull=False) new_style_name = "trip_style" if new_style_name not in self.mapfactory.styles: new_style = Style() new_rule = Rule() new_rule.symbols.append(PointSymbolizer()) new_rule.symbols.append(LineSymbolizer( Color('#2a4776'), 2) ) new_style.rules.append(new_rule) self.mapfactory.register_style(new_style_name, new_style) styles = {new_style_name: new_style_name} new_layer_name = "trip_%s" % trip_id str_new_layer_name = "%s_aggragatestyle" % new_layer_name if new_layer_name not in self.mapfactory.layers: new_layer = Layer(new_layer_name) new_layer.queryable = True new_layer.datasource = PostGIS( host=settings.DATABASE_HOST, user=settings.DATABASE_USER, password=settings.DATABASE_PASSWORD, port=settings.DATABASE_PORT, dbname=settings.DATABASE_NAME, table="(SELECT route FROM carpool_tripoffer o LEFT JOIN carpool_trip t ON t.offer_id=o.id WHERE t.id=%s) geom" % trip.offer_id ) new_layer.srs = '+init=epsg:4326' new_layer.styles.append(str_new_layer_name) self.mapfactory.register_aggregate_style(str_new_layer_name, styles) self.mapfactory.register_layer(new_layer, str_new_layer_name)
def copy_layer(obj): lyr = Layer(obj.name) if hasattr(lyr,'title'): lyr.title = obj.title if hasattr(lyr,'abstract'): lyr.abstract = obj.abstract # only if mapnik version supports it # http://trac.mapnik.org/ticket/503 if hasattr(lyr, 'tolerance'): lyr.tolerance = obj.tolerance lyr.toleranceunits = obj.toleranceunits lyr.srs = obj.srs lyr.minzoom = obj.minzoom lyr.maxzoom = obj.maxzoom lyr.active = obj.active lyr.queryable = obj.queryable lyr.clear_label_cache = obj.clear_label_cache lyr.datasource = obj.datasource if hasattr(obj,'wmsdefaultstyle'): lyr.wmsdefaultstyle = obj.wmsdefaultstyle if hasattr(obj,'wmsextrastyles'): lyr.wmsextrastyles = obj.wmsextrastyles if hasattr(obj,'meta_style'): lyr.meta_style = obj.meta_style if hasattr(lyr, 'wms_srs'): lyr.wms_srs = obj.wms_srs return lyr
def copy_layer(obj): lyr = Layer(obj.name) if hasattr(lyr, 'title'): lyr.title = obj.title if hasattr(lyr, 'abstract'): lyr.abstract = obj.abstract # only if mapnik version supports it # http://trac.mapnik.org/ticket/503 if hasattr(lyr, 'tolerance'): lyr.tolerance = obj.tolerance lyr.toleranceunits = obj.toleranceunits lyr.srs = obj.srs lyr.minzoom = obj.minzoom lyr.maxzoom = obj.maxzoom lyr.active = obj.active lyr.queryable = obj.queryable lyr.clear_label_cache = obj.clear_label_cache lyr.datasource = obj.datasource if hasattr(obj, 'wmsdefaultstyle'): lyr.wmsdefaultstyle = obj.wmsdefaultstyle if hasattr(obj, 'wmsextrastyles'): lyr.wmsextrastyles = obj.wmsextrastyles if hasattr(obj, 'meta_style'): lyr.meta_style = obj.meta_style if hasattr(lyr, 'wms_srs'): lyr.wms_srs = obj.wms_srs return lyr
def copy_layer(obj): lyr = Layer(obj.name) lyr.abstract = obj.abstract lyr.active = obj.active lyr.clear_label_cache = obj.clear_label_cache lyr.datasource = obj.datasource #lyr.maxzoom = obj.maxzoom #lyr.minzoom = obj.minzoom lyr.queryable = obj.queryable lyr.srs = obj.srs lyr.title = obj.title if hasattr(obj,'wmsdefaultstyle'): lyr.wmsdefaultstyle = obj.wmsdefaultstyle if hasattr(obj,'wmsextrastyles'): lyr.wmsextrastyles = obj.wmsextrastyles return lyr