EOSMDBOne
"Enhanced OpenStreetMap Database One" (EOSMDBOne)
Die EOSMDBOne ist eine Geodatenbank mit Daten des freien OpenStreetMap-Projekts, die über den Ausschnitt der Schweiz stündlich aktualisiert und ergänzt ('enhanced') werden.
Die Aktualisierung geschieht mit Hilfe eines Shell-Skripts und der Software Osm2pgsql. Die Daten liegen in der DB im Koordinatenreferenzsystem EPSG:900913 vor. Früher erfolgte jeden Morgen ein Import der Datei 'switzerland.osm.pbf' von Geofabrik (vielen Dank an Geofabrik für den Service!). Aktuell wird die Datenbank jede Stunde aktualisiert. EOSMDBOne gibt Datum und Zeit an, wann die Verarbeitung abgeschlossen worden ist.
EOSMDBOne wird von einigen unserer Webapplikationen verwendet, wie
EOSMDBOne ist eine GIS- und kartenorientierte Datenbank - aber noch keine Karte. Wer sich für die eigene Kartenherstellung interessiert, findet mehr dazu auf "OpenStreetMap-Daten zu Karten aufbereiten".
Datenanalysen
Für Datenanalysen mit SQL und OpenStreetMap siehe PostGIS - Tipps und Tricks und PostGIS Terminal Examples.
Schema
Das Datenbankschema wurde etwas angepasst (siehe Osm2pgsql und Konfigurations-Datei .style). Die Attribute osm_id und osm_version (aus Oms2pgsql-Option "-extended-attributes") in der Tabellen-Gruppe 'Osm2pgsql' konnten jedoch nicht umbenannt werden (hardcoded).
Tabellen-Gruppe 'Osm2pgsql': Tabellen mit Geometrien (PostGIS) zusammengestellt aus aus osm_nodes und osm_ways (mit Tags als hstore durch osm2pgsql '-h'-Flag ):
- osm_point => Punktobjekte mit den Attributen osm_id, versch. weitere (gem. default.style) plus osm_version. Enthält nur Nodes, die auch Tags enthalten (also keine, die nur Stützpunkte von Linien/Rändern sind).
- osm_line => Linienobjekte aus Ways-Tabelle mit 'echtem' Geometrie-Attribut, sowie osm_id, versch. weitere (gem. default.style) plus osm_version. Hinweis: Enthält keine Ways, die Flächen bilden; diese werden in osm_polygon abgelegt (vgl. Vineyard). Enthält Objekte mit (möglicherweise identischen!) negativen osm_id's; das sind Ways, die in der OSM-DB über Relations zusammengesetzt sind.
- osm_polygon => Flächenobjekte (gebildet aus bestimmten Ways und Relations), osm_id, versch. Attr. (gem. default.style) plus osm_version
Tabellen-Gruppe 'OSM-Original': Tabellen angelehnt an originale OSM-Planet-Struktur (jedoch mit Tags als Array):
- osm_nodes => Node mit id, lat, lon, tags (Array) (gem. default.style) (Hinweis: Alle tags stammen von einer Tags-Tabelle)
- osm_ways => Way mit Set of references to Node, d.h. ohne eigene Geometrie (gem. default.style).
- osm_rels => Relation mit Referenz auf Nodes, Ways, Relations (gem. default.style).
Spezialtabellen:
-
osm_roads => linienhafte Strassenobjekte => fehlt, da nicht verwendet! (aus .style auskommentiert) - osm_all => Tabelle über osm_point, osm_line und osm_polygon über die Kolonnen osm_id, name, tags, gtype, way, osm_version (ACHTUNG: ev. nicht-materialisiert, d.h. langsam!).
- osm_poi => Tabelle über osm_point und osm_polygon mit ST_Centroid mit den Kolonnen osm_id, name, tags, gtype, way, osm_version (ACHTUNG: langsam!).
Duplikate:
- Original OSM tables have separate ids and no duplicates in each table.
- Table osm_point has no duplicates.
- Table osm_lines has duplicates with neg. and pos. osm_ids. Line rows with duplicate neg. osm_ids got the (positive) osm_id from relations. Lines also have rows with duplicate pos. osm_ids. These belong somehow together since they have identical tags but different geometries. In original db there is only one http://www.openstreetmap.org/browse/way/47926394 (compared to "select osm_id, tags, length(way) from osm_line where osm_id=47926394").
- Table osm_polygon have duplicates too but only with negative osm_ids. Like Lines, Polygon rows with duplicate neg. osm_ids got the (positive) osm_id from relations like multi-polygons.
Background
Some facts:
- This database is being updated every hour (using a Linux cron job) and it takes a processing time of about 8 minutes.
- The data source originally is OpenStreetMap but actually the download server from Geofabrik [1] is being used.
- PostGIS is used as the database system.
- The whole update process is controlled by a shell script.
- The software used for the main update process is Osm2pgsql.
See also:
- Osm2pgsql
- "Keeping the local database in sync with OSM": https://ircama.github.io/osm-carto-tutorials/updating-data/