Skip to main content

osm2pgsql-tuner project recommends an osm2pgsql command based on available system resources and the size of the input PBF file.

Project description

osm2pgsql-tuner

The osm2pgsql-tuner project recommends an osm2pgsql command based on available system resources and the size of the input PBF file. The recommendations made by this program are targeted for:

  • osm2pgsql v1.5.0 and newer
  • Flex output
  • No stage 2 processing

Stage 2 processing has less predictable RAM consumption per this discussion on GitHub.

Using the API

This project is hosted as a free API at https://osm2pgsql-tuner.com by RustProof Labs. The following is an example of using this API from Python.

import requests

system_ram_gb = 64
osm_pbf_gb = 10.4
pbf_filename = 'north-america-latest'
append = False

api_endpoint = 'https://osm2pgsql-tuner.com/api/v1'
api_endpoint += f'?system_ram_gb={system_ram_gb}&osm_pbf_gb={osm_pbf_gb}&append={append}&pbf_filename={pbf_filename}'

Query the endpoint, check the status.

result = requests.get(api_endpoint)
print(f'Status code: {result.status_code}')

Get recommendation data.

rec = result.json()['osm2pgsql']

Command is the most interesting part.

print(f"\nCommand:\n{rec['cmd']} ")

Other details returned used in decision making to determine the command cmd.

print(rec.keys())

Using osm2pgsql via Python

To use the osm2pgsql recommendation without using the API/website, the osm2pgsql_tuner package can be used.

Install osm2pgsql-tuner within an virtual environment.

pip install osm2pgsql-tuner

Import osm2pgsql_tuner and create an instance of the recommendation class.

import osm2pgsql_tuner
rec = osm2pgsql_tuner.recommendation(system_ram_gb=8,
                                     osm_pbf_gb=0.5,
                                     pgosm_layer_set='run')
pbf_path = '~/pgosm-data/example_file.osm.pbf'
osm2pgsql_command = rec.get_osm2pgsql_command(out_format='api',
                                              pbf_path=pbf_path)
print(osm2pgsql_command)

Returns.

osm2pgsql -d $PGOSM_CONN  --output=flex --style=./run.lua  ~/pgosm-data/example_file.osm.pbf

Deployment Instructions

Note: Need to update the sub-version of Python over time. Can use simply python3 but that can lead to using older unsupported versions based on distribution defaults.

cd ~/venv
python3.8 -m venv osm2pgsql-tuner
source ~/venv/osm2pgsql-tuner/bin/activate

Install requirements

source ~/venv/osm2pgsql-tuner/bin/activate
cd ~/git/osm2pgsql-tuner
pip install -r requirements.txt

Run web server w/ uWSGI.

source ~/venv/osm2pgsql-tuner/bin/activate
cd ~/git/osm2pgsql-tuner
python run_server.py

Unit tests

Run unit tests.

python -m unittest tests/*.py

Or run unit tests with coverage.

coverage run -m unittest tests/*.py

Generate report.

coverage report -m osm2pgsql_tuner/*.py

Run pylint.

pylint --rcfile=./.pylintrc -f parseable \
    ./osm2pgsql_tuner/*.py

Used by

This project is used by PgOSM Flex to automate commands in the PgOSM Flex Docker image.

Development install

pip install -e .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

osm2pgsql-tuner-0.1.0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

osm2pgsql_tuner-0.1.0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file osm2pgsql-tuner-0.1.0.tar.gz.

File metadata

  • Download URL: osm2pgsql-tuner-0.1.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for osm2pgsql-tuner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9595fe0a16b94e76edc02dad3a1da5f34ff66f7c863f890ca272daebd1dfaca2
MD5 cf35e06cfa598ccb46391f12c09e32ef
BLAKE2b-256 643b03f2c33a7fc0105bd5f81987b24dd175e06e847fdbea4ac91362ca440df8

See more details on using hashes here.

File details

Details for the file osm2pgsql_tuner-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for osm2pgsql_tuner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ba1591516ea1231c8833fa61705ac863f2a26cdb96c2358d141544ac55d6f72e
MD5 269a0feb9fc80f8e292576929b3275a9
BLAKE2b-256 07c514b152bb791546c8592371e69412fe4d164233005d7a4e636acd063bc8d4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page