Daten mit Osmosis zu PostGIS, Problem mit Wegen

Guten Abend zusammen…

Wie der Titel schon andeutet, ich hab Daten über Osmosis versucht in eine Postgis Datenbank zu schieben, grundsätzlich kein Problem.
Nun haben da allerdings ja erstmal nur die Punkte Geometrien, da ich aber auch mit Straßen und Flächen arbeiten will, liefert Osmosis ja die CreateGeometryForWays.sql mit, da allerdings läuft die Kiste nichtmehr so rund.
Hier habe ich testweise mal zwei kleine Stücke Autobahn genommen, und in eine neue Datenbank geladen, in Josm, folgendes Bild:

handelt sich übrigends um die Wege 101528294 und 29201323 (A 30 bei Osnabrück), wenns wen interessiert;)

Läuft nun CreateGeometryForWays werden zwar Weg-Geometrien erstellt, allerdings liefert eine Abfrage der Länge in sql ziemlichen Murks, woraufhin ich mir den Postgis-Layer über QuantumGis hab anzeigen lassen, und voila, völliger Murks:

Hat irgentjemand dieses Verhalten schonmal beobachtet, oder eine Idee dazu?
Interessant ist ist zudem, als ichs mal mit einem größeren Gebiet versucht hab, sahen die Wege in in QGis soweit in Ordnung aus, wurden allerdings oft garnicht, oder nicht vollständig angezeigt, begleitet von einer Fehlermeldung in Qgis (Abfrage gescheitert).
Irgentwas ist da also Grundsätzlich im Argen… würd mich freuen wenn mir da jemand helfen könnte…

Viele Grüße!

Hi,

die “Andeutungen” deines Titels sind aber ausgesprochen vage :wink:
Damit kann ich absolut nichts anfangen.

also:

  • Welches Datenbankschema hast du verwendet? (simple / snapshot / osm2pgsql oder ein anderes) ?
  • in welchem Format liegen die Rohdaten vor?
  • mit welchem Programm oder Script hast du die Daten in die DB geladen?
  • welche Beschreibung hast du für deine “Taten” verwendet?

solltest du den mit Osmosis üblichen Weg gegangen sein, was ich bezweifle, oder osm2pgsql benutzt haben,
müssten alle Nodes, Ways und Relationen in der DB drin sein. Insbesonders auch die Ways mit ihren Geometrien.

bitte “Butter bei die Fische”.

Gruss
Walter

um dich später auf den richtigen Pfad zu bringen, müssen wir noch ein wenig wissen, was du später mit der db anfangen willst.
Es gibt für verschiedene Zielgruppen (Anwendungsbereiche) total unterschiedliche Vorgehensweisen.

Hi,

sinnvolles formulieren von Problemen ist leider ein bekanntes Problem bei mir… aber ich werd mir mühe geben;)

Also verwendet hab ich das pgsimple_schema_0.6.sql Schema, und anschließend direkt über Osmosis in die DB imortiert,
einmal in die Testdatenbank nur die zwei Fetzen Autobahn, die ich zuvor mit josm als xml gespeichert habe…:
osmosis --read-xml “Datei” --write-pgsimp database=… user=… password=…

Was für mich wichtig ist, sind räumliche Abfragen zu den Objekten in der DB, zB. die Gesamtlänge des Straßennetzes in der Datenbank, oder welcher User an der Erfassung beteiligt ist, sprich, die Daten müssen nur vollständig sein, wird nix gerendert oderso.
Aber schon die Längenabfrage in sql ist in dem Zustand problematisch, weil die Wege erstmal tatsächlich keine eigene Geometrie haben,
dafür sorgt dann die CreateGeometryForWays.sql, hab ich auf der DB ausgeführt und daraufhin wird eine neue Tabelle “way_geometry” erzeugt, mit der sich nun die Geometrie abfragen lässt. Beispiel für einen der Wege von oben dann:

SELECT DISTINCT wg.way_id,(ST_Length ( wg.geom )) / 1000
FROM way_geometry wg, way_tags wt
WHERE wg.way_id = wt.way_id
AND wg.way_id = 101528294

Ich dachte irgentwie dass sei in Osmosis der übliche weg…? Oder ist der Ansatz irgentwie völlig daneben?

Später für die konkrete Anwendung dann soll übrigends eine komplette Stadt (Osnabrück) aus dem .pbf niedersachsen Datensatz der Geofabrik importiert werden, ausgeschnitten mit nem polygon, dachte da also an folgendes:
osmosis --read-pbf file=niedersachsen.osm.pbf --bounding-polygon file=grenze.poly --write-pgsimp database=… user=… password=…

aber das würde ja letztlich aufs selbe hinauslaufen… das format der Ausgangsdaten dürfte ja auch eigentlich keinen Einfluss haben…?

So, hoffe ich hab nun nichts wichtiges mehr vergessen…:wink:

Viele Grüße!

Warum nimmst du nicht osm2pgsql zum Import?
Das nimmt dir die Erstellung der Geometrien schon mal ab.

Welche User an der Erfassung beteiligt waren, bekommst du nur über einen full history dump raus. In den pbf der Geofabrik stehen nur die letzen Bearbeiter drin.

Gruß,
ajoessen

weil er NICHT rendern will.

hast du zusätzlich pgsimple_schema_0.6_linestring.sql und pgsimple_schema_0.6_bbox.sql ausgeführt??? Die sind für die Geometrien zuständig!!!

wo kommt dieser ominöse script her? kenn ich nicht und brauch ich auch nicht. Welche doku verwendest du?

nicht ganz, nur etwas schräg :wink:

das sollte so ok sein.

Gruss
walter

p.s. eventuell ziehst du die ganze Sache gleich mit dem snapshot-schema durch. ist etwas umfangreicher als das simple aber beinhaltet dann gleich alle tags aller Objekte im hstore-format.
kannst aber auch später drauf umsteigen, falls es notwendig sein sollte.

pps: die Grenzen kriegst du hier: http://wnordmann.homeunix.com/index.php/downloads/cat_view/40-openstreetmap/41-grenzen/48-deutschland/44-poly-files/46-base
(ist rein zufällig mein Server)

nein, ich dachte irgentwie mit diesem CreateGeometryForWays wäre alles klar, …

…woher ich diese Weisheit habe weiß ich allerdings auch nichtmehr genau, als ich jedenfalls im GIS zunächst nur Punkte sah habich mich dunkel dran erinnert…
das liegt auch bei osmosis mit drin bei den scrips, ne ebene tiefer in contrib.

Ich werds jez nochmal so versuchen, vielen Dank für die Hilfe :slight_smile:

und übrigends ein klasse Service mit den Grenzpolys;)

Viele Grüße!

Ahh, da war ich noch nicht. wofür der genau gut sein soll, muss ich mir mal ansehen.
Wie du schon geschrieben hast, macht der aus den Nodes Ways. Aber warum?

fang erst mal mit den beiden bei dir fehlenden Scripts an. Da befindest du dich noch auf sicherem Gebiet. Die stammen vom Osmosis-Autor.

Gruss
walter

Okay, damit funktioniert soweit, die Lines sehn ganz hübsch aus.

Bloß stimmen irgentwie die Längen nicht :confused:

Als Beispiel mal der Weg 29201323, hat in Josm eine Länge von 1.09 km.

In der Datenbank liefert:
SELECT (ST_Length (linestring))
FROM ways WHERE id = 29201323
eine sagenhafte Länge von 1.6 cm.

Was dem ganzen die Krone aufsetzt:
Lade ich den Postgis Layer in Qgis, und mess da die strecke nochmal nach, stimmt die Länge! (ca 1.09km)
Wenn ich dasselbe Stück dagegen in OpenJump lade und dort nachmesse, lade ich wieder bei 1.6 cm.

Irgentwas läuft also nachwievor quer…

Denke mal über die Einheiten nach. Außerdem kann es sein, dass es ein Problem mit der Projektion gibt. das räumt Qgis vielleicht gleich richtig aus.

Hatte in der Tat vergessen dass ich in meinen heutigen Test-Datenbanken noch im “Rohen” WGS 84 war, wenn ichs nach UTM transformiere läufts.
Zwar komisch dass OpenJump nicht damit klarkommt, aber soll mir wurscht sein;) Jez stimmen die Längen auch wieder… daran hab ich heut einfach nichtmehr gedacht :confused:

Nachdem aber CreateGeometryForWays ja schon bei den einfachen Lines völlig versagt hat, gibts noch irgentwie ne schnelle möglichkeit aus geschlossenen Linienzügen Polygone zu machen?