So verwenden Sie den Geometrietyp von MySQL, um Längen- und Breitengrad-Distanzprobleme zu bewältigen

So verwenden Sie den Geometrietyp von MySQL, um Längen- und Breitengrad-Distanzprobleme zu bewältigen

Erstellen einer Tabelle

CREATE TABLE `map` (
 `id` int(11) NICHT NULL,
 `Adresse` varchar(255) NICHT NULL STANDARD '',
 `Standort`-Geometrie NICHT NULL,
 Primärschlüssel (`id`),
 RÄUMLICHER SCHLÜSSEL `idx_location` (`Standort`)
)

einfügen

INSERT INTO Karte (ID, Adresse, Standort) VALUES (1, „irgendwo“, ST_GeomFromText(„POINT(121.366961 31.190049)“));

Beachten Sie, dass Sie die Funktion ST_GeomFromText verwenden müssen und POINT() Folgendes enthält: Längengrad + Raum + Breitengrad

Abfrage

1. Überprüfen Sie den Breiten- und Längengrad

SELECT Adresse, ST_AsText(Standort) AS Standort AUS Karte;

2. Berechnen Sie den Abstand zwischen zwei Punkten

Wählen Sie ST_Distance_Sphere (Punkt (121,590347, 31,388094), Standort) als Entfernung von der Karte aus.

Das berechnete Ergebnis wird in Metern angegeben.

Beachten Sie, dass Breitengrad und Längengrad in POINT() jetzt durch Kommas getrennt sind.

3. Suche nach Orten im Umkreis von 1000 m und sortiere sie von weit nach nah

Kopieren Sie den Code wie folgt:
SELECT ID, Adresse, ST_Distance_Sphere(POINT(121.590347, 31.388094),Standort) AS entfernt FROM Karte WHERE ST_Distance_Sphere(POINT(121.590347, 31.388094),Standort) < 1000 ORDER BY entfernt;

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Mybatis-Lernpfad: MySQL-Batch-Methode zum Hinzufügen von Daten
  • Detaillierte Erklärung zur Implementierung des sekundären Caches mit MySQL und Redis
  • Ausführliche Erläuterung des MySQL-Gemeinschaftsindex und des eindeutigen Index
  • So zeigen Sie das MySQL-Binlog (Binärprotokoll) an
  • Docker erstellt MySQL-Erklärung
  • PHP date()-Format MySQL-Einfügemethode für Datum und Uhrzeit
  • So lösen Sie das SQL-Injection-Problem mit pymysql
  • Schritte zum Exportieren der Felder und zugehörigen Attribute von MySQL-Tabellen
  • Lösung für das Problem des MySQL-Threads beim Öffnen von Tabellen
  • MySQL-Limit-Leistungsanalyse und -Optimierung

<<:  Lösen Sie das domänenübergreifende Problem von Get- und Post-Anfragen von vue $http

>>:  Detaillierte Erklärung, wie Tomcat asynchrone Servlets implementiert

Artikel empfehlen

MySQL 5.6 Installationsschritte mit Bildern und Text

MySQL ist ein Open-Source-Verwaltungssystem für k...

So implementieren Sie Zeilenumbrüche im Texteingabebereich von Textarea

Wenn Sie den Text im Textarea-Eingabebereich umbre...

CentOS 6 verwendet Docker zum Bereitstellen eines Zookeeper-Betriebsbeispiels

Dieser Artikel beschreibt, wie man mit Docker Zoo...

Praktisches Beispiel einer virtuellen Vue-Liste

Inhaltsverzeichnis Vorwort Design erreichen Zusam...

Lösung für leere Seite nach Vue-Verpackung

1. Lösung für das Problem, dass die Seite leer is...

Installieren von MySQL 8.0.12 basierend auf Windows

Dieses Tutorial ist nur auf Windows-Systemen anwe...

Zusammenfassung der Methoden zum Einbinden von Dateiinhalten in HTML-Dateien

Im Forum fragen Internetnutzer oft: „Kann ich den...

Hallo – Erfahrungsaustausch zum Entwurf von Dialogfeldern

„Was ist los?“ Sofern Sie nicht an bestimmte Arten...

Vue.js implementiert Musikplayer

In diesem Artikel wird der spezifische Code von V...

vue-table implementiert das Hinzufügen und Löschen

In diesem Artikelbeispiel wird der spezifische Co...

Verwenden Sie js in html, um die lokale Systemzeit abzurufen

Code kopieren Der Code lautet wie folgt: <div ...