def test_feature_attributes(): lyr = mapnik2.Layer('test') lyr.datasource = mapnik2.Shapefile(file='../data/shp/poly.shp') features = lyr.datasource.all_features() feat = features[0] attrs = {'PRFEDEA': u'35043411', 'EAS_ID': 168, 'AREA': 215229.266} eq_(feat.attributes, attrs) eq_(lyr.datasource.fields(), ['AREA', 'EAS_ID', 'PRFEDEA']) eq_(lyr.datasource.field_types(), [float, int, str])
def test_shapefile_init(): s = mapnik2.Shapefile(file='../../demo/data/boundaries') e = s.envelope() assert_almost_equal(e.minx, -11121.6896651, places=7) assert_almost_equal(e.miny, -724724.216526, places=6) assert_almost_equal(e.maxx, 2463000.67866, places=5) assert_almost_equal(e.maxy, 1649661.267, places=3)
def test_adding_datasource_to_layer(): map_string = '''<?xml version="1.0" encoding="utf-8"?> <Map> <Layer name="world_borders"> <StyleName>world_borders_style</StyleName> <StyleName>point_style</StyleName> <!-- leave datasource empty --> <!-- <Datasource> <Parameter name="file">../data/shp/world_merc.shp</Parameter> <Parameter name="type">shape</Parameter> </Datasource> --> </Layer> </Map> ''' m = mapnik2.Map(256, 256) mapnik2.load_map_from_string(m, map_string) # validate it loaded fine eq_(m.layers[0].styles[0],'world_borders_style') eq_(m.layers[0].styles[1],'point_style') eq_(len(m.layers),1) # also assign a variable reference to that layer # below we will test that this variable references # the same object that is attached to the map lyr = m.layers[0] # ensure that there was no datasource for the layer... eq_(m.layers[0].datasource,None) eq_(lyr.datasource,None) # also note that since the srs was black it defaulted to wgs84 eq_(m.layers[0].srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') eq_(lyr.srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') # now add a datasource one... ds = mapnik2.Shapefile(file='../data/shp/world_merc.shp') m.layers[0].datasource = ds # now ensure it is attached eq_(m.layers[0].datasource.name(),"shape") eq_(lyr.datasource.name(),"shape") # and since we have now added a shapefile in spherical mercator, adjust the projection lyr.srs = '+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs' # test that assignment eq_(m.layers[0].srs,'+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs') eq_(lyr.srs,'+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs')
def test_feature_envelope(): lyr = mapnik2.Layer('test') lyr.datasource = mapnik2.Shapefile(file='../data/shp/poly.shp') features = lyr.datasource.all_features() for feat in features: env = feat.envelope() contains = lyr.envelope().contains(env) eq_(contains, True) intersects = lyr.envelope().contains(env) eq_(intersects, True)
def test_feature_hit_count(): # results in different results between shp and ogr! #bbox = (-14284551.8434, 2074195.1992, -7474929.8687, 8140237.7628) bbox = (1113194.91,4512803.085,2226389.82,6739192.905) query = mapnik2.Query(mapnik2.Box2d(*bbox)) ds1 = mapnik2.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0) for fld in ds1.fields(): query.add_property_name(fld) ds2 = mapnik2.Shapefile(file='../data/shp/world_merc.shp') count1 = len(ds1.features(query).features) count2 = len(ds2.features(query).features) eq_(count1,count2,"Feature count differs between OGR driver (%s features) and Shapefile Driver (%s features) when querying the same bbox" % (count1,count2))
def test_shapefile_properties(): s = mapnik2.Shapefile(file='../../demo/data/boundaries', encoding='latin1') f = s.features_at_point(s.envelope().center()).features[0] eq_(f['CGNS_FID'], u'6f733341ba2011d892e2080020a0f4c9') eq_(f['COUNTRY'], u'CAN') eq_(f['F_CODE'], u'FA001') eq_(f['NAME_EN'], u'Quebec') eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['Shape_Area'], 1512185733150.0) eq_(f['Shape_Leng'], 19218883.724300001) # Check that the deprecated interface still works, # remove me once the deprecated code is cleaned up eq_(f.properties['Shape_Leng'], 19218883.724300001)
def rpc_renderCoordOld(self, lat, lon, zoom): """ Renders a map for the given coordinates. """ Map = None LandmassShapefile = 'cape/Interface/ne_110m_admin_0_countries.shp' im = mapnik.Image(self.mapsize[0], self.mapsize[1]) m = mapnik.Map(self.mapsize[0], self.mapsize[1]) m.background = mapnik.Color(self.backgroundColor) s = mapnik.Style() r = mapnik.Rule() polygon_symbolizer = mapnik.PolygonSymbolizer( mapnik.Color(self.foregroundColor)) r.symbols.append(polygon_symbolizer) line_symbolizer = mapnik.LineSymbolizer( mapnik.Color('rgb(50%,50%,50%)'), 0.1) r.symbols.append(line_symbolizer) s.rules.append(r) m.append_style('My Style', s) ds = mapnik.Shapefile(file=LandmassShapefile) layer = mapnik.Layer('world') layer.datasource = ds layer.styles.append('My Style') m.layers.append(layer) center = mapnik.Coord(lat, lon) transform = mapnik.ProjTransform(self.longlat, self.merc) merc_center = transform.forward(center) dx = (20037508.34 * 2 * (self.mapsize[0] / 2)) / (256 * (2**(zoom))) minx = merc_center.x - dx maxx = merc_center.x + dx m.aspect_fix_mode = mapnik.aspect_fix_mode.ADJUST_BBOX_HEIGHT merc_bbox = mapnik.Box2d(minx, merc_center.y - 1, maxx, merc_center.y + 1) m.zoom_to_box(merc_bbox) mapnik.render(m, im) Map = im.tostring('png') return (True, Map)
def main(root, **options): m = mapnik.Map(1, 1) datasource = options.get('datasource') if datasource and datasource.endswith('shp'): shp_dir = os.path.abspath(datasource).split('.shp')[0] name = datasource.split('.shp')[0] datasource = mapnik.Shapefile(file=shp_dir) if srid is not None: m.srs = '+init=epsg:%s' % srid else: srs = proj4_from_osr(shp_dir) if srs: m.srs = srs layers = [] if hasattr(root, 'NamedLayer'): layers.extend(root.NamedLayer) if hasattr(root, 'UserLayer'): layers.extend(root.UserLayer) for layer in layers: m_layer, styles = ogc_layer_to_mapnik(layer) for (name, style) in styles: m.append_style(name, style) if datasource: m_layer.datasource = datasource m_layer.srs = m.srs m.layers.append(m_layer) 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)
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
def compare_shape_between_mapnik_and_ogr(shapefile,query=None): ds1 = mapnik2.Ogr(file=shapefile,layer_by_index=0) ds2 = mapnik2.Shapefile(file=shapefile) if query: fs1 = ds1.features(query) fs2 = ds2.features(query) else: fs1 = ds1.featureset() fs2 = ds2.featureset() count = 0; while(True): count += 1 feat1 = fs1.next() feat2 = fs2.next() if not feat1: break #import pdb;pdb.set_trace() eq_(feat1.id(),feat2.id(), '%s : ogr feature id %s "%s" does not equal shapefile feature id %s "%s"' % (count,feat1.id(),str(feat1.attributes), feat2.id(),str(feat2.attributes)) ) return True
def get(self): mapfile = os.path.join(DATA_PATH, 'hazard', 'flood.shp') #mapfile = os.path.join(DATA_PATH, 'impact', 'impact.json') filename = os.path.join(DATA_PATH, 'pdf', 'report_map.pdf') filename2 = os.path.join(DATA_PATH, 'pdf', 'report_map.png') map = mapnik2.Map(600, 400) map.background = mapnik2.Color('steelblue') s = mapnik2.Style() r = mapnik2.Rule() polygon_symbolizer = mapnik2.PolygonSymbolizer( mapnik2.Color('#f2eff9')) r.symbols.append(polygon_symbolizer) line_symbolizer = mapnik2.LineSymbolizer( mapnik2.Color('rgb(50%,50%,50%)'), 0.1) r.symbols.append(line_symbolizer) s.rules.append(r) map.append_style('My Style', s) ds = mapnik2.Shapefile(file=mapfile) layer = mapnik2.Layer('world') layer.datasource = ds layer.styles.append('My Style') map.layers.append(layer) map.zoom_all() mapnik2.render_to_file(map, filename2, 'png') #bbox = mapnik.Envelope(-180.0,-90.0,180.0,90.0) #map.zoom_to_box(bbox) surface = cairo.PDFSurface(filename, map.width, map.height) mapnik2.render(map, surface) surface.finish() with open(filename) as data: pdf = data.read() data.close() self.set_header("Content-Type", "application/pdf") self.write(pdf)
# MaxScaleDenominator = INF # Lets keep things simple and use default value, but to create a map we # we still must provide at least one Symbolizer. Here we want to fill countries polygons with # greyish colour and draw outlines with a bit darker stroke. r = mapnik2.Rule() r.symbols.append(mapnik2.PolygonSymbolizer(mapnik2.Color('#f2eff9'))) r.symbols.append(mapnik2.LineSymbolizer(mapnik2.Color('rgb(50%,50%,50%)'), 0.1)) s.rules.append(r) # Here we have to add our style to the Map, giving it a name. m.append_style('My Style', s) # Here we instantiate our data layer, first by giving it a name and srs (proj4 projections string), and then by giving it a datasource. lyr = mapnik2.Layer('world', "+proj=latlong +datum=WGS84") # Then provide the full filesystem path to a shapefile in WGS84 or EPSG 4326 projection without the .shp extension # A sample shapefile can be downloaded from http://mapnik-utils.googlecode.com/svn/data/world_borders.zip lyr.datasource = mapnik2.Shapefile( file='/home/garel/geodata/vecteur/world/ne_110m_admin_0_countries.shp') lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) # Write the data to a png image called world.png in the base directory of your user mapnik2.render_to_file(m, '/home/garel/geodata/raster/world/world.png', 'png') # Exit the python interpreter exit()
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
#!/usr/bin/env python import mapnik2 as mapnik m = mapnik.Map(6000,3000,"+proj=latlong +datum=WGS84") m.background = mapnik.Color('steelblue') s = mapnik.Style() r=mapnik.Rule() r.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#f2eff9'))) r.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1)) s.rules.append(r) m.append_style('My Style',s) lyr = mapnik.Layer('world',"+proj=latlong +datum=WGS84") lyr.datasource = mapnik.Shapefile(file='/opt/gdata/world_borders.shp') lyr.styles.append('My Style') m.layers.append(lyr) m.zoom_to_box(lyr.envelope()) mapnik.render_to_file(m,'world.png', 'png')
def test_field_listing(): lyr = mapnik2.Layer('test') lyr.datasource = mapnik2.Shapefile(file='../data/shp/poly.shp') fields = lyr.datasource.fields() eq_(fields, ['AREA', 'EAS_ID', 'PRFEDEA'])
def test_total_feature_count_shp(): lyr = mapnik2.Layer('test') lyr.datasource = mapnik2.Shapefile(file='../data/shp/poly.shp') features = lyr.datasource.all_features() num_feats = len(features) eq_(num_feats, 10)
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)
# uses mapnik 2 import mapnik2 symbolizer = mapnik2.PolygonSymbolizer(mapnik2.Color("darkgrey")) rule = mapnik2.Rule() rule.symbols.append(symbolizer) style = mapnik2.Style() style.rules.append(rule) layer = mapnik2.Layer("mapLayer") layer.datasource = mapnik2.Shapefile( file="/data/82945364-10m-admin-0-countries.shp") layer.styles.append("mapStyle") map = mapnik2.Map(2400, 1200) map.background = mapnik2.Color("black") map.append_style("mapStyle", style) map.layers.append(layer) map.zoom_all() mapnik2.render_to_file(map, "map.png", "png")
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') #''' #----==== shape style_vct = mapnik.Style() # style object to hold rules rule_vct = mapnik.Rule() # rule object to hold symbolizers symbol_vct = mapnik.PolygonSymbolizer(mapnik.Color('#f2eff9')) symbol_vct.opacity = 0.8 rule_vct.symbols.append( symbol_vct) # add the symbolizer to the rule object line_symbolizer = mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'), 0.1) 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.srs = '+proj=utm +zone=46 +ellps=WGS84 +units=m +no_defs ' mlyr_shp.datasource = ds_shp mlyr_shp.styles.append('vector') _map.layers.append(mlyr_shp) #''' #----==== 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.mode = 'multiply' symbol_gdal.opacity = 0.5 #symbol_gdal.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_INHERIT, mapnik.Color(0,255,255)) c = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, mapnik.Color(255, 0, 0)) c.epsilon = 0.001 c.add_stop(0) c.add_stop(255, mapnik.COLORIZER_LINEAR, mapnik.Color("red")) c.get_color(255) 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) #==== style_gdal1 = mapnik.Style() # style object to hold rules rule_gdal1 = mapnik.Rule() # rule object to hold symbolizers symbol_gdal1 = mapnik.RasterSymbolizer() #symbol_gdal.mode = 'multiply' symbol_gdal1.opacity = 0.5 #symbol_gdal.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_INHERIT, mapnik.Color(0,255,255)) c1 = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, mapnik.Color(0, 255, 0)) c1.epsilon = 0.001 c1.add_stop(0) c1.add_stop(255, mapnik.COLORIZER_LINEAR, mapnik.Color("green")) c1.get_color(255) c1.stops[1].color #''' symbol_gdal1.colorizer = c1 rule_gdal1.symbols.append(symbol_gdal1) style_gdal1.rules.append(rule_gdal1) _map.append_style("Raster Style2", style_gdal1) mlyr_gdal1 = mapnik.Layer('TM_images2') mlyr_gdal1.datasource = mapnik.Gdal(file=f_pct, band=2, bbox=bbox) mlyr_gdal1.srs = '+proj=utm +zone=46 +ellps=WGS84 +units=m +no_defs ' mlyr_gdal1.styles.append('Raster Style2') _map.layers.append(mlyr_gdal1) #==== #==== style_gdal_b = mapnik.Style() # style object to hold rules rule_gdal_b = mapnik.Rule() # rule object to hold symbolizers symbol_gdal_b = mapnik.RasterSymbolizer() #symbol_gdal.mode = 'multiply' symbol_gdal_b.opacity = 0.5 #symbol_gdal.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_INHERIT, mapnik.Color(0,255,255)) c_b = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, mapnik.Color(0, 0, 255)) c_b.epsilon = 0.001 c_b.add_stop(0) c_b.add_stop(255, mapnik.COLORIZER_LINEAR, mapnik.Color("blue")) c_b.get_color(255) c_b.stops[1].color #''' symbol_gdal_b.colorizer = c_b rule_gdal_b.symbols.append(symbol_gdal_b) style_gdal_b.rules.append(rule_gdal_b) _map.append_style("Raster Style3", style_gdal_b) mlyr_gdal_b = mapnik.Layer('TM_images3') mlyr_gdal_b.datasource = mapnik.Gdal(file=f_pct, band=3, bbox=bbox) mlyr_gdal_b.srs = '+proj=utm +zone=46 +ellps=WGS84 +units=m +no_defs ' mlyr_gdal_b.styles.append('Raster Style3') _map.layers.append(mlyr_gdal_b) #==== _map.zoom_all() # Write the data to a png image called world.png the current directory mapnik.render_to_file(_map, f_render, 'png')
# type='shape' # file='/path/to/shape' # raster: # type='raster' # file='/path/to/raster' # postgis: # type='postgis' # host='127.0.0.1' # dbname='mydatabase' # user='******' # password='******' # table= TODO provpoly_lyr = mapnik2.Layer('Provinces') provpoly_lyr.srs = "+proj=lcc +ellps=GRS80 +lat_0=49 +lon_0=-95 +lat+1=49 +lat_2=77 +datum=NAD83 +units=m +no_defs" provpoly_lyr.datasource = mapnik2.Shapefile(file='../data/boundaries', encoding='latin1') # We then define a style for the layer. A layer can have one or many styles. # Styles are named, so they can be shared across different layers. # Multiple styles per layer behaves functionally like multiple layers. The # data is completely re-scanned for each style within one layer, and a style # 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()