【问题标题】:Default Style Rule in MapnikMapnik 中的默认样式规则
【发布时间】:2015-12-10 14:17:56
【问题描述】:

在 Mapnik XML 样式元素中,有没有办法为给定的符号设置默认值?在以下示例中,我希望第一个规则为默认规则,第二个规则仅更改多边形颜色,即使用我的默认不透明度 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。有没有什么方法可以在不重复每条规则的填充不透明度的情况下获得我想要的?

【问题讨论】:

    标签: mapnik


    【解决方案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>
    

    【讨论】:

    • 谢谢。事实证明它在语法上更接近我想要的,但是,就像我自己的例子一样,最终绘制了两个符号,一个在另一个之上(见下面的答案)。在这种情况下,红色不仅仅是红色——它会与第一条规则中的红色混合在一起。
    【解决方案2】:

    我最初认为发生的事情和 Sergey 的回答都只是部分正确,所以我将在此处发布更完整的解释。

    在 Mapnik 中,所有匹配规则按匹配顺序应用(给定 filter-mode 的默认值)。我的问题和 Sergey 的回答中的示例将呈现 both 多边形符号,一个在另一个之上。换句话说,一个规则中的符号器实际上与其他规则中的符号器没有任何关系,除了它们都堆叠在一起,除非过滤器是互斥的。我想不出这种行为有什么用,但这就是它的工作方式。

    总结: 同一符号的替代版本必须放在互斥规则中,并且必须明确设置所有需要的选项。无法设置默认符号并部分覆盖它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      相关资源
      最近更新 更多