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
beschreiben Beim Aufruf dieser Schnittstelle müss...
In diesem Artikel wird der spezifische Code für J...
Inhaltsverzeichnis Vorwort 1. DDL 1.1 Datenbankop...
In diesem Artikel finden Sie das Tutorial zur Ins...
Die erste Lösung besteht darin, das Bild in ein ö...
1. Ändern Sie die Firewall-Konfigurationsdatei # ...
Das Ändern oder Löschen einer Datenbank kann zu D...
Vorwort Als ich kürzlich an einem Projekt arbeite...
Bedürfnisse entdecken Wenn nur ein Teil eines Ber...
Inhaltsverzeichnis Sequenz 1. Zentralisiertes Rou...
MySQL DDL-Anweisungen Was ist DDL, DML. DDL ist e...
Was ist ein Dateisystem Wir wissen, dass Speicher...
Einführung in HTML HyperText-Auszeichnungssprache...
Inhaltsverzeichnis Vorwort 1. Art von 2. Instanz ...
In Fortsetzung des vorherigen Artikels erstellen ...