Lat und Longitude mit JSON Objekt vergleichen

  • Antworten:5
Bernd Roth
  • Forum-Beiträge: 98

31.03.2014, 16:16:28 via Website

Hallo Forum,
ich hätte eine Frage bzgl. dem Abgleich von Lat und Longitude mit 10000 Einträgen in einem JSON Objekt.

Lat und Longitude bekomme ich mittels GPS und müsste diese nun gegen das JSON Objekt abgleichen, jetzt habe ich aber das Problem, dass die Einträge im JSON Objekt natürlich nicht genau mit den GPS Koordinaten übereinstimmen müssen.

Jedoch will ich dannvon den Tausenden von Einträgen die Näheste finden.

Ich hab mir zwar überlegt die GPS Koordinaten vll. solange zu trimmen bis sie mit einem Eintrag im JSON Objekt übereinstimmen, aber das ist natürlich höchst ungenau und am Ende könnte es auch passieren, dass kein Eintrag mit meinen GPS Koordinaten übereinstimmt.

Als 2te Möglichkeit habe ich mir überlegt die Distanz zwischen meinen Koordinaten zu den Einträgen aus dem JSON Objekt zu berechnen, aber wenn man sehr viele Koordinaten bereits hat, könnte das ja auch länger dauern, oder?

Gibt es eine bessere Möglichkeit oder ist die 2te Möglichkeit schon relativ gut bzw. genau?

Danke Euch für jeden Input!

lG

Antworten
impjor
  • Forum-Beiträge: 1.793

31.03.2014, 16:24:45 via App

Ich denke Möglichkeit 2 ist die beste und einfachste, mit einem zusätzlichen Thread/AsyncTask (eventuell in Verbindung mit einem Service) auch kein Problem.
Zu dem sehr einfach zu programmieren:
for (Koordinate k : alleKoordinaten)
if (
Math.sqrt(
(lat1-lat2)+(long1-lon2)) < geringsteEntfernung)
....

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Bernd Roth
  • Forum-Beiträge: 98

31.03.2014, 16:30:11 via Website

Ok, genau so wollte ich es nämlich machen, habe aber gehofft, dass es vll. noch einen effizienteren Weg geben würde.
Aber so wie es scheint war ich doch nicht so schlecht unterwegs!

Danke Dir vielmals!

lG

Antworten
Alex Mahrt
  • Forum-Beiträge: 29

03.04.2014, 14:51:37 via Website

Eine Möglichkeit wäre es von einer externen Stelle berechnen zu lassen > z.B. MongoDB Geo. (Ist ein Datenbanksystem) (MongoDB kann dir exakt das bieten was du möchtest. Und es ist dabei sogar recht schnell!)

Link: MongoDB Spherical Geometry

Auf der Suche danach habe ich noch das hier gefunden:

https://developers.google.com/maps/documentation/android/utility/

Ganz unten "Calculate distance between two points" - das ganze machst du dann halt ein paar mal öfters und speicherst dir dann alle Ergebnisse weg und nimmst die mit der kürzesten Entfernung.


Liebe Grüße

Antworten
Bernd Roth
  • Forum-Beiträge: 98

03.04.2014, 15:13:21 via Website

Hallo,
danke Dir vielmals für Deine Hilfe und Mühe!

Ich habe auch noch ein paar Möglichkeiten gefunden:

1) Punkt-in-Polygon-Test nach Jordan
2) und mit Javas JSON Object kann man problemlos feststellen, wann der nächste Datensatz kommt.

Ich habe ja mehrere Punkte, die alle dann eigene Polygone ergeben.
Mittels der Punkt-in-Polygon-Test nach Jordan muss ich nicht gegen jeden einzelnen Datensatz mir eine Entfernung zusammenzurechnen.

Danke Dir vielmals!

lG

Alex Mahrt

Antworten
Alex Mahrt
  • Forum-Beiträge: 29

03.04.2014, 15:30:38 via Website

Hallo,
gerne, ich stand gerade vor dem selben Problem und habe es auch lösen können.

Vielen Dank, für den Tipp mit Punkt in Polygon Test nach Jordan, der hilft mir und anderen sicherlich auch weiter.


Grüße

Antworten