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

Die perfekte Lösung zum Hervorheben von Schlüsselwörtern in HTML

Bei der Arbeit an einem Projekt bin ich kürzlich ...

Ein mobiler adaptiver Webseiteneffekt löst das Problem der kleinen Anzeigeseite

Für die Arbeit muss ich einen adaptiven Webseitene...

XHTML-Tutorial für den Einstieg: Häufig verwendete XHTML-Tags

<br />Genau wie ein Artikel sollten unsere W...

Detaillierte Erklärung der Entwurfsmuster des JavaScript-Frameworks

Inhaltsverzeichnis mvc MVP mvv Die Quelle von Vue...

Unterschiede zwischen FLOW CHART und UI FLOW

Viele Konzepte im UI-Design mögen in der Formulie...

IIS und APACHE implementieren die HTTP-Umleitung auf HTTPS

IIS7 Laden Sie das HTTP Rewrite-Modul von der off...

js-Code, der den Button mit der Eingabetaste verknüpft

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