Skip to content

Latest commit

 

History

History
88 lines (62 loc) · 2.74 KB

File metadata and controls

88 lines (62 loc) · 2.74 KB

Osm2pgsql Middle Experiments

This repository contains some code exploring various aspects of the implementation of a new "middle" that's not using PostgreSQL. Parts of this code might end up in osm2pgsql, but for the moment this is completely independent to make it easy to explore various facets without the overhead of integrating the code with osm2pgsql.

Programs

Call these programs with --help to get usage infos.

ome-tag-encoding

Explores various methods for encoding tags. Results are written to an Sqlite database. See the analysis directory for some SQL scripts to evaluate that data.

Note that the implementation is simplified. Some parts are not implemented 100% correctly, because the goal here is to just get a rough idea how much disk space each algorithm needs. So small deviations aren't a problem. A typical example is storing the length of a tag key/value. Almost all of them are less than 128 chars long, so a 1-byte length field is enough if we use varint encoding.

ome-tag-combinations

Create statistics for combinations of tags that are used in many objects.

Dependencies

You'll need a C++20 capable compiler.

With Debian you can install the dependencies as follows:

apt install make cmake g++ libexpat1-dev libosmium2-dev libprotozero-dev \
    libsnappy-dev zlib1g-dev libsqlite3-dev libzstd-dev

Building

As usual with CMake. Something like this:

mkdir build
cd build
cmake ..
make

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Author

Jochen Topf jochen@topf.org

Funding

This is part of Project Coda.

This project is funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission’s Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429. Additional funding is made available by the Swiss State Secretariat for Education, Research and Innovation (SERI).