Heim  >  Artikel  >  Datenbank  >  Beispiele für die MySQL-Suche nach Daten im Umkreis von N Kilometern

Beispiele für die MySQL-Suche nach Daten im Umkreis von N Kilometern

jacklove
jackloveOriginal
2018-06-08 23:16:042147Durchsuche

Suchen Sie basierend auf dem Pi-Verhältnis, dem Erdradiuskoeffizienten sowie dem Längen- und Breitengrad des Suchpunkts in der Datentabelle nach Daten im Umkreis von N Kilometern um den Suchpunkt.

1. Erstellen Sie eine Testtabelle

CREATE TABLE `location` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `longitude` decimal(13,10) NOT NULL, `latitude` decimal(13,10) NOT NULL, PRIMARY KEY (`id`), KEY `long_lat_index` (`longitude`,`latitude`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. Geben Sie Testdaten innerhalb von 1 km ein

Suchpunktkoordinaten: Times Square

113.323568, 23.146436

6370.996

Kilometer 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)
Abstand = RArccos(C)*Pi180


Gemäß der Berechnungsformel lautet die Abfrageanweisung wie folgt:

insert into location(name,longitude,latitude) values
('广州东站',113.332264,23.156206),
('林和西',113.330611,23.147234),
('天平架',113.328095,23.165376);mysql> select * from `location`;
+----+--------------+----------------+---------------+| id | name         | longitude      | latitude      |
+----+--------------+----------------+---------------+|  1 | 广州东站      | 113.3322640000 | 23.1562060000 |
|  2 | 林和西        | 113.3306110000 | 23.1472340000 ||  3 | 天平架        | 113.3280950000 | 23.1653760000 |
+----+--------------+----------------+---------------+

Führen Sie die Abfrage aus:

select * from `location` where (
acos(sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + cos(([#latitude#]*3.1415)/180) * cos((latitude*3.1415)/180) * cos(([#longitude#]*3.1415)/180 - (longitude*3.1415)/180))*6370.996)<=1;
In diesem Artikel wird das Beispiel der MySQL-Suche nach Daten im Umkreis von N Kilometern erläutert. Weitere Informationen zu diesem Thema finden Sie auf der chinesischen PHP-Website.


Verwandte Empfehlungen:

MySQL-Methode zur automatischen Wiederverbindung nach Verbindungsunterbrechung

php implementiert HTML-Entitätsnummerierung und Nicht-ASCII Klasse zur gegenseitigen Konvertierung von Zeichenfolgen


php erstellt eine eindeutige Zahlenklasse basierend auf der automatisch inkrementierten ID

Das obige ist der detaillierte Inhalt vonBeispiele für die MySQL-Suche nach Daten im Umkreis von N Kilometern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn