layers-shapefiles.xml.inc中样式中的多个规则

时间:2012-03-01 08:14:28

标签: mapnik

我正在使用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中,给定样式允许多个规则,我缺少什么?

谢谢, 约翰

1 个答案:

答案 0 :(得分:0)

段错误表示您忘记运行generate_xml.py - 换句话说,样式表仍然包含inc/目录中需要填写%(something)s的文件.libxml2,库mapnik在引擎盖下使用,有一个愚蠢的bug,当实体无法加载时会导致段错误。