Ich bin neu in diesem und würde mich freuen, wenn jemand Links oder Keywords zu Google bereitstellen kann.
Ich werde Zehntausende von Ereignissen mit Geodatenwerten wie Punkten, Linien und Polygonen haben und brauche einen schnellen Treffer-Testalgorithmus, der alle Orte findet, die einen gegebenen Punkt/Linie/Polygon mit einer gegebenen Approximation überlappen. Gleichzeitig muss ich diese Ereignisse nach verschiedenen Eigenschaften filtern, sodass die Abfrage sowohl Geodaten als auch benutzerdefinierte Felder filtern sollte. Zum Beispiel würde ich gerne wissen, welche Städte, Flüsse oder Bergregionen sich in N Kilometern von einem bestimmten Ort befinden. Brauchen Sie Daten im SQL-Server beibehalten, kann aber auf eine andere Art und Weise denken. Was ist ein gemeinsamer Ansatz für solche Aufgaben?Optimieren Geolocation Suche
0
A
Antwort
0
Der SQL-Weg scheint ziemlich verbreitet zu sein und nicht so schwer zu verwenden.
Sobald Ihre Daten gespeichert sind, können Sie von Interesse in relativen Abstand mit Funktion extrahieren wie:
SELECT tblcity.city, tblcity.latitude, tblcity.longitude,
truncate((degrees(acos(sin(radians(tblcity.latitude))
* sin(radians(45.266708))
+ cos(radians(tblcity.latitude))
* cos(radians(45.266708))
* cos(radians(-73.616257 - tblcity.longitude))))
* 69.09*1.6),1) as distance
FROM tblcity HAVING distance < 10 ORDER BY distance desc
Entnommen https://stackoverflow.com/a/2695446/6660122
Edit: Wie Sie bereits SQL kennen und brauchen zusätzliche functionnality dass SQL kann anbieten, ich würde definitiv diesen Weg gehen!
Ich weiß, wie man es in SQL programmiert, aber wird dies schnell (Millisekunden) auf Dutzende tausend Datensätze? – LINQ2Vodka
Nun, ich hängt von vielen Faktoren ab, aber 10000 Zeilen sind keine große Herausforderung. Ich glaube, es wird für viele gemeinsame Projekte schnell genug sein. – technico
Ok, ich werde versuchen, noch einmal auf irgendwelche Leistungstests zu googlen ... – LINQ2Vodka