In [2]:
import mapnik

In [3]:
m = mapnik.Map(800, 800)
m.background = mapnik.Color(0, 0, 0, 0)


mapnik.load_map_from_string(m, '''
<!DOCTYPE Map>
<Map srs="+proj=latlong +datum=WGS84" background-color="white" minimum-version="0.7.2">
   <Style name="label">
     <Rule>
          <TextSymbolizer size="15" fill="black" face-name="DejaVu Sans Bold" halo-fill="#DFDBE3" halo-radius="1" wrap-width="20">[Name]</TextSymbolizer>
     </Rule>
  </Style>
  <Style name="label_points">
      <Rule>
          <ShieldSymbolizer face-name="DejaVu Sans Bold" size="15" fill="#000000" halo-fill="#DFDBE3" halo-radius="1" file="./marker-24@2x.png" dx="3" dy="3">[Name]</ShieldSymbolizer>
      </Rule>
  </Style>
</Map>
''')

In [4]:
s = mapnik.Style() # style object to hold rules
r = mapnik.Rule() # rule object to hold symbolizers
# to fill a polygon we create a PolygonSymboloizer

polygon_symbolizer = mapnik.PolygonSymbolizer()
polygon_symbolizer.fill = mapnik.Color('blue')
r.symbols.append(polygon_symbolizer) # add the symbolizer to the rule object

# to add outlines to a polygon we create a LineSymbolizer
line_symbolizer = mapnik.LineSymbolizer()
line_symbolizer.stroke = mapnik.Color('red')
line_symbolizer.stroke_width = 5.0
r.symbols.append(line_symbolizer) # add the symbolizer to the rule object

s.rules.append(r)
s.opacity = 0.5

m.append_style('lines_polygons', s) # Styles are given names only as they are applied to the map



s = mapnik.Style()
r = mapnik.Rule()

point_symbolizer = mapnik.PointSymbolizer()
point_symbolizer.file = 'marker-24@2x.png'

r.symbols.append(point_symbolizer)
s.rules.append(r)
m.append_style('markers', s)

In [5]:
# Lines and polygons
## KML
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file = './test.kml', layer_by_index=0)
lyr.styles.append('lines_polygons')
bbox = lyr.envelope()
m.layers.append(lyr)

## GeoJSON
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./test.geojson', layer_by_index=0)
lyr.styles.append('lines_polygons')
m.layers.append(lyr)

In [6]:
# Text
## KML
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./text.kml', layer_by_index=0)
lyr.styles.append('label')
m.layers.append(lyr)

## GeoJSON
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./text.geojson', layer_by_index=0)
lyr.styles.append('label')
m.layers.append(lyr)

In [7]:
# Points
## KML
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./markers.kml', layer_by_index=0)
lyr.styles.append('markers')
m.layers.append(lyr)

## GeoJSON
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./markers.geojson', layer_by_index=0)
lyr.styles.append('markers')
m.layers.append(lyr)

In [8]:
# Points with labels
## KML
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./markers-labels.kml', layer_by_index=0)
lyr.styles.append('label_points')
m.layers.append(lyr)

## GeoJSON
lyr = mapnik.Layer('Drawing')
lyr.datasource = mapnik.Ogr(file='./markers-labels.geojson', layer_by_index=0)
lyr.styles.append('label_points')
m.layers.append(lyr)

In [9]:
m.zoom_all()

In [10]:
mapnik.render_to_file(m, 'test.png', 'png')

In [ ]: