Rendering boundaries


In my previous work on generalization of geodata for map rendering, including coastlines, waterbodies, settlements and relief i have so far not covered administrative boundaries. The main reason is boundaries are very tricky in this regard. The vast majority of boundaries of the world, no matter on what administrative level, are defined in one of the following ways:

  1. Defined through a number of points with coordinates and straight lines between them
  2. Defined by some physical geography feature, in most cases rivers or mountain ridges
  3. Defined by a mathematical formula on basis of a physical geography feature, in most cases related to the distance from the coast


If all boundaries were of the first type things would be fairly simple. Such a definition is essentially a polygon and there are well known methods for simplifying polygon geometries. The primary concern here would be that other features close to the boundary should not end up at the wrong side after simplification.

The main difficulty comes with the second type of boundary. If a boundary is based on another geographical feature it would need to be generalized together with it. But boundary datasets usually do not provide information about how the boundaries are defined. Hence this is very difficult to do right.

The third type mostly exists for maritime boundaries. Maritime boundaries are rarely shown in maps in full, here the main question is where boundaries should be shown and where not. Simplification is less of a problem.

In the OpenStreetMap standard map style the display of boundaries is currently quite unsatisfactory in a number of points:

  • The full display of maritime boundaries is broadly considered too obstrusive.
  • Boundaries coincident with the coastline are shown and very prominent without providing any useful information.
  • At the lowest zoom levels (z<4) an external data set is used for showing boundaries which is outdated and does not match the OSM data.
  • At the other low zoom levels the full resolution boundaries are used for rendering leading to a bad quality result, in particular in cases where dashed line signatures are used.

To allow addressing these issues in a basic way i produced a simplified processing of the OpenStreetMap national boundaries (admin_level 2). It does not deal with the deeper issues of boundary generalization i discussed before, it just uses basic line simplification. Specifically the following things are done:

  • Maritime and coastal boundaries are removed except where relevant to indicate which islands belong to which country.
  • Other boundaries are simplified preserving the boundary topology

The results can be downloaded for zoom levels 2 to 8. I also produced a version including admin_level 4 boundaries which however still has some flaws and should be considered experimental. It is currently only available for zoom level 6.

A demonstration of this data can be found on

Leave a Reply

Required fields are marked *.

By submitting your comment you agree to the privacy policy and agree to the information you provide (except for the email address) to be published on this blog.