Installation
Table of Contents
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. Vorarbeiten
-
Unattended Upgrades deaktivieren, damit während des Imports keine Updates durchgeführt werden und ggf. der PostgreSQL Server neu gestartet wird!
sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades
sudo sed -i 's/Unattended-Upgrade "1"/Unattended-Upgrade "0"/g' /etc/apt/apt.conf.d/20auto-upgrades
3.2. Alte ZFS Snapshots löschen
sudo zfs list -t snapshot
sudo zfs destroy zfs_pool_2tb/dbs/postgresql@nodes-completed
sudo zfs destroy zfs_pool_2tb/dbs/postgresql@ways-completed
sudo zfs destroy zfs_pool_2tb/dbs/postgresql@relations-completed
sudo zfs destroy zfs_pool_2tb/dbs/postgresql@simplify-tables-completed
3.3. OpenStreetMap Datenbank herunterladen
# OSM Plant Datei herunterladen
# https://planet.openstreetmap.org/pbf/
# z.B. planet-250512.osm.pbf
# screen verwenden
screen - R Import
wget https://planet.openstreetmap.org/pbf/planet-250512.osm.pbf
# Alte Datenbank aus PostgreSQL löschen
# http://192.168.100.132/phppgadmin/
# user: postgres
# Heruntergeladenen Daten löschen
# zfs_pool_2tb/data/osm
# flat_nodes nicht löschen (Datei speichert nodes um schnelleren Import zu ermöglichen.)
3.4. 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 --framework=net9.0 -- --import-step=PrepareImport # ca. 03:00h.
dotnet run --framework=net9.0 -- --import-step=InitializeDatabase # ca. 30 Sekunden.
dotnet run --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --import-step=ImportAreasCoastline # ca. 00:02h
dotnet run --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --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 --framework=net9.0 -- --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.5. 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.6. neu importierte Datenbank exportieren und importieren
3.7. 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.