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
1. Docker installieren yum installiere Docker #St...
Anleitung in diesem Artikel: Es gibt zwei Möglich...
Inhaltsverzeichnis Vorwort Unterrichtsgrundlagen ...
Inhaltsverzeichnis 1. Kommunikationsmethode zwisc...
Als ich heute ein kleines Programm schrieb, benut...
Vorwort Sehen wir uns zunächst an, wie eine TCP-V...
Wissenspunkt 1: Legen Sie die Basis-URL der Webse...
Um zu verstehen, was das bedeutet, müssen wir zunä...
Inhaltsverzeichnis Vorwort Parameter analysieren ...
Wegen der Epidemie werde ich zu Hause fast schimm...
Vorwort Dieser Artikel stellt ein einfaches BAT-S...
Inhaltsverzeichnis 01 Problembeschreibung 02 Lösu...
1. Wenn die Breite der angrenzenden schwebenden Eb...
Verursacht durch: java.sql.SQLException: Falscher...
Beim Webdesign verwenden wir Pfeile oft als Dekor...