OsmarenderRules.xml
Jump to navigation
Jump to search
This file is a bit obsolete now. The file osm-map-features.xml does a much better job.
An OsmarenderRules.xml controls the way Osmarender does it's stuff. See Osmarender/Rules#Rule_file_grammar for details of the file structure.
You can define your own rendering rules file, but the following yields reasonably good rendering results. It supports a mixture of the commonly used class tags and some of the highway, waterway and railway tag values from Map Features.
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="osmarender.xsl"?>
<rules
data="data.xml"
scale="2"
xml-stylesheet="rules.css">
<style type="text/css">
.highway-motorway-casing {
stroke-width: 5;
stroke-linecap: round;
stroke: #000000;
}
.highway-motorway-core {
stroke-width: 3;
stroke-linecap: round;
stroke: #809BC0;
}
.hotel {
fill: green;
stroke: black;
stroke-width: 1;
}
</style>
<!-- draw residential shading first -->
<rule k="abutters" v="residential">
<line style="stroke-width: 18; stroke-linecap: round; stroke: #f2f2f2;"/>
</rule>
<rule k="class" v="residential">
<line style="stroke-width: 18; stroke-linecap: round; stroke: #f2f2f2;"/>
</rule>
<!-- Shading for parking areas -->
<rule k="highway" v="parking">
<line style="stroke-width: 6; stroke-linecap: round; stroke: #f3f282;"/>
</rule>
<!-- draw waterway casings -->
<rule k="class" v="river">
<line style="stroke-width: 8; stroke-linecap: round; stroke: #aaaaaa;"/>
</rule>
<rule k="waterway" v="river">
<line style="stroke-width: 8; stroke-linecap: round; stroke: #aaaaaa;"/>
</rule>
<rule k="waterway" v="canal">
<line style="stroke-width: 4; stroke-linecap: round; stroke: #aaaaaa;"/>
</rule>
<!-- draw waterway cores -->
<rule k="class" v="river">
<line style="stroke-width: 6; stroke-linecap: round; stroke: #89bac6;"/>
</rule>
<rule k="waterway" v="river">
<line style="stroke-width: 6; stroke-linecap: round; stroke: #89bac6;"/>
</rule>
<rule k="waterway" v="canal">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #89bac6;"/>
</rule>
<!-- next draw footpaths -->
<rule k="class" v="path">
<line style="stroke-width: 1; stroke-linecap: round; stroke: #d79331;"/>
</rule>
<rule k="highway" v="footway">
<line style="stroke-width: 1; stroke-linecap: round; stroke: #d79331;"/>
</rule>
<!-- draw highway casings for minor roads -->
<rule k="class" v="~"> <!-- Any segment without a class key -->
<line style="stroke-width: 3; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="highway" v="unclassified">
<line style="stroke-width: 3; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="class" v="residential">
<line style="stroke-width: 3; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="highway" v="residential">
<line style="stroke-width: 3; stroke-linecap: round; stroke: #000000;"/>
</rule>
<!-- draw highway cores for minor roads -->
<rule k="class" v="~"> <!-- Any segment without a class key -->
<line style="stroke-width: 2; stroke-linecap: round; stroke: #E6E6E6;"/>
</rule>
<rule k="highway" v="unclassified">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #E6E6E6;"/>
</rule>
<rule k="class" v="residential">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #E6E6E6;"/>
</rule>
<rule k="highway" v="residential">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #E6E6E6;"/>
</rule>
<!-- draw railway lines -->
<rule k="railway" v="rail">
<line style="stroke-width: 3; stroke-linecap: round; stroke: #000000;"/>
</rule>
<!-- draw highway casings for major roads -->
<rule k="class" v="secondary">
<line style="stroke-width: 4; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="highway" v="secondary">
<line style="stroke-width: 4; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="class" v="primary">
<line style="stroke-width: 4; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="highway" v="primary">
<line style="stroke-width: 4; stroke-linecap: round; stroke: #000000;"/>
</rule>
<rule k="class" v="motorway">
<line class='highway-motorway-casing'/>
</rule>
<rule k="highway" v="motorway">
<line class='highway-motorway-casing'/>
</rule>
<!-- draw highway cores for major roads -->
<rule k="class" v="secondary">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #FDBF6F;"/>
</rule>
<rule k="highway" v="secondary">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #FDBF6F;"/>
</rule>
<rule k="class" v="primary">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #7FC97F;"/>
</rule>
<rule k="highway" v="primary">
<line style="stroke-width: 2; stroke-linecap: round; stroke: #7FC97F;"/>
<text k="ref" font-family='Verdana' font-size='10px' fill='black'/>
</rule>
<rule k="class" v="motorway">
<line class='highway-motorway-core'/>
</rule>
<rule k="highway" v="motorway">
<line class='highway-motorway-core'/>
</rule>
<!-- draw nodes -->
<rule k="class" v="village">
<text k="name" font-family='Verdana' font-size='10px' fill='black'/>
</rule>
<rule k="class" v="town">
<text k="name" font-family='Verdana' font-size='14px' font-style='bold' fill='black'/>
</rule>
<rule k="class" v="school">
<circle r='3' fill='red' stroke='black' stroke-width='1'/>
<text k="name" font-family='Verdana' font-size='10px' fill='black' x-offset='4' y-offset='4'/>
</rule>
<rule k="class" v="hotel">
<circle r='3' class='hotel'/>
<text k="name" font-family='Verdana' font-size='10px' fill='black' x-offset='4' y-offset='4'/>
</rule>
<rule k="class" v="church">
<circle r='3' fill='black' stroke='black' stroke-width='1'/>
<text k="name" font-family='Verdana' font-size='10px' fill='black' x-offset='4' y-offset='4'/>
</rule>
<rule k="class" v="historic-name">
<text k="name" font-family='Verdana' font-size='16px' fill='black' font-style='italic'/>
</rule>
<rule k="class" v="clockwise-roundabout">
<circle r='3' fill='white' stroke='black' stroke-width='1'/>
</rule>
<rule k="class" v="anti-clockwise-roundabout">
<circle r='3' fill='white' stroke='black' stroke-width='1'/>
</rule>
</rules>