Configuration Files Mapnik

== Mapnik Python Script for Start-up and Processing ==
#!/usr/bin/env python
from mapnik import *
mapfile = "population.xml"
m = Map(1400, 600)
load_map(m, mapfile)
bbox = Envelope(Coord(-180.0, -75.0), Coord(180.0, 90.0))
m.zoom_to_box(bbox) 
render_to_file(m, 'world_population.png', 'png')
== Mapnik XML Configuration File ==
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map>
<!-- Sample Mapnik XML template by Dane Springmeyer -->
<Map bgcolor="white" srs="+proj=latlong +datum=WGS84">
 
 <Style name="population">
 <Rule>
 <!-- Built from Seven Class sequential YIGnBu from www.colorbrewer.org -->
 <!-- Quantile breaks originally from QGIS layer classification -->
 <Filter>[POP2005] = 0 </Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#ffffcc</CssParameter>
 </PolygonSymbolizer>
 <!-- Outlines for Antarctica look good -->
 <LineSymbolizer>
 <CssParameter name="stroke">black</CssParameter>
 <CssParameter name="stroke-width">.1</CssParameter>
 </LineSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] > 0 and [POP2005] < 15000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#c7e9b4</CssParameter>
 </PolygonSymbolizer>
 <!-- Outlines for Antarctica look good -->
 <LineSymbolizer>
 <CssParameter name="stroke">black</CssParameter>
 <CssParameter name="stroke-width">.1</CssParameter>
 </LineSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] >= 15000 and [POP2005] < 255000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#7fcdbb</CssParameter>
 </PolygonSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] >= 255000 and [POP2005] < 1300000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#1d91c0</CssParameter>
 </PolygonSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] >= 1300000 and [POP2005] < 4320000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#41b6c3</CssParameter>
 </PolygonSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] >= 4320000 and [POP2005] < 9450000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#225ea8</CssParameter>
 </PolygonSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] >= 9450000 and [POP2005] < 25650000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#225ea8</CssParameter>
 </PolygonSymbolizer>
 </Rule>
 
 <Rule>
 <Filter>[POP2005] >= 25650000 and [POP2005] < 1134000000</Filter>
 <PolygonSymbolizer>
 <CssParameter name="fill">#122F7F</CssParameter>
 </PolygonSymbolizer>
 </Rule>
 
 <Rule>
 <ElseFilter/> <!-- This will catch all other values - in this case just India and China -->
 <!-- A dark red polygon fill and black outline is used here to highlight these two countries -->
 <PolygonSymbolizer>
 <CssParameter name="fill">darkred</CssParameter>
 </PolygonSymbolizer>
 <LineSymbolizer>
 <CssParameter name="stroke">black</CssParameter>
 <CssParameter name="stroke-width">.7</CssParameter>
 </LineSymbolizer>
 </Rule>
 
 </Style>
 
 <Style name="countries_label">
 <Rule>
 <!-- Only label those countries with over 9 Million People -->
 <!-- Note: Halo and Fill are reversed to try to make them subtle -->
 <Filter>[POP2005] >= 4320000 and [POP2005] < 9450000</Filter>
 <TextSymbolizer name="NAME" face_name="DejaVu Sans Bold" size="7" fill="black" halo_fill= "#DFDBE3" halo_radius="1" wrap_width="20" spacing="5" allow_overlap="false" avoid_edges="false" min_distance="10"/>
 </Rule>
 
 <Rule>
 <!-- Only label those countries with over 9 Million People -->
 <!-- Note: Halo and Fill are reversed to try to make them subtle -->
 <Filter>[POP2005] >= 9450000 and [POP2005] < 25650000</Filter>
 <TextSymbolizer name="NAME" face_name="DejaVu Sans Book" size="9" fill="black" halo_fill= "#DFDBE3" halo_radius="1" wrap_width="20" spacing="5" allow_overlap="false" avoid_edges="false" min_distance="10"/>
 </Rule>
 
 <Rule>
 <!-- Those with over 25 Million get larger labels -->
 <Filter>[POP2005] >= 25650000 and [POP2005] < 1134000000</Filter>
 <TextSymbolizer name="NAME" face_name="DejaVu Sans Book" size="12" fill="white" halo_fill= "#2E2F39" halo_radius="1" wrap_width="20" spacing="5" allow_overlap="false" avoid_edges="true" min_distance="10"/>
 </Rule>
 
 <Rule>
 <!-- Those with over 25 Million get larger labels -->
 <!-- Note: allow_overlap is true here to allow India to sneak through -->
 <Filter>[POP2005] >= 1134000000</Filter>
 <TextSymbolizer name="NAME" face_name="DejaVu Sans Book" size="15" fill="white" halo_fill= "black" halo_radius="1" wrap_width="20" spacing="5" allow_overlap="true" avoid_edges="true" min_distance="10"/>
 </Rule>
 </Style>
 
 <Layer name="countries" status="on">
 <!-- Style order determines layering hierarchy -->
 <!-- Labels go on top so they are listed second -->
 <StyleName>population</StyleName>
 <StyleName>countries_label</StyleName>
 <Datasource>
 <Parameter name="type">shape</Parameter>
 <Parameter name="file">path/to/your/unzipped/TM_WORLD_BORDERS_SIMPL-0.2/TM_WORLD_BORDERS_SIMPL-0.2</Parameter>
 </Datasource>
 </Layer>
</Map>