Hier mal was für die Mathe-Helden :
Für ein Infotool möchte ich die Länge einer Edge über die Endpunkte und die Tangenten ermitteln. Mehrere Fälle:
1. Die Edge ist gerade. Kein Problem. Pythagoras hilft.
2. Die Edge ist ein Kreissegment. Auch kein Problem, da gibt's eine Formel für.
3. Die Edge ist eine unregelmäßige Kurve, z.B. eine S-Kurve.
entity2tn bietet die Möglichkeit, die Länge aus dem Mittelwert der Lanes zu ermitteln. Nachteil: Es wird bei Straßen nur der Bereich zwischen zwei Kreuzungen gemessen.
Ich könnte auch wieder über die Tangenten mit der Radius-Formel einen Näherungswert berechnen. Dieser stimmt aber bei unregelmäßigen Kurven nicht mit entity2tn überein.
Lollo berechnet die Länge wohl aus der Länge der Tangenten. Aber das ist noch ungenauer.
Das Beste wäre, wenn ich die Länge einer Edge über eine Funktion abgreifen könnte, die im Gegensatz zu entity2tn immer zwischen den Endpunkten misst. Keine Ahnung, ob eine solche Funktion existiert.
Die andere Möglichkeit wäre ein Algorithmus, wie ihn UG zur Längen-Ermittlung benutzt. Ich denke, sie benutzen keine seitenlange Formel, sondern ein kurzes Näherungsverfahren.
Here's something for the math heroes : (hello enzojz )
For an information tool, I would like to determine the length of an edge using the end points and the tangents. Several cases:
1. The edge is straight. No problem. Pythagoras helps.
2. The edge is a segment of a circle. No problem either, there is a formula for.
3. The edge is an irregular curve, e.g. an S-curve.
entity2tn offers the possibility to determine the length from the mean value of the lanes. Disadvantage: Only the area between two intersections is measured on roads.
I could also calculate an approximate value using the tangents with the radius formula. However, this does not match entity2tn at irregular curves.
Lollo probably calculates the length from the length of the tangents. But that is even more imprecise.
The best would be if I could get the length of an edge using a function that, unlike entity2tn, always measures between the end points. I don't know if such a function exists.
The other possibility would be an algorithm such as that used by UG to determine length. I think they don't use a page-long formula, but a short approximation method.