座標を使用して半径 5 マイル以内の建物を見つける
このガイドでは、指定された座標から半径 5 マイル以内のすべての建物を効率的に取得する方法について詳しく説明します。
ステップ 1: データ ストレージを最適化する
ジオメトリまたは地理データ型を使用して建物の位置データを保存します。これにより、空間クエリのパフォーマンスが大幅に向上し、データ型変換の問題が防止されます。
ステップ 2: ST_DWithin または ST_Distance を使用する
2 つの関数により距離の計算が容易になります:
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>
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: 重要な考慮事項
以上が座標を使用して半径 8 マイル以内の建物を見つけるには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。