世界中の携帯基地局の位置情報を閲覧できるOpenCelliDプロジェクトについて

スマホが位置情報を取得する方法は大きく3つあります。

  • GPS
  • 携帯基地局
  • wifi

このうち、携帯基地局とwifiは、スマホがGPSで取得した位置情報をGoogleなりAppleがサーバサイドで紐付けることで、位置情報を推定しているようです。
携帯基地局やwifiの情報から位置情報を逆引きするためには、Google Map APIを使えば出来るのですが、ルナスコープのようなGPSトラッキングをしているサービスでは、Google Mapプレミアムサービスへの申し込みが必須のため気軽に利用することが出来ません。

GPSトラッキングしていても無料で利用できるサービスを探したところ、OpenCelliD というものがありました。

OpenCelliDとは

OpenCelliDホームページ
世界中の基地局情報のデータベースを無料で公開するプロジェクト。位置情報はOpenCelliDのAndroidアプリを使ったユーザが登録するようになっています。
OpenCelliDのAndroidアプリ

ダウンロードできる基地局データ

無料でアカウントを作成してログインするとダウンロードページにアクセスできるようになります。

この時は、560MB程度のCSVファイルを提供していました。(時間がたつと大きくなるはず)
CSVは次のようなカラムに分かれています。

radio, mcc, net, area, cell, unit, lon, lat, range, samples, changeable, created, updated, averageSignal

カラムについては、こちらのwikiページに説明があるのですが、一部カラムについて過不足があるのようなのでwikiの更新が遅れているのかもしれません。

実際にデータベースに入れて試す

お試しでAWSのRDSにPostgreSQLのインスタンスを立ててデータをインポートしてみました。
DBが起動したら、CSVに合わせて次のようなテーブルを作りました。

CREATE TABLE cell_towers(
    radio            varchar(16),
    mcc         int,
    net         int,
    area        int,
    cell        int,
    unit        int,
    lon         double precision,
    lat         double precision,
    range       int,
    samples     int,
    changeable  int,
    created     int,
    updated    int,
    averageSignal    int
);

試しで検索する部分についてインデックスも貼っておきます。

CREATE INDEX cell_index ON cell_towers (cell);
CREATE INDEX mcc_index ON cell_towers (mcc);

先程ダウンロードしたファイル(560MB程度)を解凍して(3GB程度)から、pgadmin4でDBに接続して、インポートを実行しました。
pgadminを使うとCSVファイルを指定するだけでインポートが出来て便利です。

DBで必要な容量を見積もらずにやったのですが、おおよそ6GBくらいを使いました。(最初、DB容量が足りなくてインポートに失敗しました。。)

データが無事にインポートできたら次のようなSQLで検索すれば、基地局の位置情報が取得できます。

select * from cell_towers where cell = xxxxxxxxx limit 1;

日本の基地局の網羅状況について

都市部は割りと基地局のデータがあるようです。実際に東京の調布で取得した基地局データを2つテストしてみたところ、1つは見つかって、1つは見つからなかったです。
しかし、地方はまだまだスカスカなイメージです。

これからのデータ充実に期待しましょう。

※皆様、ぜひ一度 OpenCelliDのアプリをインストールして生活圏の基地局情報を送信してください!