ホームページ > データベース > mysql チュートリアル > SQL Server で 2 つの緯度/経度点間の距離を正確に計算するにはどうすればよいですか?

SQL Server で 2 つの緯度/経度点間の距離を正確に計算するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-12 13:16:42
オリジナル
299 人が閲覧しました

How Can I Accurately Calculate the Distance Between Two Latitude/Longitude Points in SQL Server?

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 サイトの他の関連記事を参照してください。

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