クリエイター手抜きプロジェクト[219]Adobe Bridge CS3/CS4編 グーグルマップの画像データを毎日保存する
── 古籏一浩 ──

投稿:  著者:


グーグルマップは地図や衛星写真など多くの情報を提供してくれますが、過去の衛星写真などは保存されていません。地震や豪雨など災害の、前後の衛星写真を残しておきたいと考える人もいるかもしれません。しかし、衛星写真が更新されたかどうか毎日チェックするのは大変です。そこで、Adobe Bridge CS3/CS4を使って衛星写真を自動保存してみます。



Adobe Bridge CS3/CS4は標準でHTTP、FTP機能を備えているので、以下のようにURLと保存ファイル名を指定するだけで、衛星画像をローカルフォルダに保存できます。緯度経度や保存先のパスは以下の行を変更してください。

var lat = 36.125405; // 緯度
var lng = 137.983260; // 経度
var zoom = 14; // ズームレベル
var filepath = "~/"; // 保存先のファイルパス


修正したらgetGMap.jsxの名前で保存します。


●getGMap.jsx
#target "bridge"
// サーバー上にある画像をローカルフォルダに保存
var lat = 36.125405; // 緯度
var lng = 137.983260; // 経度
var zoom = 14; // ズームレベル
var filepath = "~/"; // 保存先のファイルパス
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);
}


上記のスクリプトでは、getGMap.jsxをダブルクリックするだけで自動的に日付のフォルダが作成され、その中に衛星画像が保存されます。ただ、これでは手作業が入るため、忘れてしまったり、出張や病気などでファイルを実行できないこともあります。そこで、MacOS Xの場合、次のようにして毎日自動的に実行されるようにしておきます。

まず、以下のスクリプトをテキストエディタかアップルスクリプトエディタで入力し、execAS.applescriptという名前でボリュームの一番上の階層に保存します。


●execAS.applescript
tell application "Bridge CS3"
activate
do javascript file "MacHD:getGMap.jsx"
end tell


MacHDとある部分は、起動ディスクのボリューム名なので各自の環境に合わせて変更してください。次にターミナルを起動します。ターミナルはアプリケーションフォルダのユーティリティフォルダの中にあります。ターミナルを起動したら

crontab -e

と入力します。エディタ画面になるので

i

のキーを押して以下のコードを入力します。MacHDは起動ディスクのボリューム名なので各自の環境に合わせて変更してください。


0 0 * * * osascript /Volumes/MacHD/execAS.applescript

入力したらescキーを押してから、:wqと続けて3文字入力した後でリターンキーを押します。

これで毎日深夜0時に、指定された緯度経度のグーグルマップがJPEG形式でフォルダに保存されていきます。なお、スタティックマップを利用しているので、異なる緯度経度の画像データを大量に取得すると制限がかかることがあります。設定した定期的な処理を中止したい場合には、execAS.applescriptの名前を変えるか、他のフォルダに移動させる、削除するなどすれば画像の保存は行われなくなります。

【追記】
グーグルスタティックマップのver 2ではAPIキーが必須となっています。ver 1では掲載したサンプルでも
動作しますが、ver 2では動作しません。このため以下のように&key=と取得したAPIキーも指定してください。


lat+","+lng+"&zoom="+zoom+"&size=640x640&maptype=satellite";

lat+","+lng+"&zoom="+zoom+"&size=640x640&maptype=satellite&key=【APIキー】";


また、APIキーの取得は以下のURLから行うことができます。

< http://code.google.com/intl/ja/apis/maps/signup.html
>


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

ハイビジョンカメラSONY HDR-FX1とパナソニックAGHMC45、そしてEOS 5D MarkIIでイベント撮影してみました。FX1は、とにかく確実に撮影できるので非常に安心感があります(キヤノンのXH-A1は目の前に虫とか鳥が飛んでくるとピンぼけすることがある。でもFX1はそういうことがない)。

EOS 5D MarkIIは、やはり映像が格段にきれい。で、この前購入したAGHMC45なんですが、あまりに軽すぎて手持ちでは予想以上に安定しないという状態になり、ずっしりと重いFX1やEOS 5D MarkIIの方が絵がぶれない。あまりに軽すぎるのもちょっと考え物。

ASCII.jpの連載もよろしく
< http://ascii.jp/elem/000/000/463/463570/
>

ひそかに撮影してます。道路景観。
< http://www.openspc2.org/travel/
>

自動化のリクエストも待ってます(なるべく簡単にできるそうなものがグッド^^;)。

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

[改訂版] PHP ポケットリファレンス (Pocket reference) 改訂第6版 HTML&スタイルシート ポケットリファレンス (POCKET REFERENCE) JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス よくわかるゼロからはじめるJavaScript (よくわかるトレーニングテキスト) [改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)