[Talk-de] Datenbankschema

Frederik Ramm frederik at remote.org
Fr Feb 12 14:35:54 UTC 2010


Hallo,

stefan.priess at iav.de wrote:
> vielen Dank für deine Antwort. Ich dachte eigentlich das es eine
> Verknüpfung gibt ala osm_id aus planet_osm_point und id aus
> planet_osm_nodes, so dass ich über ein einfaches sql statements die
> lat und lon von allen städten anzeigen kann. das ist wohl nicht
> möglich?!? oder gibt es irgendwo eine formel wie man aus der BLOB die
> infos wieder rausziehen kann?

Bei dem, was Jochen "BLOB" nennt, handelt es sich um die ganz normalen 
PostGIS-Geometrie-Objekte. In der von osm2pgsql erzeugten Datenbank sind 
die Punkte und Linien schon vorverarbeitet - Punkte gefiltert, und 
Linien bereits zu Geometrien aufbereitet. Man sieht also im Normalfall 
nicht mehr, aus welchen Nodes ein Way bestand.

Ich weiss immer noch nicht, was Du genau suchst; Du kennst offenbar die 
Tabelle planet_osm_point bereits, also wieso machst Du nicht einfach

select name,ST_astext(way) from planet_osm_point where place='city'

das ergibt

       name      |                st_astext
----------------+------------------------------------------
  Wuppertal      | POINT(799641.031048544 6668598.58571099)
  Remscheid      | POINT(800930.489238199 6653126.0210699)
  Recklinghausen | POINT(801584.290871526 6730239.35942524)
  Bochum         | POINT(803356.018491145 6707233.31587142)
  Herne          | POINT(803690.711672164 6716977.54088121)
  Witten         | POINT(816542.26858552 6698964.10991715)

...

Die Koordinaten sind hier in Mercator-Koordinaten angegeben, das kannst 
Du entweder mit st_transform wieder nach lat/lon umrechnen, oder Du 
verwendest bei osm2pgsql gleich das Flag -l, dann hast Du an der 
gleichen Stelle lat/lon.

Die Tabelle planet_osm_nodes gibt es nur, wenn Du beim Importieren den 
wesentlich langsameren Modus --slim gewaehlt hast; diese Tabelle 
enthaelt dann die Original-OSM-Nodes mit Tags.

Ein Datenbankschema, das noch aehnlicher dem "echten" OSM-Schema ist und 
in dem sich alle Tags in eigenen Tabellen befinden, bekommst Du, wenn Du 
statt mit osm2pgsql die Daten mit osmosis in eine PostGIS (oder auch 
MySQL) einliest.

Bye
Frederik




Mehr Informationen über die Mailingliste Talk-de