ホームページ > データベース > mysql チュートリアル > 座標を使用して半径 8 マイル以内の建物を見つけるには?

座標を使用して半径 8 マイル以内の建物を見つけるには?

DDD
リリース: 2025-01-09 11:37:43
オリジナル
727 人が閲覧しました

How to Find Buildings Within a 5-Mile Radius Using Coordinates?

座標を使用して半径 5 マイル以内の建物を見つける

このガイドでは、指定された座標から半径 5 マイル以内のすべての建物を効率的に取得する方法について詳しく説明します。

ステップ 1: データ ストレージを最適化する

ジオメトリまたは地理データ型を使用して建物の位置データを保存します。これにより、空間クエリのパフォーマンスが大幅に向上し、データ型変換の問題が防止されます。

ステップ 2: ST_DWithin または ST_Distance を使用する

2 つの関数により距離の計算が容易になります:

  1. ST_DWithin: この関数は、ジオメトリが指定された距離内にあるかどうかを効率的に判断します。 (-4.6314, 54.0887) から 8 マイル以内の建物を検索するには:

    <code class="language-sql">SELECT name, longitude, latitude
    FROM building
    WHERE ST_DWithin('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude), 8046.72);
    -- 8046.72 meters = 5 miles</code>
    ログイン後にコピー
  2. ST_Distance: この関数は距離をメートル単位で計算します。 distance * 0.000621371 を使用してメートルをマイルに変換します。 (-4.6314, 54.0887) から 8 マイル以内の建物の場合:

    <code class="language-sql">SELECT name, longitude, latitude,
    ST_Distance('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude)) * 0.000621371 AS distance_miles
    FROM building
    WHERE distance_miles <= 5;</code>
    ログイン後にコピー

ステップ 3: 重要な考慮事項

  • ST_MakePoint で経度、緯度の正しい順序を維持します。
  • ST_Distance の計算では空間インデックスがバイパスされます。 パフォーマンスのボトルネックを回避するには、SELECT 句で使用します。
  • Amazon Athena は、ST_Distance での距離計算に度を使用します。

以上が座標を使用して半径 8 マイル以内の建物を見つけるには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート