News
Version mkgmap-r3686 will be last to run on java 7
All future versions of mkgmap and splitter that are downloaded from the website will require java 8 to run.
The public updates of java 7 ended over a year ago in Apr 2015 and java 8 was released in Mar 2014, so you are likely to be running java 8 already, except for some long term supported linux distributions where java 7 may still be the default and you will have to install java 8 in addition or instead of java 7.
Maintenance Sun 6th March
The server and website will be down from around 4pm GMT on Sunday 6th March so they can be upgraded. This should take less than two hours, probably much less.
There will be an announcement on the mailing list just before the downtime and then just afterwards.
During the upgrade, mailing list, svn and downloads will not be available.
House number improvements
House numbers have been part of mkgmap for a couple of years now, but as more and more housenumbers are added to OSM, Gerd undertook a project to update the code to deal with many more cases of real world OSM tagging.
The main changes are:
- mkgmap tries to identify unnamed roads which lead to houses and can be named (assuming they are service roads)
- mkgmap tries to find a plausible road when no street is given.
addr:interpolation
ways are used to find the most plausible road and the interpolated addresses are found- improved evaluation of
addr:*
tags, esp. the support foraddr:place
and the support foraddr:housenumber
withoutaddr:street
, img data is optimized to make sure that address search finds a place close (< 40m) to the address. - special cases regarding addresses in different cities or zip codes along the same road are handled. This is important when a road starts in city A and has some numbers 1..20 there and later crosses city B with numbers 1..5 and finally ends in city C with numbers 1..50.
- the found addresses are typically closer to the house
Using in your own style
If you want to test with your own style: Please note the new special tags
mkgmap:numbers=false
and mkgmap:execute_finalize_rules=true
- a road with
mkgmap:numbers=false
is ignored in house number processing. The default style uses this for ferries and motorways and for bicycle-only roads. - The
mkgmap:execute_finalize_rules=true
tag will cause the finalize rules to be run, even if no object is created in the map for that element. So to set the city, region and country values for all elements with house numbers, useas a first rule in points, lines and polygons and addaddr:housenumber=* {set mkgmap:execute_finalize_rules=true}
to the finalize sections.include 'inc/address';
Use version r3612 or above to get these upgrades.
Drive on left or right
From r3366 there are some improvements to the support for driving on the left or right. Each tile has a flag to say if roads are drive on the left or right. It is known to make a difference with roundabouts and may be used in other ways.
The options --drive-on-left
and --drive-on-right
were
replaced by --drive-on=left
and --drive-on=right
.
You can also add detect which will use the country information to select
the correct side. The default is equivalent to
--drive-on=detect,right
which means that if detection fails, it
will use drive on the right.
The old flags --drive-on-left
and --drive-on-right
still work.
The detection uses the precompiled bounds (or country-abbr/country-name) to determine the country in which the roads are located, and the resource file LocatorConfig.xml contains a new attribute driveOnLeft="true" for all known drive-on-left countries
If a tile covers two countries where you drive on different sides of the road, then it cannot work for the whole tile and you get a warning. In the future we will be able to cut tiles on country boundaries so that the problem will then not arise.
Converting units
There has always been a way to convert a tag value from meters to feet, this was originally for contour heights which need to be in feet, but the default for OSM is for them to be in meters.
With the release of version r3353 these conversions are much more useful and can be applied to speeds as well as lengths. They also take into account any unit that is already specified.
So for example if you specify a conversion of meters to feet, then "100" will be converted to "328", "100m" will be converted to "328" but "100ft" will be left as "100". Furthermore "100km" would result in "328000". If any of the units are not recognised then the value remains completely unchanged.
Input | Result |
---|---|
100 | 328 |
100m | 328 |
100ft | 100 |
100km | 328000 |
100xyz | 100xyz |
Here are some examples.
natural=hill & height=* { set height='${height|conv:"m=>ft"}'; } highway=* & maxspeed=* { set limit='${maxspeed|conv:"kmh=>mph"}'; }
The possible units are:
- Length: m, km, ft (feet), mi (miles).
- Speed: mph; km/h (or kmh, kmph), knots