Ein einfaches Beispiel für die MySQL-Suche nach Daten im Umkreis von N Kilometern

Ein einfaches Beispiel für die MySQL-Suche nach Daten im Umkreis von N Kilometern

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

Artikel empfehlen

So weisen Sie einer Instanz in Linux eine öffentliche IP-Adresse zu

beschreiben Beim Aufruf dieser Schnittstelle müss...

JavaScript imitiert den Jingdong-Karusselleffekt

In diesem Artikel wird der spezifische Code für J...

Eine kurze Diskussion zu DDL und DML in MySQL

Inhaltsverzeichnis Vorwort 1. DDL 1.1 Datenbankop...

VMWare Linux MySQL 5.7.13 Installations- und Konfigurationstutorial

In diesem Artikel finden Sie das Tutorial zur Ins...

Beispielanalyse zum Exportieren, Importieren und Kopieren von Docker-Images

Die erste Lösung besteht darin, das Bild in ein ö...

So erlauben Sie den Remotezugriff auf offene Ports in Linux

1. Ändern Sie die Firewall-Konfigurationsdatei # ...

Lösung für Front-End-Browser-Schriftgrößen von weniger als 12 Pixel

Vorwort Als ich kürzlich an einem Projekt arbeite...

Implementierung der automatischen Konstruktionsweiterleitung von React

Inhaltsverzeichnis Sequenz 1. Zentralisiertes Rou...

Grundlegende Anweisungen der MySQL-Datendefinitionssprache DDL

MySQL DDL-Anweisungen Was ist DDL, DML. DDL ist e...

Detaillierte Erklärung zum MySQL-Dateispeicher

Was ist ein Dateisystem Wir wissen, dass Speicher...

Umfassendes Verständnis der HTML-Grundstruktur

Einführung in HTML HyperText-Auszeichnungssprache...

Vier Methoden zur Verwendung von JS zur Bestimmung von Datentypen

Inhaltsverzeichnis Vorwort 1. Art von 2. Instanz ...

Detaillierte Analyse des Linux-NFS-Mechanismus anhand von Fällen

In Fortsetzung des vorherigen Artikels erstellen ...