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

Aufbau einer Docker+K8S-Clusterumgebung und verteilte Anwendungsbereitstellung

1. Docker installieren yum installiere Docker #St...

Detaillierte Erklärung der Truncate-Verwendung in MySQL

Anleitung in diesem Artikel: Es gibt zwei Möglich...

Detaillierte Erläuterung des Ausführungsprozesses von MySQL-Abfrageanweisungen

Inhaltsverzeichnis 1. Kommunikationsmethode zwisc...

Wissen Sie, wie viele Verbindungen ein Linux-Server verarbeiten kann?

Vorwort Sehen wir uns zunächst an, wie eine TCP-V...

Detaillierte Erklärung des HTML-Seitenkopfcodebeispiels

Wissenspunkt 1: Legen Sie die Basis-URL der Webse...

Erste Schritte Tutorial für Anfänger ④: So binden Sie Unterverzeichnisse

Um zu verstehen, was das bedeutet, müssen wir zunä...

Einige wunderbare Verwendungsmöglichkeiten von URL-Objekten in JavaScript

Inhaltsverzeichnis Vorwort Parameter analysieren ...

So kennzeichnen Sie die Quelle und Herkunft von CSS3-Zitaten

Wegen der Epidemie werde ich zu Hause fast schimm...

Einfaches Teilen von Mysql-Backup-BAT-Skripten unter Windows

Vorwort Dieser Artikel stellt ein einfaches BAT-S...

Gängige Reparaturmethoden für die Trennung der MySQL Master-Slave-Replikation

Inhaltsverzeichnis 01 Problembeschreibung 02 Lösu...

Detaillierte Schritte zum Speichern von Emoji-Ausdrücken in MySQL

Verursacht durch: java.sql.SQLException: Falscher...

Code zur Implementierung eines einfachen Pfeilsymbols mit Div+CSS in HTML

Beim Webdesign verwenden wir Pfeile oft als Dekor...