sql >> データベース >  >> RDS >> Sqlserver

2点間の距離の計算(緯度、経度)

    SQL Server 2008を使用しているため、geographyがあります。 まさにこの種のデータ用に設計された利用可能なデータ型:

    DECLARE @source geography = 'POINT(0 51.5)'
    DECLARE @target geography = 'POINT(-3 56)'
    
    SELECT @source.STDistance(@target)
    

    与える

    ----------------------
    538404.100197555
    
    (1 row(s) affected)
    

    ロンドン(近く)からエジンバラ(近く)までは約538kmです。

    当然、最初に行うべき学習はたくさんありますが、一度それを知ったら、独自のHaversine計算を実装するよりもはるかに簡単です。さらに、多くの機能を利用できます。

    既存のデータ構造を保持したい場合でも、STDistanceを使用できます 、適切なgeographyを構築することによって Pointを使用するインスタンス 方法:

    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
    --INTO #includeDistances
    FROM #orig dest
    


    1. テキスト表現の16進数を10進数に変換します

    2. SQL Server 2014StandardEditionの常識的なライセンスの変更

    3. エラー1452:子行を追加または更新できません:外部キー制約が失敗します

    4. OSXでのMySQLrootユーザーパスワードの設定