半径オーバーラップ内の結果をデータベースにクエリする
問題:
地理情報を含むデータベース内データの場合、指定した半径を持つ複数の円形マーカーと部分的に重なる結果を選択したいとします。既存の SQL クエリは、複数のマーカーと重複する結果を正確に識別できません。
解決策:
正確な結果を得るには、次の SQL ステートメントを使用できます:
<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>
説明:
このクエリは、円の方程式を使用して、(UserA からの) 指定された点が円の半径 (緯度とによって定義される) 内にあるかどうかを判断します。 UserB からの半径の経度)。次の手順が含まれます:
このクエリを使用すると、円が互いに接触している場合でも、複数の円形マーカーに重なる結果を正確に識別できます。
以上が指定された半径を持つ複数の円形マーカーに重なる結果をデータベースにクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。