Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie frage ich eine Datenbank nach Ergebnissen ab, die mehrere kreisförmige Markierungen mit bestimmten Radien überlappen?

Linda Hamilton
Freigeben: 2024-10-31 03:04:31
Original
445 Leute haben es durchsucht

How to Query a Database for Results Overlapping Multiple Circular Markers with Specified Radii?

Datenbank nach Ergebnissen innerhalb von Radiusüberlappungen abfragen

Problem:

In einer Datenbank mit geografischen Daten möchten Sie Ergebnisse auswählen, die mehrere kreisförmige Markierungen mit angegebenen Radien teilweise überlappen. Eine vorhandene SQL-Abfrage identifiziert Ergebnisse, die mehrere Markierungen überlappen, nicht genau.

Lösung:

Für präzise Ergebnisse kann die folgende SQL-Anweisung verwendet werden:

<code class="sql">SELECT A.user_id, A.radius_id, A.latitude, A.logitude
FROM UserA AS A, 
     (SELECT user_id, latitude, longitude 
       FROM UserB 
       WHERE user_id = 8) AS B
WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12*cos(A.latitude), 2)) <= 4</code>
Nach dem Login kopieren

Erklärung:

Diese Abfrage verwendet die Gleichung eines Kreises, um zu bestimmen, ob ein gegebener Punkt (von BenutzerA) in den Radius eines Kreises (definiert durch den Breitengrad und) fällt Längengrad eines Radius von BenutzerB). Die folgenden Schritte sind erforderlich:

  1. Breiten- und Längengrad in Kilometer umrechnen:Breiten- und Längengradunterschiede mit 111,12 multiplizieren, um in Kilometer umzurechnen.
  2. Berechnen Abstand mithilfe der Kreisgleichung: Berechnen Sie den Abstand zwischen dem Punkt und dem Mittelpunkt des Radius mithilfe der modifizierten Formel POW((A.latitude-B.latitude)*111.12, 2) POW((A.longitude - B. Längengrad)*111,12*cos(A.latitude), 2).
  3. Entfernung mit Radius vergleichen: Wenn die berechnete Entfernung kleiner oder gleich dem Radius im Quadrat ist, liegt der Punkt innerhalb der Radius.

Mit dieser Abfrage können Sie Ergebnisse genau identifizieren, die mehrere kreisförmige Markierungen überlappen, selbst wenn sich die Kreise berühren.

Das obige ist der detaillierte Inhalt vonWie frage ich eine Datenbank nach Ergebnissen ab, die mehrere kreisförmige Markierungen mit bestimmten Radien überlappen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!