Pieter Vander Vennet's diary

Recent diary entries

On Sett Pavements

Posted by Pieter Vander Vennet on 14 January 2018 in English (English)

I'm from Bruges (Belgium). You know, that famous medieval city in Belgium.

As everyone in Belgium knows, the center of Bruges is paved mostly in sett/cobblestones. Personally, I'm pretty fond of those sett pavements. They're way nicer to see then asphalt (not to mention conrete plates), the absorb a lot of heat in the summer (cooling the city) which is released again in autumn.

But, as the bicycle is my primary means of transportation, one drawback comes to mind: they're uncomfortable to cycle on - especially when pulling a cart. Some types of set pavement are to be avoided then - I'd rather drive 200 meters over asphalt than 100 over the big boulder. However, the smaller sett -often laid in arcs- is more comfortable to drive on and has a smaller penalty.

This implies that more information should be added to the 'surface'-tag. In this document, I propose a few extra tags to deal with this extra information; and what kind of sett these are. These tags are used in Bruges; feel free to use them in other places as well.

All example pictures are taken by me, and may be used freely for OSM-related endeavours (e.g. wiki, tools, ...).

Cobblestone vs. Sett

First things first.. What is sett stone? And what are cobblestones?

According to Wikipedia, Cobblestone is a natural building material based on cobble-sized stones, and is used for pavement roads, streets, and buildings. Sett is distinct from a cobblestone by being quarried or shaped to a regular form, whereas cobblestone is generally of a naturally occurring form.

In practice, cobblestone is often used in OSM to describe sett stones - although incorrectly. The wiki itself acknowledges this:

  • surface=cobblestone: Cobblestone paving. "Cobblestone" is used in the colloquial meaning here, and therefore includes the type of stones that would more precisely be called "setts". (Used for around 162k ways)
  • surface=sett: Sett surface is formed from stones quarried or worked to a regular shape. In OSM, this is a subset of "cobblestone", and it is far more common to tag these surfaces with surface=cobblestone instead. (Used for around 52k ways).

In other words, please, only use sett from now on; and use cobblestone only for when the natural form of the stones is still visible and thus results in a random pattern of laying the stones.

And then there is the even more attrocious surface=cobblestone:flattened; still in use for around 4k ways. The wiki says on this that this is neither a correct name, like sett (cobblestone is by definition not shaped into any form), nor a colloquially used name, like cobblestone. In other words, a tag that should not be used anymore and be translated to sett.


As already discussed: cobblestone is somewhat chaotic in natura, as can be seen in this image (again, from Wikipedia).


Types of sett

With these prerequisites out of the way, lets talk about the main topic of the post: sett in all its sizes and patterns.

In Bruges, there are three kinds of shapes:

  • Rectangular, often quite big (25cm*10cm)
  • Square, measuring around 10cm*10cm
  • Cube, small cubes of around 5cm

These can be laid down in various patterns, as described belowed.

Patterns of sett

Big boulder (aka 'normal sett')

surface=sett implies sett:pattern=interleaved and sett:type=rectangular

The first, and most common type of sett are the 'big boulders': the big, rectangular sett stones, in a interleaved pattern like a brick wall. As these are the most common stones, I didn't bother to add more tagging to them.


surface=sett sett:pattern=arc implies sett:type=cube

The second most common type of sett are small cubes, in a pattern of multiple, parallell arcs. Nice to see, and not to be confused with the very similar belgian fan.

Some examples I found in Bruges:

  • Simon-Stevenplein has arcs, where a few arcs are in white cubes. Notice how those white arcs never touch each other:
  • De Burg in Bruges has arcs as well:

Belgian Fan

surface=sett sett:pattern=belgian_fan implies sett:type=cube

Even more beautifull -and extremely rare- is the belgian fan. The cubes are laid in shell-like or fan-like patterns, as can be seen in the Sint-Amandsstraat near the Markt:

This is the only street in Bruges that still has this pattern! There used to be Belgian Fan in the streets around the Simon Steven-square as well; but a recent (~10 year ago) reconstruction of the site used 'normal' arcs, as visible above. The other place that still has a few specs of belgian fan is one construction site as well; so it is endangered as well. Perhaps someone should complain to Unesco that we are losing some world heritage!


surface=sett sett:pattern=interleaved implies sett:type=square

Although square sett is mostly used for foothpaths, it is sometimes used for shorter streets or speed tables as well. The square sett can be used interleaved, as here:

Square without pattern tag

surface=sett sett:type=square implies sett:type=square

... or used in a straight way, as here:

Paving stones

At last a word on paving_stones: the consensus here is that these are (in general) modern, mechanically shaped to neatly fit. The can be cast from concrete, they can be natural stones that are cut in a specific shape, ... For example, I consider brick roads to be a subclass of paving stones (but I'd tag it as surface=brick anyway).

The distinction with sett can be very small and subjective. For example, I have been doubting what to call the following:

In conclusion: a nice map to see

As you've already noticed in my previous posts, I've customized the routing parameters for OSMand to help with this task. It also was an excellent reason to map all the street pavements of Bruges. It was a lot of fun to do, and it helped to discover new places in Bruges; both beautiful or ugly.

The result of all this mapping can be visualized, thanks to overpass-turbo.

Location: Brugge-Centrum, Brugge, Bruges, Brugge, West Flanders, Flanders, Belgium

Tweaking the OSM-And routing engine

Posted by Pieter Vander Vennet on 8 November 2017 in English (English)

After some experimenting and help from the Belgian OSM Community, I figured out how to tweak the parameters for the routing engine and steer the navigation process. It seemed as if the technical documentation was missing, so lets write it here.

The parameter file: routing.xml

All parameters for the routing file are stored in a single XML.

You can find this XML on the OSMAnd github. Head over there, and download it.

This document should be placed in a place where OsmAnd will find it. As I chose 'external storage' to store my maps (settings -> general settings -> Data Storage Folder (under miscellaneous title), adding this custom routing is easy. Plug your phone in your computer and go to the path /sdcard/Android/data/ Copy routing.xml over.

Reading the parameter file

routing.xml is actually documented quite good! Read the docs there to get some general idea.

Adding an option to a profile

The parameters are split per profile. I edited the bicycle profile, as that is what I use most (also see my previous diary entry).

Over there, add a toggle, e.g., if you want to avoid sett surfaces:

    <parameter id="avoid_sett" name="Strongly prefer asphalt and paving stones" description="Tries to route around sett and cobblestone, ideal if riding with a cycling cart" type="boolean"/>

The id is the name you'll use in if-statements, the name is what shows up in OSMAnd. Save the file as described above and restart OsmAnd. Start navigation to somewhere. If you click the settings (the cogwheel on the bottom when starting navigation), your new parameter should show up!

Tweaking weights

Routing considers three major aspects:

  • access
  • speed
  • priority

Each of those aspects has its own section in the xml; you can't miss them.


Access deduces if this road can be used or not. This is very hard: yes or no. If you want to create a profile to cycling with your toddler in the cart, and that toddler wakes up from the sett stones, you can add the following to avoid a condition in all cases:

   <select value="-1" t="surface" v="sett"/> -- never ever enter a set road

Of course, you might want to avoid unknown surfaces too:

   <select value="-1" /> -- Default: no access
   <select value="1" t="surface"/> -- only if a surface is known, allow access

And if you mix in the toggle, you'll get:

   <if param="avoid_sett">
       <select value="-1" t="surface" v="sett"/>


The other aspects are tweaked similarly:

Speed is the maximal practical speed on a certain road. For example, if sett slows you down to 5 km/h; then you can tell the navigation:

    <select value="5" t="surface" v="sett">

This is relative to other speeds. The default routing takes a default speed of 14.5 for cycling, so this would be way slower.


Priority is the preference of a road. If two routes are equal, the route with the highest priority is taken. However, as I modified both speed and priority in a similar way, it is hard to state the differences.

A sample use case

This custom routing can be tailored for your needs. See my other diary entry as an example and for the routes taken.

My custom routing.xml can be found here.

The only phone that doesn't like cobblestone

Posted by Pieter Vander Vennet on 8 November 2017 in English (English)

Hello everyone,

The 26th of september was an OSM-meetup in Bruges. The few guys which where there - and especially Joost, must have gotten some weird and extremely contagious disease, called 'mapperitis'. It has been the start of a growing involvement in the mapping efforts of OSM.

Falling in love

Although I've been using OSM as my navigation of choice for years now (prob. 5), it's only recently I've actively begun mapping. Altough my first mapping were the ski routes on holiday, that was a one-off - until now.

Using streetcomplete, I've been surveying the surfaces of Bruges, which contains - as you guessed it, a lot of sett (aka 'neat cobblestone'). In the meantime, I've been spreading that contagous mappiritis around as well - until it reached someone of the Fietsersbond. One of them had recently seen the talk by Escada and was wondering if it would be possible to map all cycling routes, their surface area and width, to test if they meet the vademecum. "Yes, this is possible" was my answer of course!

I followed by a short showcase of OSM, overpass-turbo and how easy it was to enter all this info. Although he was impressed, he was a bit scared of how much work it seemed to be - and that it is an older and not so tech-savy person didn't help either.

That was a week ago*. By now, the north of Bruges (the center) is surface-mapped, and around 50 cycleways are measured.

*(To be honest, it was two weeks. However, I was on holiday one week, so I couldn't map)

Routing around sett

In the mean time, I was confronted with another problem. Quite often, I'm cycling around with a cycle cart. These things are slowed down tremendously by sett stones. So I wondered, wouldn't it be possible to tweak the OSMAnd routing to avoid those nasty cobblestones?

After a few inquirements on the community riot channel, it turned out to be possible. And not only possible, it was easy as well!

So I added an option to bicycle routing - avoid setts if possible. Not a hard ban, but if a detour is acceptable.

For example, if I want to go from my home to my favorite youth movement, the shortest route is through the city - and over cobblestones. Not that great with the cart:

Normal route

However, with tweaking the weight of sett, I got this route:


A really cool result. It seems like I have the only navigation system in the world that knows where all that cobblestone is and that actively avoids it...

Next step: promote OSM to the 'Bruhhelingen'.

And because I want to keep mapping, I even added a mode to prefer routes where the surface key is missing... Giving the following result:


In conclusion, a very usefull and extremely fun experiment!

If you want to create your own routing, I wrote a small getting started for OSMAnd here.