Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのpygmapsパッケージでGoogleマップにデータをプロットする方法

Pythonのpygmapsライブラリは、Google Maps JavaScript APIのラッパーを提供するライブラリです。このライブラリを使うと、matplotlibのような直感的なインターフェースでHTMLとJavaScriptを自動生成でき、Googleマップの上に自分の好きな情報(ポイントや経路など)を自由に重ねて表示できます。

必要なライブラリ

今回使用するのはpygmapsライブラリのみです。pipコマンドを使って、以下のようにインストールしてください。

$ pip install pygmaps (Windowsの場合)
$ sudo pip3 install pygmaps (Linuxの場合)

実装する機能

今回作成するプログラムでは、以下の5つの機能を実装します。

  • 緯度・経度・ズームレベルを指定して、pygmapsで地図を作成する。

  • グリッドの開始・終了となる緯度経度とグリッドサイズを指定して、地図上にグリッドを表示する。

  • 地図上にポイントを追加し、色を設定して表示する。

  • 地図上の地点を中心に、メートル単位で半径を指定して円を描画する。

  • 緯度経度の座標リストを渡して、地図上に経路を描画する。

サンプルコード

以下は、pygmapsの各種機能を実際に使った実装例です。各関数の引数や戻り値についてもコメントとして記載しています。

import pygmaps

########## コンストラクタ: pygmaps.maps(latitude, longitude, zoom) ##########
# 説明:中心点の緯度経度とズームレベルを指定して地図を初期化します
# 引数1:latitude (float) 地図中心点の緯度
# 引数2:longitude (float) 地図中心点の経度
# 引数3:zoom (int) 地図のズームレベル(0〜20)
# 戻り値:pygmapsのインスタンス
#========================================================================
mymap = pygmaps.pygmaps(17.45, 78.29, 15)

########## 関数: setgrids(start-Lat, end-Lat, Lat-interval,
##########         start-Lng, end-Lng, Lng-interval) ####################
# 説明:地図上にグリッドを設定します
# 引数1:start-Lat (float) グリッドの最小緯度
# 引数2:end-Lat (float) グリッドの最大緯度
# 引数3:Lat-interval (float) 緯度方向のグリッドサイズ
# 引数4:start-Lng (float) グリッドの最小経度
# 引数5:end-Lng (float) グリッドの最大経度
# 引数6:Lng-interval (float) 経度方向のグリッドサイズ
# 戻り値:なし
#========================================================================
mymap.setgrids(17.45, 17.46, 0.001, 78.29, 78.30, 0.001)

########## 関数: addpoint(latitude, longitude, [color]) #################
# 説明:地図上にポイントを追加して表示します。colorは省略可能で、
#       デフォルトは赤です
# 引数1:latitude (float) ポイントの緯度
# 引数2:longitude (float) ポイントの経度
# 引数3:color (string) 表示色(HTMLカラーコードで指定)
# カラーコード例:赤 "#FF0000"、青 "#0000FF"、緑 "#00FF00"
# 戻り値:なし
#========================================================================
mymap.addpoint(17.45, 78.29, "#FF0000", "Hello")

########## 関数: addradpoint(latitude, longitude, radius, [color]) ######
# 説明:半径(メートル)付きのポイントを追加し、円を描画します
# 引数1:latitude (float) ポイントの緯度
# 引数2:longitude (float) ポイントの経度
# 引数3:radius (float) 半径(メートル単位)
# 引数4:color (string) 表示色(HTMLカラーコードで指定)
# 戻り値:なし
#========================================================================
mymap.addradpoint(17.45, 78.29, 150, "#0000FF")

########## 関数: addpath(path, [color]) #################################
# 説明:地図上に経路を追加します。pathは座標点のリストです
# 引数1:path (座標のリスト) 例:[(lat1, lng1), (lat2, lng2), ...]
# 引数2:color (string) 経路の表示色(HTMLカラーコードで指定)
# 戻り値:なし
#========================================================================
path = [(17.45, 78.29),
        (17.55, 78.39),
        (17.65, 78.49)]
mymap.addpath(path, "#00FF00")

########## 関数: draw(file) #############################################
# 説明:HTML形式の地図ファイル(.html)を生成します
# 引数1:file (string) 地図ファイルの保存先パスとファイル名
# 戻り値:なし(指定ディレクトリにHTMLファイルを出力)
#========================================================================
mymap.draw('./mymap.html')

print('OK')

注意:TypeErrorが発生する場合

mymap.addpoint関数を実行すると、環境によっては以下のようなTypeErrorが発生することがあります。

TypeError: addpoint() takes from 3 to 4 positional arguments but 5 were given

これは引数の数が一致しないことで起こるエラーです。回避するには、pygmaps.pyパッケージ内のaddpoint関数にtitle引数を追加します。本記事のサンプルコードでは、すでにこの修正を適用しています。

出力結果

PythonのpygmapsパッケージでGoogleマップにデータをプロットする方法

上記の出力画像のとおり、draw関数で生成されたHTMLファイルをブラウザで開くと、1枚の地図上にグリッド、ポイント、半径付き円、経路といった複数の機能を同時に可視化できます。位置情報データの可視化ツールとして、ぜひ活用してみてください。

  1. Googleデータのダウンロード方法|Google Takeoutで全データをエクスポートする手順

    Googleは、あなたが想像している以上に多くの情報を把握しています。あなたの大切なデータを保存しているのはFacebookだけではありません。Googleアカウントにも、機密性の高い個人情報が保存されています。ご存じのとおり、Googleは検索結果や広告を最適化するために、ユーザーの行動を追跡し、さまざまなデータを収集しています。 何百万人ものユーザーの間で高まるデータセキュリティとプライバシーへの懸念を受け、当サイトではすでに「Facebookデータのダウンロード方法」をご紹介しました。今回は、Google Takeoutツールを使って、自分のデータをダウンロードし、Google上に残され

  2. Google Takeout(データエクスポート)でGmailのMBOXデータをダウンロードする完全ガイド

    Gmailは、個人利用からビジネス利用まで幅広いシーンで使われる、世界で最も人気のあるメールサービスの一つです。Googleドライブ、タスク、ドキュメントなど、さまざまなGoogleサービスが統合されており、柔軟性の高いメール環境を提供しています。 しかし、Gmailのメール、チャット、添付ファイルなどのデータを別のサービスへ移行したり、オフライン用に保存したりしてバックアップしたい場面もあるでしょう。そんなときに役立つのが、Googleが公式に提供している「Google Takeout(データエクスポート)」というサービスです。このサービスを使えば、Gmailだけでなく他のGoogleサービ