Here's a CartoType map of the islands of north west Scotland:

cartotype hebrides

All the major islands are named. In contrast, OpenStreetMap, using the same data, omits the names:

osm hebrides

The same occurs for the various other map styles offered by the OpenStreetMap web site.

How does CartoType display island labels, and can OpenStreetMap do the same? CartoType uses the following techniques:

  • extract the names from points, ways and relations tagged place=island, place=islet, natural=coastline and natural=land
  • extract the names from points, ways and relations tagged place=island, place=islet, natural=coastline and natural=land

But what about islands marked only by a point object somewhere inside the island's actual polygon? The trouble with points used to mark islands is that if you draw labels for all of them you end up with a hopelessly cluttered map - because there is no criterion for deciding whether the island is large or small - so labels can be drawn for point islands only at large scales (when zoomed in).

Therefore CartoType finds all the point islands and attempts to convert them to polygon objects by finding the actual land polygons that surround them and transferring the names to them.

Two obvious recommendations suggest themselves:

  • OpenStreetMap contributors should label the coastline of an island, not a point within it (or, which happens sometimes, a point outside the island, in a misguided attempt to place the label correctly).
  • Someone should write a script to clean OSM data by transferring island names from points to enclosing coastline polygons.

And there is clearly some room for improvement in the standard OSM styles: surely, even with the present imperfect data, names of major islands can be drawn at small scales.