Installation

1. Vorarbeiten

  • postgresql und postgis installieren

2. Installation aus den Quellen

mkdir -p ~/projects && cd ~/projects
git clone git@bitbucket.org:locr/osmparser.net.git OsmParser.NET
cd OsmParser.NET

Datei OsmParser/.env.example nach OsmParser/.env kopieren und anpassen.

cp OsmParser/.env.example OsmParser/.env

3. OSM Daten importieren

3.1. Schritt für Schritt import

# Zugrundeliegende Daten für die Zeitangaben
#   Server: 192.168.100.132
#   OS Version: Ubuntu 22.04
#   OSM Datenbestand: 22.01.2024 (8,892,818,730 nodes; 995,060,617 ways; 11,778,871 relations)
#   Import durchgeführt: Anfang Februar 2024

cd OsmParser
dotnet run -- --import-step=PrepareImport # ca. 03:00h.
dotnet run -- --import-step=InitializeDatabase # ca. 30 Sekunden.
dotnet run -- --import-step=ImportNodes # ca. 2d. (ca. 57,000 Nodes pro Sekunde)
# DB Größe nach ImportNodes Schritt: ca. 963GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@nodes-completed
# sudo service postgresql start
dotnet run -- --import-step=ImportWays # ca. 3d 17:00h. (ca. 3,150 Ways pro Sekunde)
# DB Größe nach ImportWays Schritt: ca. 1469GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@ways-completed
# sudo service postgresql start
dotnet run -- --import-step=ImportRelations # ca. 3d 10:00h (40 Relations pro Sekunde)
# DB Größe nach ImportRelations Schritt: 1499GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@relations-completed
# sudo service postgresql start
dotnet run -- --import-step=DeleteRawData # ca. 10 Sekunden.
# DB Größe nach DeleteRawData Schritt: 290GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@deleted-raw-data-completed
# sudo service postgresql start
dotnet run -- --import-step=CreateIndexes # ca. 02:00h.
# DB Größe nach CreateIndexes Schritt: 410GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@created-indexes-completed
# sudo service postgresql start
dotnet run -- --import-step=ImportZipBoundariesByCensus # ca. 10 Sekunden
# DB Größe nach ImportZipBoundariesByCensus Schritt: 410GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@zip-boundaries-by-census-completed
# sudo service postgresql start
dotnet run -- --import-step=ImportAreasCoastline # ca. 00:02h
dotnet run -- --import-step=ImportAreasCoastlineSplitted # ca. 00:02h
# DB Größe nach ImportAreasCoastlineSplitted Schritt: 413GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@areas-coastline-completed
# sudo service postgresql start
dotnet run -- --import-step=ProcessCountryBoundingsLand # ca. 00:25h
# DB Größe nach ProcessCountryBoundingsLand Schritt: 415GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@country-boundings-land-completed
# sudo service postgresql start
dotnet run -- --import-step=ProcessStateBoundingsLand # ca. 00:20h
# DB Größe nach ProcessStateBoundingsLand Schritt: 417GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@state-boundings-land-completed
# sudo service postgresql start
dotnet run -- --import-step=SimplifyTables # ca. 02:40h
# DB Größe nach SimplifyTables Schritt: 523GB
# Optional: ZFS snapshot erstellen =>
# sudo service postgresql stop
# sudo zfs snapshot zfs_pool/dbs/postgresql@simplify-tables-completed
# sudo service postgresql start

3.2. All-in-one import

cd OsmParser.NET/OsmParser
dotnet run
dotnet run -- --start-http-server
# go to http://ip-address:2003/web_ui/ and do post-processing!
# cancel the server process!
dotnet run -- --import-step=SimplifyTables

3.3. neu importierte Datenbank exportieren und importieren

sudo -u postgres pg_dump osm_planet | gzip > /zfs_pool/data/osm/osm_planet.gz # ca. 06:00h.
# Dateigröße: 208GB
cat /zfs_pool/data/osm/osm_planet.gz | gunzip | sudo -u postgres psql osm_planet # ca.

3.4. Externe Quellen

Um neuere Postleitzahlengebiete für die USA zu bekommen, müssen die Daten von folgender Webseite bezogen werden:

https://catalog.data.gov/dataset/2019-cartographic-boundary-shapefile-2010-zip-code-tabulation-areas-for-united-states-1-500000

Der direkte Link ist/war https://www2.census.gov/geo/tiger/GENZ2019/shp/cb_2019_us_zcta510_500k.zip.
Diese Daten wurden in QGIS importiert und dann in eine PostgreSQL-Datenbank exportiert. Dann musste noch eine Transformation der Projektion von epsg:4269 nach epsg:3857 durchgeführt werden.

4. OsmDataProvider installieren

4.1. Vorarbeiten

Wenn etwas von den Standardwerten abweichen soll, dann müssen die Umgebungsvariablen in der ~/.bashrc hinzugefügt/angepasst werden.

export ODP_NAME=osm-data-provider # optional
export ODP_DB_HOST=127.0.0.1 # optional
export ODP_DB_NAME=osm_planet # optional
export ODP_HTTP_PORT=2003 # optional

und mit dem folgenden Kommando aktualisieren

source ~/.bashrc

Datenbankpasswort für das Installations-/Update-script hinzufügen.

pass insert scripts/pgsql-password

4.2. Container Service installieren

./scripts/install_service.sh

4.3. Update script im home-Verzeichnis erstellen

cat <<EOF >~/update_osm_data_provider.sh
#!/usr/bin/env bash

cd ${PWD}/scripts
./update_service.sh
EOF

chmod +x ~/update_osm_data_provider.sh