ホームページ >データベース >mysql チュートリアル >重複するマーカー半径内のデータ ポイントを地理空間データベースから取得するにはどうすればよいですか?

重複するマーカー半径内のデータ ポイントを地理空間データベースから取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 09:48:27282ブラウズ

How to Retrieve Data Points Within Overlapping Marker Radii from a Geospatial Database?

データベースから重複するマーカー半径内の結果を取得

目的は、複数のマーカーの重複する半径内にあるデータ ポイントを取得することです。地理空間データベース。これを実現するには、円の方程式を使用して、点が指定された半径内にあるかどうかを判断する必要があります。

ユーザー B の位置を円の中心、ユーザー A の位置を円の周囲上の点と考えると、方程式は次のようになります。一貫性を保つためにキロメートルに変換された円の距離は次のように変換されます:

((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4      (=2^2)

ここで:

  • x と y はユーザー A の位置の緯度と経度を表します
  • x1 と y1 はユーザー B の位置の緯度と経度を表します
  • 111.12 は緯度と経度をキロメートルに変換します

この方程式を 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, 2)) <= 4

注: 精度を高めるには、(A.longitude - B.longitude)*111.12*cos(A.latitude) または (A.longitude - B.longitude)*111.12*cos(式の (A.longitude - B.longitude)*111.12 の代わりに B.latitude)。

以上が重複するマーカー半径内のデータ ポイントを地理空間データベースから取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。