Mapnik中的默认样式规则

时间:2015-12-01 19:38:05

标签: mapnik

在Mapnik XML Style元素中,有没有办法为给定的符号化器设置默认值?在下面的示例中,我希望第一个规则是默认值,第二个规则只更改多边形颜色,即使用我的默认不透明度0.5:

<Style name="MyStyle">
  <Rule>
    <PolygonSymbolizer fill="gray" fill-opacity="0.5"/>
  </Rule>
  <Rule>
    <Filter>([some_field] &lt; 2)</Filter>
    <PolygonSymbolizer fill="red"/>
  </Rule>
</Style>

实际发生的事情是匹配过滤器的功能变为红色并将其不透明度设置为1.有没有办法得到我想要的而不重复每个规则中的填充不透明度?

2 个答案:

答案 0 :(得分:1)

据我所知,你不能用规则做到这一点。但是你可以使用rgba颜色来填充具有不透明度的多边形。

试试这个:

<Style name="MyStyle">
  <Rule>
    <PolygonSymbolizer fill="rgba(204, 204, 204, 0.5)" />
  </Rule>
  <Rule>
    <Filter>([some_field] &lt; 2)</Filter>
    <PolygonSymbolizer fill="rgba(255, 0, 0, 0.5)" />
  </Rule>
</Style>

答案 1 :(得分:1)

我最初的想法和谢尔盖的回答都只是部分正确,所以我会在这里发布一个更全面的解释。

在Mapnik中,所有匹配规则将按照匹配的顺序应用(给定filter-mode的默认值)。我的问题中的例子和谢尔盖的答案将呈现两个多边形符号,一个在另一个之上。换句话说,一个规则中的符号化器实际上与其他规则中的符号化器无关,除非它们全部堆叠在一起,除非过滤器是互斥的。我无法想到这种行为的用途,但这就是它的工作方式。

摘要:相同符号程序的备用版本必须放在互斥规则中,并且必须明确设置所有需要的选项。无法设置默认符号系统并部分覆盖它。