SQL Server の 2 つの地理的ポイント間の正確な距離の計算
SQL Server では、多くの場合、緯度と経度の座標間の距離を計算する必要があります。 Haversine 式は一般的ですが、精度に限界があるため、より堅牢なソリューションが必要です。
geography
データ型の活用
SQL Server 2008 以降のバージョンでは、距離計算などの効率的かつ正確な空間データ処理に最適な geography
データ型を提供します。 次のコードはその使用法を示しています:
<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)'; DECLARE @target geography = 'POINT(-3 56)'; SELECT @source.STDistance(@target);</code>
これは 2 点間の距離 (キロメートル単位) を返します。 たとえば、上記は約 538 km を返します。 geography
型の広範な空間メソッドにより、SQL Server の地理データに対して推奨されるアプローチになります。
既存のデータ構造との統合
STDistance
メソッドの恩恵を受けながら、現在のデータ構造を維持することが可能です。 緯度と経度の値を geography
インスタンスに変換します:
<code class="language-sql">DECLARE @orig_lat DECIMAL(12, 9); DECLARE @orig_lng DECIMAL(12, 9); SET @orig_lat = 53.381538; SET @orig_lng = -1.463526; DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326); SELECT *, @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326)) AS distance FROM #orig dest;</code>
このアプローチにより、大規模なデータの再構築を行わずに正確な距離が計算されます。
以上がSQL Server で 2 つの緯度/経度点間の距離を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。