Warum besteht ein 4-eckiges Gebäude aus 5 Nodes?

Hallo, vielleicht war mir das noch nie aufgefallen, und die OSM-website macht schon immer seltsame Zählungen …
Diese 4-eckige Kirche
https://www.openstreetmap.org/way/542229338

“Knoten
5 Knoten
5242450478
5242450479
5242450480
5242450481
5242450478”

… also ich zähle nur 4
(klar, mit entrance-Node(s) auf der Umfahrung wären es mehr)

Das stimmt schon so: https://wiki.openstreetmap.org/wiki/DE:Way → Geschlossener Linienzug sagt

Bei einer aus einem geschlossenen Linienzug bestehenden Linie sind Start- und Endpunkt identisch.

Und für die Kirche (als Fläche) dann noch:
*
Eine Fläche (en) ist ein gefüllter, geschlossener Linienzug.*

Jeder Way-Abschnitt liegt zwischen zwei Nodes. Um vier Way-Abschnitte zu beschreiben (nämlich die vier Seiten deines Gebäudes), braucht man daher fünf Nodes, wobei bei einem geschlossenen Way der letzte wieder der erste ist.

Mit nur vier Nodes wäre es ein U-förmiges offenes Gebilde aus drei Abschnitten. Probier’s auf Papier aus :slight_smile:

Um deine nebenbei geäußerte Vermutung zu bestätigen: Ja, das war schon immer so, und du hast es nur nicht gemerkt :slight_smile:
Es ist auch nicht die OSM-Website, die so zählt, sondern das steht auch schon so in der Datenbank:

  <way id='542229338' timestamp='2021-05-15T18:02:00Z' uid='2585690' user='Jo Cassel' visible='true' version='3' changeset='104744400'>
    <nd ref='5242450478' />
    <nd ref='5242450479' />
    <nd ref='5242450480' />
    <nd ref='5242450481' />
    <nd ref='5242450478' />
    <tag k='amenity' v='place_of_worship' />
    <tag k='building' v='church' />
    <tag k='denomination' v='protestant' />
    <tag k='historic' v='yes' />
    <tag k='image' v='https://commons.wikimedia.org/wiki/File:Kelze_-_Kirche_2020-01-31_b.JPG' />
    <tag k='name' v='Kirche Kelze' />
    <tag k='religion' v='christian' />
    <tag k='start_date' v='1707' />
    <tag k='wikidata' v='Q106839942' />
    <tag k='wikimedia_commons' v='Category:Evangelische Kirche Kelze' />
    <tag k='wikipedia' v='de:Evangelische Kirche Kelze' />
  </way>

Wenn Du Dir die ID-Nummern anschaust, siehtst Du dass der Anfangs- und der Enpunkt die gleiche ID-Nummer hat 5242450478 - daran kannst Du sehen, dass der Anfangs- und der Endpunkt identisch sind. Trotzdem gibt es halt einen Anfangs- und einen Endpunkt.

… war mir wohl noch nie aufgefallen/aufgestoßen
Datenmodelierungs-intern mag diese Zählung sinnhaft sein, unter der Prämisse, dass sich die OSM-website aber nicht primär an Renderer/maschinelle Auswerter sondern an Menschen richtet wäre dann imho hinter dem “5 Knoten” sowas wie “weil Area/geschlossener Linienzug” angebracht.

Also die Node-Referenzen im Way-Element richten sich IMHO schon ziemlich schwerpunktmäßig an maschinelle Auswerter. Ich habe mir noch nie die Nummern rausgeschrieben und anschließend an den Nodes dafür die Koordinaten rausgesucht, wenn ich wissen wollte, wo ein Way verläuft.

Man hätte den Unterschied zwischen offener U-form und geschlossenem Kasten, beide aus 4 Nodes, auch anders abbilden können, etwa durch ein tag loop=true, dem ein Auswerter entnehmen kann, dass vom letzten Node wieder eine Verbindung zum ersten geht. Das hätte aber einen entscheidenden Nachteil: Ein geschlossener Way schließt ja gar nicht zwingend zu seinem ersten Node, sondern das kann auch jeder andere außer dem vorletzten sein (Beispiel: Sackgasse mit ausgemappter Wendeschleife, zB https://www.openstreetmap.org/way/43711562). Setzt du dann einfach den schließenden Node, der oben schon mal vorkam, nochmal auf die Liste, ist es in jedem Fall klar, wohin der Way geschlossen wird.

(Die Nummern in der Liste “sind” ja auch keine Nodes, sondern sie verweisen auf [separat abgespeicherte] Nodes, insofern besteht deine Kirche schon aus vier Nodes, aus denen fünf Referenzen für die vier Abschnitte gebildet werden.)

Ich finde die Zählweise auch falsch. Ein OSM Weg hat n Einträge, die m verschiedene Knoten referenzieren. Technisch kann ein Weg durchaus 100 Referenzen haben, die alle den gleichen Knoten referenzieren.

Das wäre dann der Unterschied zwischen “way nodes” und “distinct way nodes”. Momentan zählt die Webseite die Way nodes und nennt das dann einfach Knoten. Vielleicht würde man das besser als “Anzahl Knoten im Weg” bezeichnen? Die “distinct way nodes” wären dann “unterschiedliche Knoten im Weg” und im konkreten Fall dann wirklich 4.

Wenn man es genau nimmt… Stimmt die Kirche besteht aus 4 Node die um einen Weg zu bilden fünf mal referenziert werden…

Ist halt aufwendig bzw. Rechenaufwendig… das zu fixen das Node IDs nicht doppelt gezählt werden dürfen.

Gruß Miche

Wenn man nicht die bequemen “Building-Tools” in JOSM verwendet, braucht es auch 5 Mausklicks, um ein Gebäude zu erstellen.
(Den sechsten mit “Q”, um es rechtwinklig zu machen, lasse ich mal außen vor.)
Von daher sind die fünf Punktreferenzen für das Gebäude-Objekt normal.
Nur wenn es in OSM einen Flächentyp als automatisch geschlossenen Linienzug gäbe, könnte man sich den schließenden Punkt sparen.

Es ist die übliche datentechnische Schreibweise… Stichwort WKT

Darum hab ich Hoffnung, daß wir irgendwann in naher Zukunft (=3589 Jahren :D) in OSM doch mal einen realen echten datentechnischen Geometrietyp Polygon haben werden…

Sven

Bei geschlossenen Linien, die keine Flächen darstellen (zB ringförmigen Straßen), muss auch ein Node zweimal referenziert werden. Dein Geometrietyp löst also das Problem nicht :slight_smile:

@Jo Cassel: Vielleicht ist einfach die Überschrift “Knoten:” falsch. Denn angegeben werden nicht die Knoten, sondern die Kanten: eine von …78 nach …79, eine von …79 nach …80, eine von …80 nach …81 und eine von …81 nach …78. Die eigentlichen Informationen sitzen also zwischen den Zahlen. Wenn man es so betrachtet, ist es vollkommen logisch :slight_smile:

Wenn es 4 Segmente anstatt 5 Knoten hiesse, dann wäre ich weniger verwirrt.

… wahrscheinlich, dann werde ich wohl mit derartigen “Teufelsknoten” an Kirchen und sonstwo leben müssen :wink:
Grüße in die Runde
Jo

Zur Zählung: Du malst einen Punkt. Nennen wir ihn Punkt1. Um eine Linie zu einem Ziel zu zeichnen, musst Du erst einen 2. Punkt setzen. Erst in einem dritten Schritt kannst Du deine erste Linie malen. Die zweite Linie erst, nachdem Du Punkt3 gesetzt hast (von Punkt2 zu 3). Dann setzt Du Punkt4 und malst Linie 3. Um nun Linie4 malen zu können, musst Du sagen, wohin sie gehen soll. Das ist Punkt5 - der identisch mit Punkt1 ist, aber für Linie4 notwendigerweise ein neues Ziel darstellt.