クリエイター手抜きプロジェクト[198]Adobe Bridge CS3 + MacOS X編 グーグルマップの地図を定期的に保存する
── 古籏一浩 ──

投稿:  著者:


グーグルマップは、ネットにおける代表的な地図サービスです。Ajax普及の原動力となったことでも有名です。このグーグルマップですが、単なる地図だけでなく航空写真や火星の写真なども表示することができます。最近では、グーグルアースが過去の地図にも対応したので、そのうちグーグルマップにも昔の地図を表示できる機能が追加されるかもしれません。

このグーグルマップに使われている地図や衛星写真ですが、時々データが更新されます。ただ、いつ更新されるかは不明です。更新される前の航空写真を保存しておきたい(災害前と災害後の比較など)という人もいるでしょう(いないかも)。

そんな時は、一日一回自動的に航空写真画像をローカルディスクに保存してくれると便利です。日付ごとにフォルダが作成されていれば後で確認するのも簡単になります。なお、今回のスクリプトはMacOS XのみでWindowsでは動作しません。

これらの処理を行うためのスクリプトが、以下の二つになります。ひとつはAppleScriptで、Bridge CS3のスクリプトを呼び出すために使います。もうひとつが、グーグルマップから指定した緯度経度の画像をダウンロードし、保存するものです。



●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";
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);
}


保存する緯度経度は以下の2行で指定できます。

var lat = 36.125405; // 緯度
var lng = 137.983260; // 経度

写真のズームレベルは、以下の行の14を変更します。値が大きいほどより細かい写真になりますが、最大ズームレベルは場所によって異なっています。これらの写真を保存するフォルダを指定するのが以下の行です。あらかじめ、保存先のフォルダは作成しておく必要があります。

var filepath = "~/GMap/"; // 保存先のファイルパス

準備ができたら、これら二つのスクリプトファイルを、起動ディスクの最初の階層に入れます(ボリューム直下)。次に、アプリケーションフォルダ内のユーティリティフォルダ内にある、ターミナル.appを起動します。起動したら、以下のように入力します。

crontab -e

すると編集画面になるので、iのキーを押してから以下の一行を入力します。【起動ディスクのボリューム名】は、MacHDならMacHDに置き換えてから入力してください。間違ってしまったら、ターミナルウィンドウを閉じて、再度新規ターミナルウィンドウを開いてcrontab -eの入力からやり直してください。

0 0 * * * osascript /Volumes/【起動ディスクのボリューム名】/execAS.applescript

入力が終わったら、escキーを押した後にwqと入力し、リターンキーを押します。これでできあがりです。これで、0時になると自動的にグーグルマップの衛星写真をダウンロードし、フォルダに保存するようになります。


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>

グーグルアースで表示される市町村が古いままで、市町村合併する前の状態になっているようです。
それから、iPhoneが車に踏みつぶされて壊れました……。
< http://www.openspc2.org/blog/archives/2009/03/iphone_6.html
>
iPhoneは交換しないとどうしようもない状態になってしまいました。

「DTP WORLD」が休刊だそうで、これでDTP関連記事が載りそうなのは「MdN」くらい?
< http://www.wgn.co.jp/dtpw/close.php
>

サーバーを増強しましたので、また映像素材を追加してます。
・ハイビジョン映像素材
< http://www.openspc2.org/HDTV/
>

組版時間を半減する! InDesign自動処理実例集「組版時間を半減する! InDesign自動化実例集」でいくつか訂正があります。
・訂正一覧
< http://www.openspc2.org/book/error/indesign/index.html
>

こちらの連載もよろしく。
・29分でできる! あのサイトの“技”を盗め 第17回
< http://ascii.jp/elem/000/000/218/218253/
>

photo
改訂第4版 JavaScript ポケットリファレンス
古籏 一浩
技術評論社 2006-10-18
おすすめ平均 star
starJavaScriptを使ったプロジェクトのお供に是非
starJavaScript仮免者以上の方へ
starバランスの良いバイブル
star中級者向けです。

[改訂版] PHP ポケットリファレンス (Pocket reference) 改訂新版 SQLポケットリファレンス (Pocket reference) 改訂第5版 オールカラー  HTML ポケットリファレンス (POCKET REFERENCE) スタイルシート ポケットリファレンス (Pocket reference) [改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)

by G-Tools , 2009/03/16