This release introduces the new “flex” output. It allows a more flexible definition of output tables and columns. It also adds a second stage of processing which makes it possible to get information from relations to their members, allowing, for instance, to render tags from bicycle route relations on their member ways. The “flex” output is configured through Lua scripts.
The flex output is currently still marked as experimental, because it is new and we want to collect feedback from the community before finalizing the API. But it already works well and users are encouraged to try it out. Some new features are only or will only be available in the flex output and we expect that it will replace the other outputs in the long term.
Some features have been marked as deprecated:
- The “multi” output will be removed in a future version of osm2pgsql. If you are using the multi output, switch to the flex output now and tell us if you have any problems.
- When the input file uses negative OSM object IDs a warning is now generated. Negative IDs never worked correctly for all use cases. Future versions of osm2pgsql will not allow negative IDs at all. Use “osmium renumber” to get rid of the negative IDs.
- Input files that are not ordered generate a warning. Future versions of osm2pgsql will not work any more with unordered files. If you have unordered files use “osmium sort” to order them.
- The multi output now looks for lua script relative to the
style.jsonfile. This is a breaking change. Users might have to change the file names of their lua scripts in the style files.
- Use the fmt library for formatting strings now instead of a mixture of
boost::formatand hand-written mechanisms. A version of fmt is included in the contrib directory.
- Make PROJ library optional. If the proj library cannot be found by cmake, do not offer the option to use arbitrary projections. Only WGS84 and WebMercator are supported then.
- Don’t use
ST_GeoHashfor ordering tables by geometry on Postgis >= 2.4. Instead use the default ordering which works better now.
- Fix: Always print correct relations count and more correct count per seconds when showing processing stats.
- Fix: If a function run in the thread pool throws an exception, this exception was never “collected”, it was silently ignored. This meant that some errors, especially in communication with the database, were not detected correctly.
- The dependency management, the part of the code which tracks which changes in the OSM data trigger which changes in the outputs, was reorganized making in much cleaner and removing the last remnants of code written to support “old style” multipolygons.
- Tests have been moved to the Catch framework, extended and the regression tests have been reorganised, so they can run independently of each other.
- A lot of code was cleaned up, modernized, made more robust, and sometimes removed.