Relation:associatedStreet

Ja schon, aber es ist ja Sache des Renderers, dass er sie nicht darstellt. Nominatim zeigt ja, dass man sie bekommen kann.

Dieser Diskussionsstrang hat aber nichts mit dem eigentlichen Thema zu tun und sollte besser separat weitergeführt werden.

Ich grab die Leiche aus Gründen mal aus…

Diesbezüglich hat sich seither in osm2pgsql wohl nichts geändert? Zumindest im default.style mit output psql oder gazetter werden die Relationstags nicht auf die Objekte übertragen. Kann man den [osm2pgsql].style ändern, damit diese Relationen aufgelöst werden?

Wenn nicht, wie kommt man ausgehend vom Relationsmember https://www.openstreetmap.org/way/384022289#map=19/47.92844/8.85417 zu der Relation https://www.openstreetmap.org/relation/5713501#map=17/47.92883/8.85655, auf maschinellem Wege natürlich?

Also im Lua-Teil ist nur eine Logik drin, die Tags vom Way auf die Relation überträgt, aber nicht umgekehrt. Scheint wohl nicht zu funktionieren.

Wo und wie soll das denn erfolgen? SELECT mit INNER JOIN zwischen Way-Ids und Relation-Members mit Typ “Way” wäre wohl zu offensichtlich, um danach zu fragen. Nominatim macht sowas in der Richtung, am besten mal den den Sourcen nach “associatedStreet” suchen.

Wenn man denn was zum joinen hätte. Leider werden die type=associatedStreet von osm2pgsql zumindest in Richtung Relation > Objekt nicht berücksichtigt, da landet kein Byte von der Relation in der Datenbank, d.h. ich muß die Relationen separat in die Datenbank bringen. Wenn osm2pgsql die Relationen auflösen würde, könnte ich miŕ das sparen.

Damit das mit Nominatim funktioniert, gibt’s im Gazetteer backend von osm2pgsql noch eine eigene Logik für associatedStreet. Zum Rendern sind die aS-Relationen für das normale Backend ja eher uninteressant. Vielleicht hilft da etwas eigenes Coding mit libosmium/pyosmium oder so.

Es gibt aber sicherlich noch andere Tools, die das schon machen, z.B. https://github.com/britiger/osm_address_db (nicht ausprobiert, gerade nur einen FOSSGIS Talk auf YouTube gefunden).

Dafür, dass dieser Relationstyp tot ist, macht ihr euch wirklich (zu) viele Gedanken.

Gruss
walter

Entweder der Gazetter funktioniert nicht in die gewünsche Richtung oder ich muß noch am Aufruf was ändern…

Das hier https://www.openstreetmap.org/way/387992297 ist ein Member von https://www.openstreetmap.org/relation/5781148.

Der Extrakt wurde mit

osm2pgsql --create --unlogged --prefix gazetteer_regbez_freiburg --hstore --latlong -d gis -P 5433 --output gazetteer freiburg-regbez-latest.osm.pbf 

importiert.

SELECT osm_id, osm_type, class, type, name, admin_level, address, extratags
FROM public.place
WHERE osm_id IN (/*member house*/ 387992297, /* relation */ 5781148, /*member street */ 300804148);

300804148;W;highway;residential;"name"=>"Mühlewiesweg";15;<NULL>;<NULL>
387992297;W;building;yes;<NULL>;15;"housenumber"=>"1";<NULL>

Wie man sieht, sieht man unerwartetes - auch hier gibt es keinerlei Verbindung von der Relation zu den Members. Ich hätte jetzt erwartet, dass der Gazetter beim zweiten Record (387992297) die relevanten vorhandenen tags aus der Relation ergänzt:

<relation id="5781148" version="2" timestamp="2015-12-27T07:46:08Z">
    <member type="way" ref="300804148" role="street"/>
    <member type="way" ref="387992297" role="house"/>
    ...
    <member type="way" ref="387809106" role="house"/>
    <tag k="name" v="Mühlewiesweg"/>
    <tag k="type" v="associatedStreet"/>
    <tag k="addr:city" v="Emmingen"/>
    <tag k="addr:country" v="DE"/>
    <tag k="addr:postcode" v="78576"/>
  </relation>

Damit hätte man für das Gebäude eine komplette Adresse statt nur die Hausnummer.

Aber egal, ich werde die Relationen manuell importieren und schauen, wieviel Objekte überhaupt ergänzt werden müssen und können, erstmal mit dem kleinen Extrakt, damit ich abschätzen kann, ob sich das für Gesamt-Deutschland auch lohnt…

Er ist nicht tot, leider. Ich schätzte, dass wir deutschlandweit mehrere 100.000 Adressen haben, die nur aus Hausnummern bestehen und der Rest der Adresse superumständlich aus der Relation zu ermitteln ist.
Auflösen tut die ja auch keiner, wenn ich mir so manchen timestamp anschaue:

<relation id="49853" version="11" timestamp="2018-08-22T12:54:01Z">

Allein im Regierungsbezirk Freiburg haben wir aktuell 5.158 associatedStreets-Relationen mit 87.056 house-Members. Rechne das auf Deutschland hoch…

Edit: Vielleicht wäre das ein Anlass für eine konzentrierte Aktion, diese “toten” Relationen so langsam loszuwerden :smiley:

Nach meiner Erfahrung gibt es nur einige isolierte Inseln, in denen associatedStreet besonders verbreitet ist - neben Südbaden nach meiner Erinnerung noch der Vogelsberg in Hessen.

Die Idee gab’s schon vor 4 Jahren: https://wiki.openstreetmap.org/wiki/Talk:Relation:associatedStreet

Jedesmal tauchen dann irgendwelche Datenbank-Normalisierungs-Verfechter auf, und blockieren die Aktion. Dass diese Relationen praktisch unwartbar und oft unvollständig sind, spielt dabei eine eher untergeordnete Rolle.

Bei den Nachbarn in Frankreich sind die Dinger auch recht beliebt, allerdings stammen die zum großen Teil aus irgendwelchen automatisierten Importen. Freiwillig würde sich das sonst wohl kaum jemand antun.

der Ostberliner Raum hat auch noch einige… http://tools.geofabrik.de/osmi/?view=areas&lon=13.18608&lat=52.07960&zoom=9&overlays=duplicate_node,single_node_in_way,duplicate_segment,way_in_multiple_rings,intersection,intersecting_segments,ring_not_closed,touching_rings,role_should_be_inner,role_should_be_outer,inner_with_same_tags,ways

Sven

Man kann die Tags doch von Hand redundant auf die Hausadressen verteilen, dann sind sie für die Auswerter bequem erreichbar.
Die Relationen muss man nicht zwingend löschen, sie werden halt veralternder Datenschrott, der irgendwann (je nach Gegend) widerstandslos entsorgt werden kann.
Die Stadt Freiburg ist übrigens eine aS-Hochburg.

Widerspruch: Konvertieren ja - aber bitte den alten Schrott dann sofort löschen.

Gruss
walter

+1
Ich habe das vor Jahren auch mal für mkgmap programmtechnisch auseinandergedröselt. Es gibt leider diverse Varianten, wo in der Relation ein Straßenname drinsteht und in den Members irgendwelche Varianten davon. Ist dann das reine Kaffeesatzlesen, wenn man keine CS Infos hat. Also wenn auflösen, dann auch Rel entfernen.