グーグルマップは代表的な地図サービスです。Ajax普及の原動力となったことでも有名です。
このグーグルマップですが、単なる地図だけでなく航空写真や火星の写真なども表示することができます。最近ではグーグルアースが過去の地図にも対応したので、そのうちグーグルマップにも昔の地図を表示できる機能が追加されるかもしれません。
このグーグルマップに使われている地図や衛星写真ですが、時々データが更新されます。ただ、いつ更新されるかは不明です。更新される前の航空写真を保存しておきたい(災害前と災害後の比較など)という人もいるでしょう(いないかも)。
そんな時は1日1回自動的に航空写真画像をローカルディスクに保存してくれると便利です。その際、日付ごとにフォルダが作成されていれば後で確認するのも簡単になります。なお、今回のスクリプトはMacOS XのみでWindowsでは動作しません。
これらの処理を行うためのスクリプトが以下の2つになります。1つはAppleScriptで、Bridge CS3のスクリプトを呼び出すために使います。もう1つがグーグルマップから指定した緯度経度の画像をダウンロードし保存するものです。
●AppleScript
tell application "Bridge CS3"
activate
do javascript file "MacHD:getGMap.jsx"
end tell
ここのMacHDは起動ディスクのボリューム名になりますので、各自の環境に合わせて書き換えてください。
●getGMap.jsx
#target "bridge"
// サーバー上にある画像をローカルフォルダに保存
var lat = 36.125405; // 緯度
var lng = 137.983260; // 経度
var zoom = 14; // ズームレベル
var filepath = "~/GMap/"; // 保存先のファイルパス
var dateObj = new Date();
var yy = dateObj.getFullYear();
var m = "0"+(dateObj.getMonth()+1);
var mm = m.substring(m.length-2,m.length);
var d = "0"+dateObj.getDate();
var dd = d.substring(d.length-2,d.length);
var sfName = filepath+yy+mm+dd;
var flag = (new Folder(sfName)).create();
if (flag == true){
var mapURL = "http://maps.google.com/staticmap?center="+
lat+","+lng+"&zoom="+zoom+"&size=640x640&maptype=satellite&key=●●●";
getHttpData(mapURL, sfName+"/"+lat+"_"+lng+".jpg");
}else{
alert("フォルダが作成できませんでした");
}
// HTTPを使って指定されたサーバーのマップデータを読み込みファイルオブジェクトを返す
function getHttpData(sURL, filePath){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
var http = new HttpConnection(sURL);
http.response = new File(filePath);
http.execute();
http.response.close();
return new File(filePath);
}
なお、上記スクリプト中の●●●はAPIキーです。APIキーはグーグルマップAPIのページから取得することができます。
保存する緯度経度は以下の2行で指定できます。
var lat = 36.125405; // 緯度
var lng = 137.983260; // 経度
写真のズームレベルは以下の行の14を変更します。値が大きいほどより細かい写真になりますが、最大ズームレベルは場所によって異なっています。これらの写真を保存するフォルダを指定するのが以下の行です。あらかじめ保存先のフォルダは作成しておく必要があります。
var filepath = "~/GMap/"; // 保存先のファイルパス
準備ができたら、これら2つのスクリプトファイルを起動ディスクの最初の階層に入れます(ボリューム直下)。次にアプリケーションフォルダ内にあるユーティリティフォルダ内にあるターミナル.appを起動します。起動したら以下のように入力します。
crontab -e
すると編集画面になるのでiのキーを押してから以下の一行を入力します。【起動ディスクのボリューム名】はMacHDならMacHDに置き換えてから入力してください。間違ってしまったら、ターミナルウィンドウを閉じて再度新規ターミナルウィンドウを開いてcrontab -eの入力からやり直してください。
0 0 * * * osascript /Volumes/【起動ディスクのボリューム名】/execAS.applescript
入力が終わったらescキーを押した後にwqと入力しリターンキーを押します。
これでできあがりです。あとは0時になると自動的にグーグルマップの衛星写真をダウンロードしフォルダに保存するようになります。
[サンプルをダウンロード]