Koordinate in Liste suchen

CptK

Bekanntes Mitglied
Hallo, ich habe eine Liste mit Koordinaten (x|y) und möchte darin gerne eine bestimmte Koordinate effizient suchen. Die Koordinaten sind sortiert (mehr oder weniger), sodass ich mir folgendes überlegt:
Code:
koordinate searchPosition(long, lat, v) { //v = Vergleichswert
    if(strecke[v].long == long && strecke[v].lat == lat) {
        return strecke[v];
    } else if(strecke[v].long > long && strecke[v].lat > lat) {
        return searchPosition(long, lat, v/2);
    } else if(strecke[v].long < long && strecke[v].lat < lat) {
        return searchPosition(long, lat, v + v/2)
    }
}
Jetzt ist das aber nicht vollständig, weil es auch sein kann, dass long kleiner und lat größer (oder anders herum) ist, weil es sich hierbei um Positionen von Bahnhöfen handelt und man dort ja nicht immer durch exakt einen Punkt fährt (es gibt ja Beispielsweise verschiedene Gleise) und es kann auch sein, dass ein Punkt nicht exakt so in der liste vorhanden ist. Wie würde ich diese Methode vervollständigen?
 

httpdigest

Top Contributor
Wenn es `n` eindeutige Bahnhöfe gibt, dann würde ich diese doch nicht durch irgendeine Geokoordinate mit beliebigen geografischen Ausmaßen bzw. Unschärfe repräsentieren.... sondern mit einer eindeutigen Id/Identität.
 

CptK

Bekanntes Mitglied
Ja das ist schon richtig, der Punkt ist, dass mir diese Koordinaten von der Bahn zur Verfügung gestellt wurden. Aber mal angenommen, ich nehme so eine ID und ermittle die Koordinaten selbst, dann hätte ein Bahnhof ja im einfachsten Fall vier Eckpunkte. Wie würde ich hier am besten suchen ob und wenn ja in welchem Bahnhof man sich gerade befindet?
 

abc66

Top Contributor
Also die Entfernung zweier (lat lon) lässt sich mit einer Formel in O(1) berechnen... Ich sehe keinen Grund für eine extravagante Datenstruktur :D
 

abc66

Top Contributor
Also bei antriebslosen, ungelenkten Geschossen muss bei weitreichenden Bahnen (außerhalb des direkten Feuers und mit hoher Rasanz):
[Bei weitreichenden Bahnen muss] der Einfluss der Erdkrümmung und der Erddrehung in die Berechnung einbezogen werden.
Siehe hier: https://de.wikipedia.org/wiki/Außenballistik#Einfluss_auf_Geschossbahnen

So sollte die Erdkrümmung doch auch bei Bahnhöfen miteinbezogen werden...

Wer kennt es nicht aus Filmen? :D Als Kind wollte ich immer Scharfschütze werden, daraus wurd nix. :cool:
 

mihe7

Top Contributor
Hier geht es doch nur um eine Zuordnung: er will für einen Punkt wissen, bei welchem Bahnhof sich dieser befindet. Der Punkt wird also eine gewisse Nähe zum Bahnhof haben, zumindest wird es keine Unsicherheiten aufgrund weniger Meter Abweichung geben.
 

abc66

Top Contributor
Na ja, dann soll sie oder er in searchPosition mit lat und lon alle Bahnhöfe durchgehen und jeweils die Entfernung bestimmen. Die geringste Entfernung ist dann wahrscheinlich der gesuchte Bahnhof.
 

mihe7

Top Contributor
Wenn die Suche einmalig wäre, wovon ich nicht ausgehe, wäre das auch die beste Lösung. Besser als linear wird's bei einem mal nicht.
 

CptK

Bekanntes Mitglied
Also passt auf, das ganze ist mir erstmal zu kompliziert, weshalb ich mich dazu entschieden habe, das Ganze annäherungsweise als Rechteck zu gestalten:
Rechteck.png
Ich habe die Koordinaten A und B durch die ein Rechteck gebildet wird und den Punkt P, der überprüft werden soll.
Dann gilt doch:
A.long <= P.long
A.lat >= P.lat
B.long <= P.long
B.lat <= P.lat

Im code also:
Code:
 if(b.A.long <= P.long && b.A.lat >= P.lat && b.B.long >= P.long && b.B.lat <= P.lat)

Jetzt habe ich Beispielsweise den Bahnhof:
Code:
A: {
    long: 8.540188,
    lat: 50.103118
},
B: {
    long: 8.545312,
    lat: 50.102494
}
und den Punkt
"lat":50.102439994129544,"long":8.542163271369174
Dieser liegt eigentlich im Bahnhof, meine if-Abfrage sagt aber, dass er außerhalb liegt und ich finde den Denkfehler einfach nicht
 

CptK

Bekanntes Mitglied
Habs schon verbessert, das muss 50 sein, hatte das im Code nur mal geändert um zu sehen, was der bei 49 macht
 

CptK

Bekanntes Mitglied
Ja ja, tut mir leid, habe beim Koordinaten messen nicht bedacht, dass mein Rechteck schräg liegt, danke trotzdem!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Koordinate mit meisten Überlappungen in 3D-Raum finden Java Basics - Anfänger-Themen 9
J Y-Koordinate von GUI-Objekt bestimmen Java Basics - Anfänger-Themen 2
J Die Y Koordinate von einer anderen Klasse auch verändern Java Basics - Anfänger-Themen 1
P Punkte anhand 3. Koordinate vergleichen Java Basics - Anfänger-Themen 3
H Koordinate in Zahlenwert umwandeln Java Basics - Anfänger-Themen 3
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
M Verkettete Liste Java Basics - Anfänger-Themen 1
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
K Warum ist die binäre Suche bei der verketteten Liste nicht so effektiv? Java Basics - Anfänger-Themen 3
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
thor_norsk Verkette Liste Java Basics - Anfänger-Themen 27
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B GUI extension mit einer Liste verbinden Java Basics - Anfänger-Themen 1
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
M Java Liste streamen Java Basics - Anfänger-Themen 10
AmsananKING Aussortierung einer Liste Java Basics - Anfänger-Themen 8
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
S Kann nicht auf die Liste zugreifen mit der Methode!? Java Basics - Anfänger-Themen 3
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
Gaudimagspam Linked Liste Java Basics - Anfänger-Themen 4
Z Liste umkehren Java Basics - Anfänger-Themen 1
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
P Verschachtelte Array Liste Java Basics - Anfänger-Themen 2
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
P Performance Array und Liste Java Basics - Anfänger-Themen 13
M QuickSort und Liste Java Basics - Anfänger-Themen 6
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
M Array liste Verdrehen Java Basics - Anfänger-Themen 8
A Verkettete Liste Java Basics - Anfänger-Themen 2
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
B Liste sortieren? Java Basics - Anfänger-Themen 4
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
O ADT Liste z. B. Java Basics - Anfänger-Themen 15
B sortierte Liste Java Basics - Anfänger-Themen 4
O Knoten und Liste verarbeitung Java Basics - Anfänger-Themen 20
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Einträge aus Tupeln nach Regeln in Liste speichern Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben