EOSMDBOne

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche

"Enhanced OpenStreeMap Database One" (EOSMDBOne)

Die EOSMDBOne ist eine Geodatenbank mit Daten des freien OpenStreetMap-Projekts, die über den Ausschnitt der Schweiz täglich aktualisiert und ergänzt ('enhanced') werden.

Die Aktualisierung geschieht mit Hilfe eines Shell-Skripts und der Software Osm2pgsql. Jeden Morgen früh erfolgt ein Import der Datei 'switzerland.osm.pbf' von Geofabrik (vielen Dank an Geofabrik für den Service!). EOSMDBOne gibt Datum und Zeit an, wann die Verarbeitung abgeschlossen worden ist (typischerweise zwischen 7 und 8 Uhr). Der eigentliche Stand der Daten ist derjenige vom Vortag (ca. 22 Uhr, vgl. [1]). Die Daten liegen in der DB im Koordinatenreferenzsystem EPSG:900913 vor.

EOSMDBOne wird von einigen unserer Webapplikationen verwendet, wie

Schema

Das Schema 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 '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).

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 Attribten 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

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 early morning (using a Linux cron job at 04:04 a.m.) and takes a processing time of about 3 hours (so the DB is about 8:00 ready to use).
  • The data source originally is OpenStreetMap but actually the download server from Geofabrik [2] 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.