Problem mit postgresql + postgis + osm

Hallo zusammen, ich bin noch relativ neu in diesem Thema, darum habt bitte Nachsicht.

Ich hab folgendes Problem:

Ich hab mir vor einiger Zeit mit Osmosis die germany-latest.osm.bz2 in meine postgresql/postgis DB geladen.
Damit möchte ich zu einer gegeben Position das tag landuse abfragen. Das ging bisher auch problemlos mit der sql-Abfrage:

SELECT tags FROM ways WHERE ST_ContainsProperly(ways.bbox, ST_GeometryFromText(‘POINT(9.776891 52.387077)’,4326));

Nun habe ich mir die Datenbank in der neusten Version aufgesetz und dafür das aktuellste germany-latest.osm.pbf reingeladen.
Mein Problem ist nun, dass die sql-Abfrage kein landuse mehr liefert…

Hat einer nen Tip für mich, was ich falsch mache?

Vielen Dank!

lg

Als erstes solltest du allen verraten wie du die Datenbank gefüllt hast. osm2pgsql oder oder oder. Das macht nämlich durchaus einen Unterschied.
Das zweite wäre du prüfst einmal ob an dieser Stelle wirklich ein landuse vorhanden ist. vielleicht hat es in der Version von dir auch jemand gelöscht oder es wurde schlicht anders getagt.

Hi viw,

also ich habe die die alte und die neue DB mit Osmosis befüllt, über folgenden Befehl:

bin\osmosis.bat --read-pbf file=“D:\OSM-Maps\germany-latest.osm.pbf” --write-pgsql user=“postgres” password=“geheim” database=“germany” validateSchemaVersion=no

Und folgende Ergebnisse kriege ich von den DBs zurück wenn ich diese Abfrage schicke:

SELECT tags FROM ways WHERE ST_ContainsProperly(ways.bbox, ST_GeometryFromText(‘POINT(9.776891 52.387077)’,4326));

Alt:

““name”=>“Eilenriede-Nord”, “landuse”=>“forest”, “alt_name”=>“Eilenriede”, “place_name”=>“Eilenriede-Nord””
““name”=>“Königseichenweg”, “highway”=>“footway””
““name”=>“Im Ahorn”, “highway”=>“footway””
““name”=>“Altholzparzelle”, “wood”=>“mixed”, “landuse”=>“forest””
““name”=>“LAH REN 1111?”, “layer”=>”-5", “power”=>“underground_cable”, “voltage”=>“110000”, “operator”=>“Stadtwerke_Hannover_AG”, “frequency”=>“50"”
““highway”=>“cycleway””
““name”=>“Schiffgraben”, “waterway”=>“stream””
““waterway”=>“drain””
““name”=>“Fritz-Behrens-Allee”, “access”=>“permissive”, “day_on”=>“Saturday”, “day_off”=>“Sunday”, “highway”=>“tertiary”, “hour_on”=>“15:00”, “maxspeed”=>“50”, “postal_code”=>“30177”, “old_name:1935”=>“Wald-Chaussee””

Neu:
““FIXME”=>“draw postal boundary”, “boundary”=>“postal_code””
““name”=>“Im Ahorn”, “highway”=>“footway””
““name”=>“Königseichenweg”, “highway”=>“footway””
"“name”=>“Waldchaussee”, “access”=>“permissive”, “day_on”=>“Saturday”, “oneway”=>“no”, “bicycle”=>“designated”, “day_off”=>“Sunday”, “highway”=>“tertiary”, “hour_on”=>“15:00”, “surface”=>“asphalt”, “cycleway”=>“track”, “maxspeed”=>“50”, “postal_code”=>“3017 (…)”
“”
““name”=>“Schiffgraben”, “waterway”=>“stream””
““waterway”=>“drain””
““note”=>“Richtfunfstrecke”, “man_made”=>“microwave_link”, “operator”=>“EON””
““oneway”=>“no”, “highway”=>“cycleway”, “surface”=>“asphalt””
"“ref”=>“LAH REN 1111?”, “power”=>“cable”, “voltage”=>“110000”, “location”=>“underground”, “operator”=>“Stadtwerke_Hannover_AG”, “frequency”=>“50"”

Hilft das weiter?

lg

erstmal herzlich willkommen im Forum!

Wie ich aus deiner Abfrage erkenne, benutzt du wohl das Snapshot- oder Simple-Schema mittels osmosis. Kommt halt darauf an, was du später mit der DB anfangen willst. Eventuell solltest du auf osm2pgsql umstellen. Was hast du denn mittelfristig damit vor?

Zum “Problem”: Ich kann keine Abfrage nach landuse erkennen. Du suchst ways, deren BBOX offensichtlich eine bestimmte Koordinate enthalten soll - mehr nicht. das es dafür keine Treffer gibt, kann daran liegen, daß

- du bei der Neuinstallation eine andere Projektion genommen hast

  • die von dir genommene Koordinate in keiner Fläche liegt
  • sich die Flächen geändert haben (OSM ist nicht statisch!)
  • dass du das “falsche” verfahren verwendest, die DB aufzubauen

Ansonsten finde ich die an sich korrekte Abfrage ziemlich sinnlos um Landuses zu finden.

Ich hab mal auf meiner DB im osm2pgsql-Schema die Abfrage angepasst und keine “normale” Fläche gefunden, in der dieser Punkt liegt.

Grübel, Grübel:

Der Elrieder Forst in Hannover ist hier nicht als einfaches Polygon mit landuse=forest erfaßt sondern als Multipolygon https://www.openstreetmap.org/relation/156510

mit dem Simple- oder Snapshot-Schema hast du fast keine Chence, solche Flächen zu finden. (*)

Gruss
walter

ps: bei dieser Abfrage kannst du dir auf jeden Fall das properly sparen. Das ist hier wegen der bbox absolut unnötig.

ps2 @all: ich hab mir auch einen dabei abgebrochen, die Fläche in Josm zu finden: mal wieder perfektes Landuse-an-Staße-Tagging: “Einfach” die Straßen als Outer des Waldes genommen - da kommt Freude auf :frowning:

EDIT: hab mitten im Schreiben das Problem gefunden und den Post darauf angepasst.

sorry, meine obige Antwort ist wohl ein wenig konfus geraten (muß wohl an der Hitze liegen):

Kurzversion: Der Punkt liegt in einem Multipolygon und nicht in einer einfachen Fläche. Im Simple- oder Snapshot-Schema werden Multipolygone total anders behandelt und deren Flächen sind nicht einfach zu finden. Auf keinen Fall mit obiger Abfrage.

Vorschlag: auf osm2pgsql wechseln, da es dort dieses Problem nicht gibt - und da bestimmt 95% aller OSM-Anwendungen damit arbeiten.

Gruss
walter

Hallo wambacher,

danke für deine Erläuterungen, mir geht es einfach nur darum herauszufinden, was es alles so an interresanten Informationen um eine Punkt herum gibt. Wald, nen See, ne Wiese, etc. Ich war bisher eigentlich ganz glücklich mit meiner Abfrage und hab mir alles was ich brauchte aus dem Ergbenis rausgezogen. Nun die große Frage: wie kann ich denn alle tags, aller Multipolygone die meine Punkt einschließen erhalten?
Hast Du da eventuell auch nen Tipp?

Edit: OK ich schau mir dieses osm2pgsql mal an. Vielen Dank!

lg

Ja: Vergiss es! :wink:

Das ist ein riesiger Aufwand, den du dir nicht antuen solltest.

Osm2pgsql erstellt ebenfalls eine PostGIS-DB, allerdings in einem Format das wahlweise zum Rendern (“Malen von Karten”) oder Routen bzw Suchen mit Nominatim eingestellt werden kann. Hierbei ist das Schema zum Rendern das üblicherweise verwendete.

Es kommt wirklich darauf an, was du eigentlich vorhast und welches Format für dich am besten geeignet ist. Auch das osm2pgsq-Schema kann nicht alles - aber fast.

Gruss
walter

Ich denke du solltest wambachers Rat folgen. Immerhin war er stur genug ebenfalls lange genau auf das Snapshotshema zu setzen, bis er bemerkt hat, dass es bei osm2pgsql auch eine hstore spalte gibt und er keine Informationen verliert.
Der Vorteil bei osm2pgsql ist einfach, dass schon beim import Relationen insbesondere diese multipolygone zu Flächen oder Wegen umgebaut werden. du musst also in deinen Abfragen nicht die ganzen Hirachien aufbauen, weil der Import das bereits für dich macht.