GSoC 2016 - marking cities

Posted by Mateusz Konieczny on 19 June 2016 in English (English)

It is typical for maps covering large areas to display city labels. It is quite common to mark exact locations by displaying dots, circles or other symbols.

It also seems that labels for cities and towns may be displayed larger to improve the map.

I tested both ideas, without changing algorithm that selects cities and towns to be displayed. Example of before/after tested on UK are available below.

z11 github github

z10 github github

z9 github github

z8 github github

z7 github github

z6 github github

z5 github github

I ma not entirely sure about dots and I will certainly experiment with tweaking them, but I am happy with new sizes for city labels.

Additional before/after are available at

Location: Kosocice, Swoszowice, Krakow, Lesser Poland Voivodeship, Poland

Comment from Zverik on 19 June 2016 at 21:45

Did you consider raising village/hamlet lables some zoom levels higher? So that Russia (and other scarsely-populated areas) doesn’t look that empty.

Comment from gorn on 16 September 2016 at 09:28

I think that the problem with airports is a general one. The apperance of any feature is fixed to the zoom level. But this can NEVER work in general. If you set up such parameters correctly for a crowded city it wont work for a desert or nature with few villages. If you set it up for less populated areas, it will be broken for cities.

Currently the result is (at least as I feel it for areas in Czech republic) that in zooms below 11 there is not much usefull information and one must zoom in to get some - and there is tons of empty space on the map (well not really empty but with no labels and pois). But again it is uselles to adjust it for such a case because it would break somewhere else.

I thik we need to instroduce something as “density of map” and adjust the apperance of features, labales etc, according to this. This density would be dependent on location on the map and can even be precalculated every week or so (as it does not change that fast).

Second possible approach simmilar to this one would be not to use “absolute zoom” to decide if the feature should be displayed / labelled or not, but use “importancy scale”. Every feature would have an “importancy” - for the starters we can use the lowest zoom it shows on, but it can be refined. Than the algorithm to form a map for area would be as follows:

  1. start with highest importancy
  2. find all fatures with this importancy in the displayed area
  3. determine how “crowded” is the rendered view so far
  4. if it is not “too crowded” than repeat the process (from step 2) with lower importancy
  5. if it is “too crowded” than stop

The importancy can be different for object itself and for its label and of course it can be much complicated than that, but this is just the basic simplified idea. The result would be that at any zoom and any place the map will look resonably informative / not too crowded. Also note that in large maps you may want to run this process more “locally” i.e. to some extent independedly for each part of the map.

Login to leave a comment