Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Only write XML rules that apply to minzoom/maxzoom of the containing layer #469

@nimix

Description

@nimix

If a layer is restricted to certain zoom levels by minzoom/maxzoom properties it can get rule that can never apply for this layer because they only apply for scales outside minzoom/maxzoom. The following example output shows a case were only one of the rules is needed:

<Style name="place1" filter-mode="first">
  <Rule>
    <MaxScaleDenominator>50000</MaxScaleDenominator>
    <MinScaleDenominator>5000</MinScaleDenominator>
    <Filter>([type] = 'hamlet')</Filter>
    <TextSymbolizer fontset-name="fontset-1" fill="#000000" placement="point" wrap-width="65" minimum-distance="10" halo-radius="2" halo-fill="#ffffff" size="10"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>200000</MaxScaleDenominator>
    <MinScaleDenominator>50000</MinScaleDenominator>
    <Filter>([type] = 'suburb')</Filter>
    <TextSymbolizer fontset-name="fontset-1" fill="#000000" placement="point" wrap-width="65" minimum-distance="10" halo-radius="2" halo-fill="#ffffff" size="10"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>50000</MaxScaleDenominator>
    <MinScaleDenominator>5000</MinScaleDenominator>
    <Filter>([type] = 'village')</Filter>
    <TextSymbolizer size="12" fontset-name="fontset-1" fill="#000000" placement="point" wrap-width="65" minimum-distance="10" halo-radius="2" halo-fill="#ffffff"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>200000</MaxScaleDenominator>
    <MinScaleDenominator>50000</MinScaleDenominator>
    <Filter>([type] = 'village')</Filter>
    <TextSymbolizer fontset-name="fontset-1" fill="#000000" placement="point" wrap-width="65" minimum-distance="10" halo-radius="2" halo-fill="#ffffff" size="10"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>100000</MaxScaleDenominator>
    <MinScaleDenominator>12500</MinScaleDenominator>
    <Filter>([type] = 'town')</Filter>
    <TextSymbolizer size="12" halo-fill="#ffffff" placement="point" wrap-width="65" minimum-distance="10" fontset-name="fontset-0" halo-radius="2" fill="#222222"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>400000</MaxScaleDenominator>
    <MinScaleDenominator>100000</MinScaleDenominator>
    <Filter>([type] = 'town')</Filter>
    <TextSymbolizer halo-fill="#ffffff" placement="point" wrap-width="65" minimum-distance="10" size="10" fontset-name="fontset-0" halo-radius="2" fill="#222222"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>1500000</MaxScaleDenominator>
    <MinScaleDenominator>400000</MinScaleDenominator>
    <Filter>([type] = 'town')</Filter>
    <TextSymbolizer placement="point" wrap-width="65" minimum-distance="10" size="10" fontset-name="fontset-0" halo-radius="2" fill="#222222" halo-fill="#eeeeee"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>50000</MaxScaleDenominator>
    <MinScaleDenominator>25000</MinScaleDenominator>
    <Filter>([type] = 'city')</Filter>
    <TextSymbolizer size="14" placement="point" wrap-width="65" minimum-distance="10" fontset-name="fontset-0" halo-radius="2" fill="#222222" halo-fill="#eeeeee"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>1500000</MaxScaleDenominator>
    <MinScaleDenominator>50000</MinScaleDenominator>
    <Filter>([type] = 'city')</Filter>
    <TextSymbolizer size="12" placement="point" wrap-width="65" minimum-distance="10" fontset-name="fontset-0" halo-radius="2" fill="#222222" halo-fill="#eeeeee"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>50000000</MaxScaleDenominator>
    <MinScaleDenominator>1500000</MinScaleDenominator>
    <Filter>([type] = 'city')</Filter>
    <TextSymbolizer placement="point" wrap-width="65" minimum-distance="10" fontset-name="fontset-0" halo-radius="2" fill="#222222" size="10" halo-fill="#eeeeee"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>200000000</MaxScaleDenominator>
    <MinScaleDenominator>50000000</MinScaleDenominator>
    <Filter>([type] = 'country')</Filter>
    <TextSymbolizer size="10" fontset-name="fontset-1" halo-radius="2" fill="#222222" halo-fill="#eeeeee" placement="point" wrap-width="65" minimum-distance="10"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>200000000</MaxScaleDenominator>
    <MinScaleDenominator>100000000</MinScaleDenominator>
    <Filter>([type] = 'continent')</Filter>
    <TextSymbolizer size="14" fontset-name="fontset-0" halo-radius="2" fill="#222222" halo-fill="#eeeeee" placement="point" wrap-width="65" minimum-distance="10"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
  <Rule>
    <MaxScaleDenominator>500000000</MaxScaleDenominator>
    <MinScaleDenominator>200000000</MinScaleDenominator>
    <Filter>([type] = 'continent')</Filter>
    <TextSymbolizer size="12" fontset-name="fontset-0" halo-radius="2" fill="#222222" halo-fill="#eeeeee" placement="point" wrap-width="65" minimum-distance="10"><![CDATA[[name]]]></TextSymbolizer>
  </Rule>
</Style>
<Layer name="place1"
  maximum-scale-denominator="50000000"
  minimum-scale-denominator="1500000"
  srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over">
    <StyleName>place1</StyleName>
  </Layer>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions