Google Static Maps で ヒートマップをつくる

Googleマップに自作のヒートマップを表示させたくなりました.頻度が見やすくなるあの図です.

以下のサイトでもヒートマップをつくるAPIが公開されています.

が,今回は自作をすることにしました.その理由としましては,

  • 他のAPIが使いづらい.gHeatはよくわからなかった.
  • 社外秘などの理由で,緯度経度座標をサーバに読み取られる危険は避けたい.プログラムがローカルのみで実行できれば,外部に情報が漏れない.
  • 標本にフィッティングする分布や色相を自分で決められる.

からです.

使用例 ※IE7以上かFirefoxOperaで見てください

Google Static Mapsに,プログラムで生成した半透過PNGファイルを重ねて表示しています.なお,ヒートマップを一枚の画像ファイルとして合成する仕組みは採用していません.これはGoogleが提供する地図データに任意の画像データと合成することが許可されていないためです.
IE7以上かFirefoxOperaで見てください.(IE6だと半透過PNGがサポートされていません.)

    +   =

大阪府警の交番ヒートマップ 
 
半透過PNGをサポートしているブラウザなら正しく表示されるはずです. 
 
  

ダウンロード

こちらからダウンロードできます.BSDライセンスでお願いします.ぜひ感想を頂けると今後のモチベーションを持てるのでよろしくお願いします.

ちなみに

  • 住所を緯度経度に変換したり,緯度経度をピクセル値に変換したりするのはRubyで書いています.
  • 標本からヒートマップの半透過PNGファイルを作成するのはJavaで書いています.
  • 緯度経度からGoogle Mapsの画像上におけるピクセル値をわりだすには,この計算式を用いています.

つかい方

  1. 住所または緯度経度が書かれたテキストファイルを用意.
    • 住所のテキストファイルは,第1列に住所が書かれたCSV形式に変換してください.同封のRubyスクリプトで緯度経度に変換できます.
    • 緯度経度の場合は第1列が緯度,第2列が経度になったCSV形式ファイルにしてください.
  2. Google Maps APIのキーを取得してください.
  3. 取得したキーを./exec.shの該当箇所に置換します.
  4. 地図の倍率,出力するファイルの中心となる緯度経度,画像のサイズを設定します.
  5. (任意)標本にフィッティングする分布の分散は適宜変更してください.
  6. CygwinLinuxかで./exec.shを実行すると,画像が出力されます.