DE:Proposed features/House numbers/Karlsruhe Schema

From OpenStreetMap Wiki
Jump to navigation Jump to search
Karlsruhe Schema
Zustand: Inactive (inactive)
Vorgeschlagen von: MarcusWolschon (and others)
Tagging: addr:*=*
betroffene Elemente: Knoten oder Punkt Linienzug Fläche oder Gebiet Relation
Kurzbeschreibung: Tagging von Adressen
Statistik:

Entwurf vom: 2008-04-19
Diskussionsbeginn: 2008-04-21
Abstimmungsbeginn: -
Abstimmungsende: -


Dieses Schema wird für erste Versuche zum Kennzeichnen von Hausnummern verwendet.

Durch den erhöhten Bedarf an Adresssuche-Möglichkeiten nicht zuletzt auch durch OSM Navigationsanwendungen hat dieses Proposal zunehmend an Bedeutung gewonnen und beschränkt sich mittlerweile (Stand 07/2010) nicht nur auf das Eintragen von Hausnummern sondern der gesamten Adressdaten (siehe Schlüssel).

Housenumber-karlsruhe-de.png

Grundlagen

Häuser liegen in der Nähe von Straßen. Ihren Bezug zur Straße haben sie über die postalische Adresse.
Gleichzeitig verfügen sie auch über eigene Geo-Koordinaten.

Im System von OSM gesprochen:

  • Grundsätzlich entspricht jedes Haus einem Punkt oder einer Fläche, der/die in der Nähe (nicht auf!) einer Straße liegt.
  • Besondere Linien können solche Punkte verbinden, um dazwischen liegende Hausnummern "interpolierend" anzudeuten; d.h. mit ihnen wird angezeigt, dass z.B. zwischen den Hausnummern 10 und 20 die Hausnummern 12, 14, 16, 18 liegen.

Rechtliche Situation

Bundeseinheitlich ist im BauGesetzbuch (BauGB) in §126, (3) geregelt:

(3) Der Eigentümer hat sein Grundstück mit der von der Gemeinde festgesetzten Nummer zu versehen. 
    Im Übrigen gelten die landesrechtlichen Vorschriften.

D.h. Hausnummern beziehen sich in Deutschland grundsätzlich auf Grundstücke, werden von der Gemeinde vergeben und nähere Details sind üblicherweise auf Landes- und z.T. auf Gemeindeebene festgelegt. In der Praxis werden zumeist einzelne unabhängig genutzte Wohn- und Gewerbe-Gebäude mit einer Hausnummer versehen, bei Bedarf auch einzelne Eingänge, Zugänge und Treppenaufgänge. Weiterhin ist oft festgelegt, dass unbebaute Grundstücke nur in Ausnahmefällen nummeriert werden, je nach Bundesland und ggf. Gemeinde.

Orte ohne benannte Straßen

Wenn ein Ort keine benannten Straßen hat, so sollte man den Ortsteil in den tag addr:place=* eintragen, bei einem Einzelgehöft der Name des Flurstücks, andernfalls der Ortsname selbst.

In der Mannheimer Innenstadt haben die Straßen keinen Namen, sondern die Häuserblöcke (Quadrate) sind mit Buchstaben gekennzeichnet. Innerhalb des Blockes haben die Häuser Hausnummern. Diese Nummern laufen dann einmal im Quadrat rum. Ein Haus hat z.B. die Adresse B5 3, das Haus auf der anderen Straßenseite hat die Adresse C5 8.

Schlüssel

Zur vollständigen Adresserfassung haben sich folgende Schlüssel (Stand 07/2010) zur Verwendung am Adress-Node oder Gebäude (vor allem für neue OSM-User sehr gut geeignet!) oder Adress-Relation (siehe unten Relation, für erfahrene OSM-User zu empfehlen) etablieren können:

Schlüssel Verwendung Element-Typ Wert Beschreibung
addr:housenumber erforderlich Knoten oder Punkt Fläche oder Gebiet Text die Hausnummer (Ziffern und evtl. Buchstaben)
addr:street optional Knoten oder Punkt Fläche oder Gebiet Text der postalische Name der Straße
addr:interpolation optional Linienzug even / odd / all / alphabetic Art der Interpolation (gerade, ungerade, durchlaufend oder alphabetisch für 7a-7e)
addr:full optional Knoten oder Punkt Fläche oder Gebiet Text vollständige postalische Anschrift
addr:postcode optional Knoten oder Punkt Fläche oder Gebiet Text Postleitzahl
addr:city optional Knoten oder Punkt Fläche oder Gebiet Text Postalische Bezeichnung der Stadt bzw. Gemeinde
addr:country optional Knoten oder Punkt Fläche oder Gebiet zwei Buchstaben Da die Postleitzahlen nur in einem Land einmalig sind, empfiehlt es sich den nach ISO 3166-1 alpha-2 eingeführten Zwei-Buchstabencode in Großbuchstaben (siehe wikipedia:ISO 3166-1 alpha-2) zu benutzen. Also z.B. 'DE' für Deutschland und 'FR' für Frankreich.

Hinweis: Der Schlüssel enthält einen Doppelpunkt. So wie man sonst z.B. den Schlüssel highway mit dem Wert residential eingibt, muss man hier den Schlüssel addr:housenumber mit einem Wert wie 10 eingeben.

Beispiel: addr:housenumber=10

Anwendung

Einzelnes Haus als Punkt in der Nähe der Straße

NodeNextToRoad.png Der in die Nähe der Straße gesetzte Punkt wird so gekennzeichnet:

addr:housenumber=10

Der Straßenname kann dann in den meisten Fällen von den Anwendungsprogrammen vom nächstliegenden Straßenabschnitt genommen (Fuß-, Rad- und Feldwege zählen dabei nicht) werden. Achtung: Die alleinige Angabe von addr:housenumber=* hat sich als fehlerträchtig herausgestellt. Z.B. an Eckhäusern oder bei Häusern mit Eingang an der Parallelstraße hinter dem Haus, kann Software alleine nicht immer richtig entscheiden, welche Straße den Namen liefern soll. Aus diesem Grund ist das vollständige Erfassen aller Schlüssel sehr zweckmäßig und macht die Auswertung für Anwendungen (Routing, Suchen, etc.) sicherer und weniger fehleranfällig. (Siehe 'genaue Angabe der zugehörigen Straße')

Einzelnes Haus als Fläche

HousePolygonNextToRoad.png

Ein Haus als Fläche wird so gekennzeichnet:

building=yes (oder building=apartements, ...)
+ addr:housenumber=10

Dies entspricht dem ersten Beispiel, nur dass statt des Punkts eine Fläche verwendet wird.

Mehrere Häuser an einer Straße (Interpolation)

Interpolationen sind ein vorübergehendes Hilfskonstrukt.
Besser ist es alle Häuser einzuzeichnen und allen eine eigene Hausnummer zu geben.

HouseNumbersInterpolation.png

Parallel zur Straße wird eine zusätzliche Linie gezeichnet. Mindestens zwei Punkte dieser Linie (mindestens die Endpunkte) werden wie oben als "einzelne Häuser" mit Hausnummern gekennzeichnet. Diese zusätzliche Linie (nicht die Punkte!) bekommt folgende Kennzeichnung:

für gerade Hausnummern:

addr:interpolation=even 

für ungerade Hausnummern:

addr:interpolation=odd 

für fortlaufende Hausnummern:

addr:interpolation=all

Diese Methode funktioniert nicht bei Hausnummern mit Buchstaben als Zusatz (Beispiel: 21a). Wenn Häuser (und damit eine Hausnummer) fehlen, (z.B. bei einem fehlenden Haus Nr. 12) und man genau sein will, dann sind zwei Linien zu zeichnen (im Beispiel "1-11" und "13-25").

Der Straßenname kann dann in den meisten Fällen von den Anwendungsprogrammen vom nächstliegenden Straßenabschnitt genommen (Fuß-, Rad- und Feldwege zählen dabei nicht) werden. Achtung: Die alleinige Angabe von addr:housenumber=* hat sich als fehlerträchtig herausgestellt. Z.B. an Eckhäusern oder bei Häusern mit Eingang an der Parallelstraße hinter dem Haus, kann Software alleine nicht immer richtig entscheiden, welche Straße den Namen liefern soll. Aus diesem Grund ist das vollständige Erfassen aller Schlüssel sehr zweckmäßig und macht die Auswertung für Anwendungen (Routing, Suchen, etc.) sicherer und weniger fehleranfällig. (Siehe 'genaue Angabe der zugehörigen Straße')

(weitere Details siehe englische Seite)

genaue Angabe der zugehörigen Straße

Relationen sind der bevorzugte Weg, die zugehörige Straße anzugeben, da sie in Software leicht auszuwerten sind. Wer sich aber nicht mit Relationen beschäftigen will, kann auch das addr:street-Tag dazu verwenden (siehe nächster Abschnitt). [Nicht mehr, siehe Talk:Relation:associatedStreet#Deprecation of associatedStreet in Germany]

Laut Marcus Wolschon reicht es, entweder addr:street oder die Relation associatedStreet) zu verwenden (siehe Mail "Re: Hausnummernmapping & Relationen (Karlsruher Schema)" (Wayback Machine) von 2009-04-15 09:18:48 GMT auf der talk-de Mailingliste).

genaue Straße für einzelne Häuser

HousePolygonNextToRoadWName.png

Zusätzlich zur Hausnummer wird die Straße angegeben:

addr:housenumber=10
addr:street=Goethestraße

Oder als vollständige Adresse:

addr:housenumber=10
addr:street=Goethestraße
addr:postcode=50011
addr:city=Köln
addr:country=DE

Beide Formen sind für Menschen leicht und direkt verständlich.

als Relation

Relationen sind für Computer in bestimmten Anwendungsfällen leichter zu verarbeiten, aber weniger intuitiv für Menschen.

Deren Verwendung kann allerdings auch für Menschen vorteilhaft sein. Wenn man in Josm per Doppelklick eine Relation aktiviert, so werden alle Mitglieder dieser Vorlage angezeigt. In diesem Fall also Straßenteile und assoziierte Hausnummern. Damit kann man leicht überprüfen, ob eine Straße komplett ist.


Eigenschaften
Schlüssel Wert Bemerkungen
type associatedStreet
name Straßenname Optional?!?! Zur besseren Integration in JOSM


Mitglieder der Relation
Element-Typ Rolle Anzahl Anmerkungen
Linienzug street eine Straße, zu der die Hausnummern gehören
Knoten oder Punkt Linienzug house eine(r) oder mehrere eine oder mehrere Hausnummern


Beispiel
Screenshot, der die Beispielrelation in JOSM zeigt.

So werden Häuser mit Hausnummern durch eine Relation mit einer Straße verknüpft:

Punkt für Hausnummer „10“:

building=yes
+ addr:housenumber=10

plus

Linie für „Goethestraße“:

highway=residential 
+ name=Goethestraße

→ Relation zur Verknüpfung:

type=associatedStreet

Mitglieder der Relation sind die beiden eben angelegten Objekte:

  • Hausnummer-Punkt mit Rolle house
  • Straßen-Linie mit Rolle street

genaue Straße für eine Reihe von Häusern

Parallel zur Straße wird eine zusätzliche Linie gezeichnet. Diese Linie wird so gekennzeichnet:

addr:interpolation=* 

Der erste Punkt dieser Linie erhält zusätzlich

addr:street=*

Auch hier kann mit Relationen gearbeitet werden, indem die mit addr:interpolation=* gekennzeichnete Linie in der Rolle house der Relation hinzugefügt wird.

Angabe einer besonderen Zufahrt

<relation id="??">
  <tag k="type" v="roadAccess" />
  <member type="node" ref="11" role="accessto" />
  <member type="node" ref="12" role="accessvia" />
  <!-- (bei Bedarf weitere <member type="node" ref="11" role="accessvia" />
        für Gebäude mit mehreren Zugängen -->
  <member type="way" ref="???" role="accessfrom" /> <!-- bei Bedarf -->
</relation>

Mit anderen Worten: Eine Relation des Typs type=roadAccess mit diesen Mitgliedern (members):

  • accessto = ein Punkt mit Hausnummernangabe (address node), der also wie oben angegeben wenigstens mit addr:housenumber=*, aber wegen der Entfernung zur Straße sinnvollerweise meist auch mit addr:street=* gekennzeichnet ist.
  • accessvia = ein Punkt (access node) auf der Straße oder nahe an dieser. Ein Routing-Algorithmus sollte ihn behandeln wie einen Punkt mit den entsprechender Hausnummernangabe, der nicht Mitglied einer solchen Relation ist. Im Falle, dass mehrere Punkte als accessvia angegeben sind, dann ist nach den üblichen Kriterien (z.B. kürzeste oder schnellste Route) der beste auszuwählen.
  • accessfrom (bei Bedarf) = der Weg (Straße, Zufahrtsweg), von dem aus der/die als accessvia gekennzeichnete(n) Punkt(e) ausschließlich zu erreichen ist/sind.

Bisherige praktische Anwendung

  • 2 901 759-mal allein in Deutschland wurden bisher Punkte mit addr:housenumber=* gekennzeichnet (Stand: 24.09.2012 von Tagwatch Germany [Im April 2011 waren es noch ca. 1 400 000]).
  • Traveling Salesman hat eine Kommandozeilen-Anwendung org.openstreetmap.osm.data.searching.HouseNumberFinderTest, die nach Straße und Hausnummer suchen und dazu die Geo-Koordination angeben kann.
  • OpenRouteService (OSR) wertet die Adressen für die Berechnung von Routen aus.
  • Osmarender zeigt solche Hausnummern sehr hübsch an: einzelne Häuser, Interpolation
  • Seit Februar 2009 tut dies auch Mapnik: einzelne Häuser, Interpolation
  • JOSM hat Vorgaben zum einfachen Setzen von Eigenschaften der Form addr:*=*, neuere Versionen haben unter "Vorlagen" (presets) - "Zivilitationsbauten->Gebäude" auch Vorlagen für Hausnummern nach diesem Schema.
  • mkgmap bindet die Adressdaten in die POI Info mit ein. Die associatedStreet Relation wird zur Zeit noch nicht ausgewertet.
  • LoroDux wird für Blinde hausnummerngenaues Routing anbieten. Bitte dafür die Eingangs-Nodes mit der addr:housenumber versehen.

Brainstorm Relation/Einzelerfassung auf talk-de 07/2010

Quelle: Diskussionsfaden Mailingliste talk-de: Zum 1000. mal - Hausnummern und Straßennamen?

  • Zusammenfassung: Diskussion darüber, ob die Methode der ausschließlichen Erfassung der Hausnummer, der Einzelerfassung von Adressdaten (hier ist nicht nur die Hausnummer, sondern die vollständige Adresse gemeint!) an eingezeichneten Gebäuden (building=yes) oder an Adress-Nodes mit vollständiger Angabe aller Adressschlüssel (siehe "Schlüssel") sinnvoller oder weniger sinnvoll ist, als Erfassung und Abbildung aller Adressdaten unter Verwendung von Relationen (siehe "Relationen"). (Die Hausnummer sollte nicht alleine erfasst werden, da Software die Beziehung zur Straße dann in vielen Fällen erraten müsste. Z.B. Eckhäuser, Häuser mittig zwischen zwei Parallelstraßen, etc.)
  • Ergebnis: Die im Karlsruher Schema vorgeschlagene Methode der Erfassung von Hausnummern zusammen mit der Straße, zu der sie gehören, in einer Relation vom Typ "associatedStreet" hat den Vorteil der geringeren Redundanz (addr:postcode=*, addr:city=* und addr:country=*) kann der Relation mitübergeben werden und muss nicht an jedem Gebäude/Adressknoten erfasst werden) und der damit einhergehenden "schöneren" Datenart. Sie hat aber auch den Nachteil, dass neue Mapper sich sofort mit Relationen beschäftigen müssen, um überhaupt Adressen eintragen zu können, was eine Hürde und Abschreckung, aber auch Fehlerquelle durch und für diese Neuuser bedeuten kann. Das betrifft nicht nur die Erfassung der Adressdaten, sondern vielmehr auch alle Änderungen an ways durch Trennung und Neuverknüpfung, etc., da hier die Relationen beeinträchtigt werden können. (Das einfache Tag-Ändern/Ergänzen am way selbst stört jedoch nicht die Relationen zu der sie gehören.) Die im Karlsruher Schema vorgeschlagene Methode der Einzelerfassung von Adressdaten an eingezeichneten Gebäuden (building=yes) oder an Adress-Nodes ist die für Neuuser einfachere Methode. Durch Mehrfachmarkierung bereits bestehender Gebäude und Knoten kann auch hier eine schnelle Erfassung der gemeinsamen Daten (Straße, PLZ, Stadt, Land) erreicht werden. Durch das Eintragen dieser Adress-Eigenschaften am Gebäude/Node selbst werden keine anderen Bereiche, wie der Straße zu der sie gehören, im Fehlerfalle beeinträchtigt oder in Mitleidenschaft gezogen werden. Bei Adress-Relation könnte dies für unerfahrene Neuuser eher der Fall sein.
  • Fazit: Da man neue OSM-User gerade zur Erfassung von Adressdaten eher gewinnen denn abschrecken möchte, sei dazu die Methode mit addr:-keys (siehe Schlüssel) als Tags am Gebäude oder Node für diese Gruppe der neuen OSM-User die praktikabelste Lösung, aber nicht die alleinig richtige. Erfahrene OSM-User können die Relation bevorzugen, da sie weniger Redundanz bietet. (Die Hausnummer sollte in beiden Versionen nicht alleine erfasst werden, da Software im einen Fall die Beziehung zur Straße (und PLZ, Ort, Land) dann in vielen Fällen erraten müsste. Z.B. Eckhäuser, Häuser mittig zwischen zwei Parallelstraßen, etc.. Im Falle der Relationen zwar zur Straße, aber nicht zur PLZ, Ort und Land bezogen wären.)