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.
Call these programs with --help to get usage infos.
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.
Create statistics for combinations of tags that are used in many objects.
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
As usual with CMake. Something like this:
mkdir build
cd build
cmake ..
make
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.
Jochen Topf jochen@topf.org
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).