Gemäß dem Koeffizienten von Pi und dem Radius der Erde sowie dem Längen- und Breitengrad des Suchpunkts beträgt die Entfernung zwischen dem Suchpunkt und der Suchdatentabelle N Kilometer. 1. Erstellen Sie eine Testtabelle CREATE TABLE `Standort` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NICHT NULL, `Längengrad` Dezimalzahl (13,10) NICHT NULL, `Breitengrad` Dezimalzahl(13,10) NICHT NULL, Primärschlüssel (`id`), SCHLÜSSEL `long_lat_index` (`Längengrad`,`Breitengrad`) )ENGINE=InnoDB STANDARD-CHARSET=utf8; 2. Testdaten einfügen in Standortwerte (Name, Längengrad, Breitengrad) einfügen ('Guangzhou Ostbahnhof',113.332264,23.156206), ('Lin Hexi',113.330611,23.147234), ('Waage',113.328095,23.165376); mysql> wählen Sie * aus „Standort“; +----+--------------+----------------+---------------+ | ID | Name | Längengrad | Breitengrad | +----+--------------+----------------+---------------+ | 1 | Ostbahnhof Guangzhou | 113.3322640000 | 23.1562060000 | | 1 | Linhexi | 113,3306110000 | 23,1472340000 | | 3 | Waagerahmen | 113,3280950000 | 23,1653760000 | +----+--------------+----------------+---------------+ 3. Suche nach Daten im Umkreis von 1 km Suchpunktkoordinaten: Times Square 113.323568, 23.146436 6370,996 km ist der Radius der Erde Formel zur Berechnung des Koordinatenabstands zwischen zwei Punkten auf einer Kugel C = sin(MLatA)sin(MLatB)cos(MLonA-MLonB) + cos(MLatA)cos(MLatB) Entfernung = RArccos(C)*Pi180 Gemäß der Berechnungsformel lautet die Abfrageanweisung wie folgt: Wählen Sie * von „Standort“, wobei ( acos( sin(([#Breitengrad#]*3,1415)/180) * sin((Breitengrad*3,1415)/180) + cos(([#Breitengrad#]*3,1415)/180) * cos((Breitengrad*3,1415)/180) * cos(([#Längengrad#]*3,1415)/180 - (Längengrad*3,1415)/180) )*6370,996 )<=1; Führen Sie die Abfrage aus: mysql> select * from `location` wobei ( -> acos( -> sin((23.146436*3.1415)/180) * sin((Breitengrad*3.1415)/180) + -> cos((23,146436*3,1415)/180) * cos((Breitengrad*3,1415)/180) * cos((113,323568*3,1415)/180 - (Längengrad*3,1415)/180) -> )*6370.996 -> )<=1; +----+-----------+----------------+---------------+ | ID | Name | Längengrad | Breitengrad | +----+-----------+----------------+---------------+ | 1 | Linhexi | 113,3306110000 | 23,1472340000 | +----+-----------+----------------+---------------+ Das obige einfache Beispiel einer MySQL-Datensuche im Umkreis von N Kilometern ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. |
<<: Drei Möglichkeiten zum Konfigurieren virtueller Nginx-Hosts (basierend auf Domänennamen)
>>: vue verwendet Ele.me UI, um die Filterfunktion von Teambition zu imitieren
Phänomen Es gibt mehrere verschachtelte Flex-Stru...
Die Vorteile dieser Lösung liegen in der Einfachh...
[LeetCode] 183.Kunden, die nie bestellen Angenomm...
Was ist Vuex vuex: ist ein speziell für vue.js en...
1. Installation Tipp: Derzeit gibt es kein offizi...
<div Klasse="Seitenleiste"> <d...
Inhaltsverzeichnis 1. Integrieren Sie Ant Design ...
Installieren Sie die entpackte Version der MySql-...
Vorwort NFS (Network File System) bedeutet Netzwe...
Dieser Artikel stellt hauptsächlich ein Beispiel ...
Einige im Projekt verwendete Sonderzeichen und Sy...
1 Schritte zur Systeminstallation Betriebssystemv...
Wenn wir CSS-Webseitenlayouts erstellen, wissen wi...
Heute ist mir plötzlich eingefallen, dass es cool ...
1. Allgemeine Verwendung: (1) Mit % verwenden % s...