I’m using mapnik 0.7.1 and tilelite with openlayers. I would like to prescribe two rules under a style for a shapefile layer (within layers-shapefiles.xml.inc), however, liteserv.py will not start if I do this. I also tried two styles for this layer (one rule per style), but same result. Here is the style block:
<Style name="wilderness_boundaries">
<Rule>
&maxscale_zoom0;
&minscale_zoom9;
<PolygonSymbolizer>
<CssParameter name="fill">#72B656</CssParameter>
</PolygonSymbolizer>
<LineSymbolizer>
<CssParameter name="stroke">grey</CssParameter>
<CssParameter name="stroke-width">1.0</CssParameter>
<CssParameter name="stroke-dasharray">4,2</CssParameter>
</LineSymbolizer>
</Rule>
<Rule>
&maxscale_zoom10;
&minscale_zoom20;
<PolygonSymbolizer>
<CssParameter name="fill">#72B656</CssParameter>
</PolygonSymbolizer>
<LineSymbolizer>
<CssParameter name="stroke">grey</CssParameter>
<CssParameter name="stroke-width">1.0</CssParameter>
<CssParameter name="stroke-dasharray">4,2</CssParameter>
</LineSymbolizer>
<TextSymbolizer name="NAME" fontset_name="book-fonts" size="8" dy="2" fill="grey" halo_radius="1" />
</Rule>
</Style>
and the corresponding layer definition:
<Layer name="wilderness_boundaries" status="on" srs="&srs4326;">
<StyleName>wilderness_boundaries</StyleName>
<Datasource>
<Parameter name="type">shape</Parameter>
<Parameter name="file">&world_boundaries;/wilderness_EPSG4326.shp</Parameter>
<Parameter name="encoding">latin1</Parameter>
</Datasource>
</Layer>
If I execute generate_image.py with this configuration, I get a segmentation fault.
As you can see, I am trying to show wilderness area polygons at all zoom levels, but label them only at zoom levels above 10. Multiple rules are allowed for a given style in osm.xml, what am I missing?
Thanks,
John
a segfault indicates you forgot to run
generate_xml.py– in other words the styles sheet still has files in theinc/directory that have%(something)sthat need filled in. libxml2, the library mapnik uses under the hood, has a silly bug that causes segfaults when entities cannot be loaded.