ホームページ >データベース >mysql チュートリアル >SQL Server の地理データ型は、緯度/経度の点間の距離計算をどのように改善できるでしょうか?
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 サイトの他の関連記事を参照してください。