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

Verwenden von CSS3 zum Erstellen von Header-Animationseffekten

Die offizielle Website von Netease Kanyouxi (http...

Grundlegende Verwendung von UNION und UNION ALL in MySQL

In der Datenbank führen sowohl die Schlüsselwörte...

Vue verwendet Canvas-Handschrifteingabe, um Chinesisch zu erkennen

Effektbild: Vorwort: Kürzlich arbeitete ich an ei...

Ein Artikel zeigt Ihnen, wie Sie mit React ein Rezeptsystem implementieren

Inhaltsverzeichnis 1. Rezeptsammlung 1.1 Projekth...

Kapselungsmethode der Vue-Breadcrumbs-Komponente

Vue kapselt die Breadcrumb-Komponente zu Ihrer In...

Aufbau einer Zookeeper-Standalone-Umgebung und einer Clusterumgebung

1. Aufbau einer Einzelmaschinenumgebung# 1.1 Heru...

So sammeln Sie Nginx-Protokolle mit Filebeat

Mithilfe von Nginx-Protokollen lassen sich Benutz...

Detaillierte Ansicht versteckter Spalten in MySQL

Inhaltsverzeichnis 1. Primärschlüssel vorhanden 2...

Einfaches Anwendungsbeispiel für eine rekursive Vue-Komponente

Vorwort Ich glaube, dass viele Studenten bereits ...

Wann ist die Verwendung von dl, dt und dd sinnvoll?

dl: Definitionsliste Definitionsliste dt: Definiti...

Select unterstützt kein Doppelklick-DBClick-Ereignis

XML/HTML-CodeInhalt in die Zwischenablage kopiere...

Detaillierte Erklärung der Primärschlüssel und Transaktionen in MySQL

Inhaltsverzeichnis 1. Kommentare zu MySQL-Primärs...