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
Vorwort Wir alle wissen, dass unter Linux „alles ...
Die erste Webseite, die ich entworfen habe, sieht...
Das Anwendungsszenario ist: Die Iframe-Seite hat k...
Dieser Artikel beschreibt die Linux-Dateiverwaltu...
Inhaltsverzeichnis Union-Abfrage 1. Fragen Sie di...
Eine Vektorwelle <svg viewBox="0 0 560 20...
Inhaltsverzeichnis 1. Steuern Sie die Anzeige und...
Problem: Bei Verwendung von JDBC zur Verbindung m...
1. golang:neuestes Basis-Image mkdir gotest Berüh...
Heute Wählen Sie * aus Tabellenname, wobei to_day...
Problembeschreibung Auf mehreren Rechnern wurden ...
Haftungsausschluss: Mit dieser Methode zum Zurück...
Nach den Änderungen: innodb_buffer_pool_size=576M...
Vorwort Bei der allgemeinen Entwicklung werden Bi...
<br />Im vorherigen Artikel habe ich die Sch...