我正在使用mapnik 0.7.1和tilelite与openlayers。我想在shapefile层的样式下规定两个规则(在layers-shapefiles.xml.inc中),但是,如果我这样做,liteserv.py将不会启动。我还尝试了这个图层的两种样式(每种样式一个规则),但结果相同。这是样式块:
<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>
和相应的图层定义:
<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>
如果我使用此配置执行generate_image.py,则会出现分段错误。
正如您所看到的,我试图在所有缩放级别显示荒野区域多边形,但仅在大于10的缩放级别标记它们。在osm.xml中,给定样式允许多个规则,我缺少什么?
谢谢, 约翰
答案 0 :(得分:0)
段错误表示您忘记运行generate_xml.py
- 换句话说,样式表仍然包含inc/
目录中需要填写%(something)s
的文件.libxml2,库mapnik在引擎盖下使用,有一个愚蠢的bug,当实体无法加载时会导致段错误。