ホームページ >データベース >mysql チュートリアル >SQL Server の地理データ型は、緯度/経度の点間の距離計算をどのように改善できるでしょうか?

SQL Server の地理データ型は、緯度/経度の点間の距離計算をどのように改善できるでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-12 13:12:43476ブラウズ

How Can SQL Server's Geography Data Type Improve Distance Calculations Between Latitude/Longitude Points?

SQL Server での緯度/経度の距離計算の最適化

この記事では、緯度/経度点間の距離を計算するための改良された方法を検討し、従来のアプローチによる精度の問題に対処します。

既存のメソッドの制限

現在の距離計算はハバーサイン公式に依存することが多く、機能する一方で精度に限界がある可能性があります。

SQL Server の地理データ型の利用

SQL Server 2008 で導入された geography データ型は、優れたソリューションを提供します。 この特殊なデータ型は地理データと計算用に最適化されており、次のような大きな利点があります。

  • 精度の向上: geography は洗練されたアルゴリズムを使用し、より正確な距離計算を実現します。
  • 簡略化されたコード: STDistance メソッドは 2 つの geography インスタンスを直接比較し、Haversine 式のような複雑な式の必要性を排除します。

geography

を使用した例

以下は、geography データ型を使用してロンドンとエディンバラの間の距離を計算する方法を示しています。

<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)'
DECLARE @target geography = 'POINT(-3 56)'

SELECT @source.STDistance(@target)</code>

これにより、距離は約 538 キロメートルになります。

geography と既存のデータ構造の統合

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>

geography データ型と STDistance メソッドを使用すると、地理的距離計算の精度の向上とコードの合理化の両方が実現します。

以上がSQL Server の地理データ型は、緯度/経度の点間の距離計算をどのように改善できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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