<Map background-color="#eee" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"> <Style name="bug"> <Rule> <Filter>[id] = 'stroke'</Filter> <LineSymbolizer stroke-width='5' stroke='[value]' /> </Rule> <Rule> <Filter>[id] = 'stroke-width'</Filter> <LineSymbolizer stroke-width='[value]' stroke='#ff0000' /> </Rule> <Rule> <Filter>[id] = 'stroke-opacity'</Filter> <LineSymbolizer stroke-width='5' stroke='#ff0000' stroke-opacity="[value]" /> </Rule> <Rule> <Filter>[id] = 'offset'</Filter> <LineSymbolizer stroke-width='5' stroke='#ff0000' offset="[value]" /> </Rule> <Rule> <TextSymbolizer face-name='DejaVu Sans Book' dy='-5'>[id]</TextSymbolizer> </Rule> </Style> <Style name="frame"> <Rule> <PolygonSymbolizer /> </Rule> </Style> <!-- frame is a layer with a single polygon that is used to ensure that m.zoom_all() will zoom the map to a reasonable bounding extent to make the test easy to view with tools like nik2img.py (which calls m.zoom_all() by default). Another approach in >= Mapnik 2.3.x is to just sent a manual `extent` for the CSV datasource. --> <Layer name="frame" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"> <StyleName>frame</StyleName> <Datasource> <Parameter name="type">csv</Parameter> <Parameter name="inline"> wkt|name Polygon((-180.0 -125.0, -180.0 125.0, 180.0 125.0, 180.0 -125.0, -180.0 -125.0))|bounds </Parameter> </Datasource> </Layer> <!-- "bug" is a layer that should provide sample data that triggers the bug in question. It is listed after the "frame" layer so that it renders on top and is visible. --> <Layer name="bug" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"> <StyleName>bug</StyleName> <Datasource> <Parameter name="type">csv</Parameter> <Parameter name="inline"> id|value|wkt stroke|#ff0000|LineString(-160 -120,160 -120,160 -100) stroke-width|5|LineString(-160 -90,160 -90,160 -70) stroke-opacity|0.5|LineString(-160 -60,160 -60,160 -40) offset|3|LineString(-160 -30,160 -30,160 -10) </Parameter> </Datasource> </Layer> </Map>