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

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

Googleマップ上に地理座標を描画する方法はいくつもありますが、その結果をローカルファイル(HTML)として保存したい場合は、Pythonモジュール「gmplot」を利用するのが最も手軽です。

gmplotは、matplotlibに似た直感的なインターフェースを備えたPythonライブラリで、HTMLとJavaScriptを自動生成し、Googleマップ上にさまざまなデータを重ねて表示することができます。

gmplotのインストール方法

gmplotがまだ環境にインストールされていない場合は、pipコマンドで簡単に導入できます。

pip install gmplot

上記のコマンドを実行すると、以下のような出力が表示されます。

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

この例では、最新バージョンの「gmplot-1.2.0」がコンピュータにインストールされたことが確認できます。

gmplotには複数のプロット用メソッドが用意されており、探索的な地図ビューを非常に簡単に作成できます。HTMLを直接生成できるため、柔軟性の高いGoogleマップの作成が可能です。

以下に、代表的な活用方法をいくつか紹介します。

ケース1:gmplotで基本のマップを作成する

特定の場所にマップを表示したい場合は、その場所の緯度・経度とズームレベルを指定します。

# gmplotライブラリをインポート
from gmplot import *

# マップを作成
# 最初の2つの引数は地理座標(緯度・経度)、3番目はズームレベル
gmap = gmplot.GoogleMapPlotter(17.438139, 78.39583, 18)

# ファイルの保存先を指定
gmap.draw("C:\\Users\\rajesh\\Desktop\\map11.html")

出力結果1

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

注意: 地図に「For Development Purpose Only」と表示されるのは、現在GoogleマップがAPI経由では無料サービスではなくなっているためです。高品質なGoogleマップを表示するには、自分のAPIキーを設定する必要があります。以下はAPIキーを組み込んだコード例です。

ケース1(GOOGLE_API_KEYを設定した場合)

# gmplotライブラリをインポート
from gmplot import *

# マップを作成
# 最初の2つの引数は地理座標(緯度・経度)、3番目はズームレベル
gmap = gmplot.GoogleMapPlotter(17.438139, 78.39583, 18)

# Googleマップは有料サービスになったため、APIキーの取得が必要です。
# 下の行をコメントアウトすると、「For Development Purpose Only」という
# 文字が表示された低解像度のマップになります。
#gmap.apikey = "Your_API_KEY"
gmap.apikey = "AIzaSyDeRNMnZ__VnQDiATiuz4kPjF_c9r1kWe8"

# ファイルの保存先を指定
gmap.draw("C:\\Users\\rajesh\\Desktop\\map11.html")

注意: 「Your_API_KEY」の部分に取得したGoogle MapsのAPIキーを設定し、gmap.apikeyに代入してください。下記の出力例は筆者自身のキーを使用したものですが、誰でも次のリンクからAPIキーを取得できます。

https://developers.google.com/maps/documentation/embed/get-api-key

出力結果1(APIキー適用後)

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

ケース2:Googleマップ上にポリゴンを描画する

# gmplotパッケージをインポート
import gmplot

latitude_list = [17.4567417, 17.5587901, 17.6245545]
longitude_list = [78.2913637, 78.007699, 77.9266135]

gmap = gmplot.GoogleMapPlotter(17.438139, 78.3936413, 11)

# 各座標位置にポイントを配置
gmap.scatter(latitude_list, longitude_list, '#FF0000', size=40, marker=False)

# polygonメソッドで座標をもとにポリゴンを描画
gmap.polygon(latitude_list, longitude_list, color='cornflowerblue')

gmap.apikey = "Your_API_KEY"

gmap.draw("C:\\Users\\rajesh\\Desktop\\map3.html")

出力結果2

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

ケース3:散布点のプロットと座標間の線分描画

複数の地点を散布図としてプロットし、それらを線で結ぶこともできます。以下はインド・ハイデラバードのチャルミナール周辺の観光名所を例にしたサンプルです。

# gmplotパッケージをインポート
import gmplot

# 緯度・経度の各ポイントを設定
Charminar_top_attraction_lats, Charminar_top_attraction_lons = zip(*[
    (17.3833, 78.4011),(17.4239, 78.4738),(17.3713, 78.4804),(17.3616, 78.4747),
    (17.3578, 78.4717),(17.3604, 78.4736),(17.2543, 78.6808),(17.4062, 78.4691),
    (17.3950, 78.3968),(17.3587, 78.2988),(17.4156, 78.4750)])

# マップの中心座標とズームレベルを指定
gmap3 = gmplot.GoogleMapPlotter(17.3616, 78.4747, 13)

# 散布図としてプロット
gmap3.scatter(Charminar_top_attraction_lats, Charminar_top_attraction_lons,
              '#FF0000', size=50, marker=False)

# plotメソッドで指定した座標間に線を描画
gmap3.plot(Charminar_top_attraction_lats, Charminar_top_attraction_lons,
           'cornflowerblue', edge_width=3.0)

# 自分のGoogle APIキーを設定
gmap3.apikey = "API_Key"

# HTMLファイルとして保存
gmap3.draw(r"c:\users\rajesh\desktop\maps\scatter.html")

出力結果3

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

ケース4:地震分布を表すヒートマップと散布図の併用

ランダムに生成した700件の緯度・経度データを使い、ヒートマップと散布図を同じマップ上に重ねて表示します。

# 必要なライブラリをインポート
import gmplot
import numpy as np

# 緯度・経度のダミーデータを700件生成
latitude = (np.random.random_sample(size=700) - 0.5) * 180
longitude = (np.random.random_sample(size=700) - 0.5) * 360

# マップの中心座標とズームレベルを指定
gmap = gmplot.GoogleMapPlotter(0, 0, 2)

# ヒートマップを描画
gmap.heatmap(latitude, longitude)
gmap.scatter(latitude, longitude, c='r', marker=True)

# 自分のGoogle APIキーを設定
gmap.apikey = "Your_Google_API_Key"

# HTMLファイルとして保存
gmap.draw(r"c:\users\rajesh\desktop\maps\country_heatmap.html")

出力結果

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

まとめ

gmplotを使えば、基本マップの生成からポリゴンやラインの描画、ヒートマップによるデータ可視化まで、すべてシンプルなPythonコードで実現できます。さらに、結果は単一のHTMLファイルとして出力されるため、ブラウザで手軽に確認・共有できるのも大きな魅力です。位置情報データの可視化が必要な場面で、ぜひ活用してみてください。

  1. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c

  2. PythonのSunPyライブラリで太陽画像をプロットする方法

    Pythonでは、SunPyというパッケージを使って太陽画像を作成・表示することができます。SunPyには、各地の太陽観測所や太陽研究機関が提供する陽子フラックスや電子フラックスなど、さまざまな太陽観測データが含まれています。 SunPyは、以下のコマンドで簡単にインストールできます。 pip install sunpy AIA画像とは ここではサンプルとしてAIA画像をプロットします。AIA(Atmospheric Imaging Assembly:大気圏撮像装置)は、NASAの太陽観測衛星SDO(Solar Dynamics Observatory)に搭載された観測機器の一つで、太陽大気を