Archiv verlassen und diese Seite im Standarddesign anzeigen : Position ermitteln
Hallo.
Ich habe folgendes Problem: Ich habe auf einer Strecke(Strasse) eine Anzahl von Punkten, welche ich per GPS-Messung erhalten habe. Nun will ich verschiedene "Flächen" um diese Punkte legen(bestenfalls Rechtecke).
1) Weiss jemand eine einfache Möglichkeit, solche Rechtecke zu definieren??
2) Später sollen weitere Messungen durchgeführt werden und es soll überprüft werden, ob sich die neuen Punkte in einer gewissen Fläche befinden. Wie kann ich das am besten realisieren??
Danke http://www.uni-protokolle.de/foren/images/smiles/icon_smile.gif http://www.uni-protokolle.de/foren/templates/subSilver/images/spacer.gif
Hallo.
Ich habe folgendes Problem: Ich habe auf einer Strecke(Strasse) eine Anzahl von Punkten, welche ich per GPS-Messung erhalten habe. Nun will ich verschiedene "Flächen" um diese Punkte legen(bestenfalls Rechtecke).
1) Weiss jemand eine einfache Möglichkeit, solche Rechtecke zu definieren??
2) Später sollen weitere Messungen durchgeführt werden und es soll überprüft werden, ob sich die neuen Punkte in einer gewissen Fläche befinden. Wie kann ich das am besten realisieren??
Danke http://www.uni-protokolle.de/foren/images/smiles/icon_smile.gif http://www.uni-protokolle.de/foren/templates/subSilver/images/spacer.gif
Oftmals verwendet man statt Rechtecken Dreiecke, dafür gibt es recht optimale Algorithmen. Das Stichwort lautet "Tesselation" oder "Triangulation". Eine der bekanntesten Algorithmen für die Triangulation ist die Delauny-Triangulation: http://de.wikipedia.org/wiki/Delaunay-Triangulation
Triangulation ist ein Optimierungsproblem, ähnlich dem Problem des optimalen Packens von Kisten in einem Volumen. Die optimale Lösung ist schwer zu finden, aber es gibt Algorithmen (z.B. Delauny), die gute -- aber nicht unbedingt optimale -- Ergebnisse liefern.
Es kann aber auch sein, daß ich dich und deine Aufgabenstellung komplett misverstanden habe :-)
Ok, meine Erklärung war wohl nicht ganz eindeutig. Ich versuchs nochmal:
Ich habe auf einer Strecke(Strasse) mit GPS Positionsdaten(also Punkte) gesammelt. Jetzt will ich die Strecke in mehrere Teilstrecken(bei einer Strasse erschienen mir Rechtecke am sinvollsten) unterteilen und bei einer erneuten GPS-Messung feststellen, in welchem Teilsegment ich mich befinde.
Dazu muss ich natürlich unter Berücksichtigung der Ungenauigkeit des GPS zu den "äussersten" Punkten noch z.B. 10m hinzuaddieren.
Wie kann ich also die Teilstücke am besten/sinnvollsten definieren und wie finde ich später herraus, in welchem Teilstück sich der neue Punkt befindet??
Ich hoffe, diesmal ist es etwas verständlicher :confused: Wenn nicht, einfach nochmal fragen...
DanDanger
05.07.2005, 20:42
Hi,
ich hab' dein Problem auch noch nicht ganz verstanden....
Wie du deine Teilstrecken genau aufteillen sollst, kann ich Dir auch nicht sagen.
Wenn dein Problem aber der "geometrische" Teil sein sollte
(z.B. "ist Punkt (x, y) in Polygon ?", etc.), kann ich Dir die
Geometry-Algorithmen-Seite von "Paul Bourke" empfehlen :
http://astronomy.swin.edu.au/~pbourke/geometry/
Gruss
DanDanger
Einfach regelmäßiges Gitter drüber spannen?
Bye, TGGC
Blue Cobold
06.07.2005, 07:46
Ich würd's trotzdem als Polygone definieren. Wenn du aus den Punkten eh einen Streckenzug machen kannst, wäre es ja kein Problem Hüll-Polygone dazu zu erstellen, also eine Strecke links und eine rechts davon immer mit dem gleichen Abstand zur Haupt-Strecke. Das Prinzip wird in der grafischen Verarbeitung als Billboards benutzt, wobei es da richtig um 3D geht und ein Punkt soll zu einem Polygon werden, welches exakt senkrecht zur Blickrichtung steht. Ein ähnliches Problem hast du auch, nur dass du statt einem Punkt eben eine ganze Strecke hast, die mit Polygonen "verfüllt" werden müsste. Und wenn du diese Polygone hast, kannst du ganz leicht deine Orts-Abfrage erstellen.
Vom Prinzip her könnte das so gehen:
Du nimmst die Punkte mit dem Index a-1, a und a+1. Nun addierst du a-1 mit a und a mit a+1 und teilst beide Vektoren durch 2. Damit hast du zwei Richtungsvektoren. Einen Am Anfang der Strecke von a nach a+1 und einen am Ende. Wenn du dazu nun senkrechte Vektoren erstellst und diese je zu ihrem Endpunkt a oder a+1 addierst, sowie subtrahierst, erhälst du ein Viereck. Schwubs ist dein Straßenstück von a nach a+1 fertig und du kannst eine Positions-Abfrage innerhalb dieses Polygons durchführen. Problem sind natürlich die verschleierten Positions-Angabe aus dem GPS, was du als Fehler bezeichnest [das sind keine, die werden absichtlich einberechnet wegen militärischer Nutzbarkeit]. Da müsstest du dann den nächstliegenden Punkt des nächstliegenden Polygons finden. Etwas tricky.
Da kannst du die Rechtecke aber auch gleich sein lassen, und einfach nur 'nen Linienzug durch die Punkte erstellen. Später misst du den Abstand von der Linie, der du am nächsten bist...
Bye, TGGC
Blue Cobold
06.07.2005, 08:34
Jo klar. Aber warum einfach, wenn's auch komplex geht? :P
Und er wollte nunmal Flächen haben.
@DanDanger
Danke, der Link dürfte wohl zur Lösung des 2. Problems beitragen(ist ein Punkt in einer bestimmten Fläche...).
Jetzt muss ich nur noch meine eingerostetetn mathematischen Kenntnisse wieder auf Vordeman bringen :cool:
Die Rechtecke muss ich aus folgendem Grund festlegen: wenn ich auf einer Strecke von z.B. 100m 10x messe und das Ganze 10x wiederhole, bekomme ich 100 verschiedene Punkte. Das man 2x exakt den selben Punkt trifft ist nahezu unmöglich(wie Blue Cobold schon sagte) auf Grund der relativen Ungenauigkeit des GPS. Die Punkte liegen ja auch nicht alle auf einer Linie, deshalb müsste eben eine gewisse Toleranz zu den äusserst rechten und linken Punkten hinzugefügt werden.
Wenn ich nun mehrere solcher Teilstrecken hintereinander habe besteht natürlich auch die Möglichkeit, dass auf Grund der Messungenauigkeit ein Punkt schon in Teilstrecke B liegt, obwohl man gerade noch in Teilstrecke A ist... Das wäre nicht ganz so schlimm! Es muss nicht zu 100% stimmen, nur zu 99,5% :)
Ich versuche gerade die Ausführungen von Blue Cobold zu verstehen, vielleicht ist das ja schon ein Ansatz für das "Rechteck-Problem".
Aber warum einfach, wenn's auch komplex geht?Weils dann einfacher ist?
Blue Cobold
07.07.2005, 06:43
Hab' mich da etwas vertan, du musst natürlich die Vektoren von a-1 nach a und von a nach a+1 addieren und durch 2 teilen, sowie das gleiche mit den Punkten a, a+1 und a+2 ebenfalls. Das ergibt dann die ungefähren Richtungen. Die Senkrechten bleiben wie gehabt in a und a+1 hinzuaddiert und subtrahiert, damit du Vierecke herausbekommst. Wenn du ganz lieb bittest, mache ich das Ganze auch mal graphisch deutlich.
Wenns weiter nichts ist *gg*
*GANZ_lieb_bitt*
Ich wäre dir sehr verbunden :-)
Blue Cobold
07.07.2005, 10:24
K, ich setz mich nachher mal hin.
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.