Vorwort Die Projektanforderung besteht darin, festzustellen, ob sich der aktuelle Standort des Benutzers innerhalb eines bestimmten geografischen Standortbereichs befindet. Nur wenn die Standortbeschränkungen erfüllt sind, kann der Benutzer einchecken. Der Standortbereich besteht aus einem oder mehreren unregelmäßigen Polygonen. Bestimmen Sie wie in der folgenden Abbildung gezeigt, ob sich der Benutzer an der Tsinghua-Universität oder der Peking-Universität befindet. Holen Sie sich die Koordinaten des Grafikbereichs Da das Frontend des Projekts wx.getLocation des WeChat-Applets verwendet, um den geografischen Standort abzurufen, verwendet der Hintergrundauswahlbereich den geografischen Standortdienst von Tencent Maps, um die Konsistenz der Koordinaten sicherzustellen. Unter Anwendungstools -> Geometrische Figuren zeichnen werden Punkte, Linien, Polygone und Kreise zur einfachen Auswahl bereitgestellt. Siehe hier. Ändern Sie das offizielle Beispiel leicht, um die ausgewählten Standortkoordinaten zu erhalten. Speicherort Nachdem Sie die Koordinatenposition ermittelt haben, stellt sich als nächster Schritt die Frage: Wie speichert man sie? Das Open Geospatial Consortium (OGC) ist eine internationale Allianz aus mehr als 250 Unternehmen, Institutionen und Universitäten, die sich mit der Entwicklung öffentlich verfügbarer räumlicher Lösungen befassen, die in einer breiten Palette von Anwendungen zur Verwaltung räumlicher Daten eingesetzt werden können. OGC hat den OpenGIS®-Implementierungsstandard für geografische Informationen veröffentlicht, der auf der OGC-Website unter http://www.opengeospatial.org/standards/sfs verfügbar ist. Um der OGC-Spezifikation zu entsprechen, implementiert MySQL räumliche Erweiterungen als Teilmenge von SQL mit der Umgebung „Geometry Types“ und stellt die Funktionen zum Generieren, Speichern und Analysieren von Räumen bereit. Kurz gesagt: MySQL kann unsere Anforderungen erfüllen. Zurück zum Projekt: Wir haben POLYGON verwendet. Die Anweisung zur Tabellenerstellung lautet wie folgt: CREATE TABLE `Polygon` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `Polygon` Polygon NICHT NULL, Primärschlüssel (`id`), RÄUMLICHER SCHLÜSSEL `d` (`Polygon`) ) STANDARD-ZEICHENSATZ=utf8; Einfügen von Daten MySQL unterstützt die Konvertierung der Formate Well-Known Text (WKT) und Well-Known Binary (WKB) in Objekttypen zur Speicherung. Wir verwenden das WKT-Format, das einfacher zu verstehen ist. Wer sich für WKB interessiert, kann hier nachschauen. Die Insert-Anweisung lautet wie folgt: INSERT INTO `polygon` VALUES ('1', 'Tsinghua University', GeomFromText('POLYGON(( 40.01169924229143 116.31565081888039,39.99304082299905 116.31616541796757,39.99343506780591 116.33297565023167,40.00237067000859 116.33743550702275,40.01340715321479 116.33057418815224,40.01169924229143 116.31565081888039))')); INSERT INTO `polygon` VALUES ('2', 'Peking University', GeomFromText('POLYGON((39.99711457525893 116.30450117461078,39.98673259872773 116.30535884106575,39.98673259872773 116.31702308311287,39.99963848242885 116.31598375134854,39.99711457525893 116.30450117461078))')); Es ist zu beachten, dass die Punkte des von Tencent Maps zurückgegebenen Polygons nicht geschlossen sind und die Polygonfunktion erfordert, dass der erste und der letzte Punkt identisch sind, um zu bestimmen, ob das Polygon geschlossen ist. Wenn das Polygon nicht geschlossen ist, ist das zurückgegebene Ergebnis NULL und die Einfügeanweisung schlägt fehl. Eine Geometrie ist syntaktisch wohlgeformt, wenn sie Bedingungen wie in dieser (nicht erschöpfenden) Liste erfüllt:
Abfrageurteil WÄHLEN SIE * AUS Polygon, WO MBRInnerhalb (ST_GeomFromText('POINT(39.991333490218544 116.30964748487895)'), Polygon); # SELECT * FROM Polygon WHERE in der Peking-Universität MBRInnerhalb (ST_GeomFromText('POINT(39.988967560246685 116.3286905102832)'), Polygon); # Nicht an der Peking-Universität Aufmerksame Schüler haben vielleicht bemerkt, dass die Abfrageanweisung hier eine Funktion verwendet. Wenn in früheren SQL-Anweisungen eine Funktion auf ein Abfragefeld angewendet wurde, führte dies unweigerlich zu einem Indexfehler und einem vollständigen Tabellenscan. Bei räumlichen Daten ist dies jedoch nicht der Fall. Schauen Sie sich zunächst die EXPLAIN-Anweisung und die Ergebnisse an: Es ist ersichtlich, dass MySQL-Raumdaten auch indiziert werden können, und das verwendete Schlüsselwort ist SPATIAL Die Verwendung ist wie folgt: TABELLE ERSTELLEN geom (g GEOMETRY NICHT NULL); ERSTELLEN SIE RÄUMLICHEN INDEX g AUF geom (g); Häufig verwendete räumliche Berechnungsfunktionen 1. Bestimmen Sie den Abstand zwischen zwei Punkten ST_Distance(g1, g2) gibt den Abstand zwischen g1 und g2 zurück. Wenn eines der Argumente NULL oder eine leere Geometrie ist, ist der Rückgabewert NULL. 2. Ist Grafik 1 vollständig in Grafik 2 enthalten? ST_Contains(g1, g2) Gibt 1 oder 0 zurück, um anzugeben, ob g1 g2 vollständig enthält. Sie können auch ST_Within(g2,g1) verwenden, um denselben Effekt zu erzielen. 3. Keine Kreuzung ST_Disjoint(g1, g2) Gibt 1 oder 0 zurück, um anzugeben, ob g1 räumlich disjunkt von g2 ist (es nicht schneidet). 4. Die Situation der grafischen Kreuzung ist komplizierter, einschließlich Überlappung, externer Kreuzung usw. Sie können die Details hier sehen Zusammenfassen Dieser Artikel verwendet den integrierten Polygon-Datentyp von MySQL, um räumliche Daten über eine Check-in-Anforderung für einen geografischen Standort zu speichern. Die Funktion ST_Contains(g1, g2) wird verwendet, um den im Hintergrund voreingestellten geografischen Bereich und den vom Front-End abgerufenen geografischen Standort des Benutzers zu ersetzen und so zu bestimmen, ob sich der Benutzer innerhalb des Check-in-Bereichs befindet. Dies bedeutet auch, dass MySQL bei der Verwendung von Funktionen als Abfragefelder weiterhin Indizes verwenden kann und schließlich einige andere räumliche Verarbeitungsfunktionen erweitert. Dies ist das Ende dieses Artikels über die Verwendung von MySQL-Raumfunktionen zur Implementierung von Standort-Punch-In. Weitere relevante Inhalte zu MySQL-Raumfunktionen und Standort-Punch-In finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Drei häufige Verwendungen von OpenLayers6-Karten-Overlays (Markierungstext im Popup-Fenster)
>>: Verwendung des Linux-Befehls chkconfig
1. Docker installieren yum installiere Docker #St...
In diesem Artikel wird der spezifische Code von j...
Durch die kurze Einführung in den beiden vorherig...
1 Einführung in HTML 1.1 Erste Erfahrungen mit Co...
1. Im Web unterstützte Bildformate: GIF: kann 256...
1. Schauen Sie sich zunächst die Anforderungskonf...
1. MySQLs eigenes Stresstest-Tool – Mysqlslap mys...
Inhaltsverzeichnis MySQL Shell import_table Daten...
Vorwort Seit der offiziellen Einführung von vue3....
Hintergrund Wenn Sie auf manchen Webseiten von Ei...
Socat muss vor der Installation von rabbitmq inst...
Im Entwicklungsprozess eines Vue-Projekts konfigu...
Dieser Artikel zeigt anhand eines Beispiels, wie ...
Detaillierte Erklärung des Linux-Befehls vi Der v...
Inhaltsverzeichnis 1. Einleitung 2. Umschalten 1....