【SQLite】緯度・経度から指定範囲にある点を抽出

SQLiteデータベースに格納された緯度経度情報をもとに,半径R[m]以内に存在するデータを抽出する方法を備忘録的にまとめておきます.

はい,そのための布石が以前書いた「sqliteで数学関数を使う」という記事になるわけですね。

モデル

今回使用するデータベースのモデルは以下のような感じです

Geo(name string,
    latitude real,
    longitude real); 

計算式

select *, 
    (6378 * acos( // 地球の赤道半径が6378[km]
          sin(radians(基準の緯度))
        * sin(radians(latitude))
        * cos(radians(longitude) - radians(基準の経度))
        + cos(radians(基準の緯度))
        * cos(radians(latitude))
    )) as distance
    from Geo
    where distance 

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です