LoginSignup
60
41

More than 5 years have passed since last update.

緯度・経度を用いて距離を算出するSQL

Last updated at Posted at 2015-03-12

以下の様なテーブルで緯度・経度を管理しているとする。

<POSITION_TESTテーブル>

NAME LATITUDE LONGITUDE
ヒューリック神谷町ビル 35.663729 139.744047
虎ノ門ヒルズ森タワー 35.666863 139.74954
六本木ヒルズ森タワー 35.660477 139.729356
神谷町郵便局 35.664442 139.745396
東京都庁 35.689604 139.692305
北海道庁 43.064313 141.347255
ヒルズデール・ハイ・スクール 37.532225 -122.313028

で、緯度:35.663729、経度:139.744047 の位置から
これらの場所までの距離(km)を算出するには、以下のSQLを実行すれば良い。

SQL
select
    a.NAME
  , a.LATITUDE
  , a.LONGITUDE
  , ( 
    6371 * ACOS( 
      COS(RADIANS(35.663729)) * COS(RADIANS(a.LATITUDE)) * COS(RADIANS(a.LONGITUDE) - RADIANS(139.744047))
       + SIN(RADIANS(35.663729)) * SIN(RADIANS(a.LATITUDE))
    )
  ) as DISTANCE 
from
  position_test a; 

結果は以下のとおり。

<結果>

NAME LATITUDE LONGITUDE DISTANCE
ヒューリック神谷町ビル 35.663729 139.744047 0
虎ノ門ヒルズ森タワー 35.666863 139.74954 0.606372208057947
六本木ヒルズ森タワー 35.660477 139.729356 1.37559981865335
神谷町郵便局 35.664442 139.745396 0.145388038990192
東京都庁 35.689604 139.692305 5.48826712967876
北海道庁 43.064313 141.347255 834.321307653742
ヒルズデール・ハイ・スクール 37.532225 -122.313028 8291.19638773377
60
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
41