クリエイター手抜きプロジェクト[169]Illustrator CS2/CS3編 GPSの座標データを読み出し表示する/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,100文字)


今では携帯電話でもPS機能が搭載され、珍しい機能ではなくなりました。GPS=Global Positioning System、つまり地球上での位置を特定するためのものです。GPSを使えば、地球上のどの地点なのかを、手軽に調べることができます。

GPS機によっては、計測したデータなどをXMLデータで出力できるものがあります。このXMLデータ内には、位置座標などが入っています。今回は、このGPS機から出力されたXMLデータの座標値を読み出して、Illustrator上のドキュメントに表示します。今回表示するのは、36.222, 136.45676という数値になります。ドキュメント上には今回はプロットしません。



まず、今回使用したのはGarmin社製のGPSmap60CSxです。この機器からソフトを経由して出力したXMLデータを読み出して、座標値を表示します。

< http://www.garmin.com/garmin/cms/site/us >

出力されるXMLデータは大きいため、必要事項だけを抽出すると以下のようになります。

 <wpt lat="36.1287498" lon="137.9705339">
  <ele>705.7282715</ele>
  <name>118</name>
  <cmt>2007-12-31 1:37:21PM</cmt>
  <desc>2007-12-31 1:37:21PM</desc>
  <sym>Flag, Blue</sym>
  <extensions>
   <gpxx:WaypointExtension xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd">
    <gpxx:DisplayMode>SymbolAndName</gpxx:DisplayMode>
    <gpxx:Address>
     <gpxx:State> </gpxx:State>
    </gpxx:Address>
   </gpxx:WaypointExtension>
  </extensions>
 </wpt>

<wpt>タグで囲まれた範囲が登録地点の座標になります。
緯度が<wpt>タグのlat (Latitude)、経度が<wpt>タグのlon (Longitude) 属性に入っています。

ここで、少し困ったことが発生します。というのも、Illustrator CS2/CS3ではXMLデータ(テキスト)を読み込んで、簡単に処理する機能が用意されていないということです。ブラウザであればDOM(Document Object Model=ドキュメントオブジェクトモデル)Scriptingで簡単にできることが、Illustratorではできません。

CS3では実装されるかと思いましたが、XML関連処理はまったく実装されませんでした。仕方ないので、1行ずつ読み込んで<wpt>タグかどうかを調べ、該当した場合のみ、さらに属性値を抽出するという面倒なことを行なっています。

説明は長いのですが、プログラムは割と短めです。以下のスクリプトを実行すると、指定したXMLデータを読み込んで座標値だけを抽出しドキュメント上に配置してくれます。単なる座標値なので、コピーしてエクセルなどで利用することもできます。

if (documents.length < 1) // ドキュメントがなかった場合は新規に作成
{
documents.add(DocumentColorSpace.CMYK,595.2756,841.8898);
}
docObj = activeDocument;
result = "";
CR = String.fromCharCode(13);
filename = File.openDialog("GPSで出力したXMLファイルを指定してください");
fileObj = new File(filename);
flag = fileObj.open("r");
if (flag == true)
{
while(!fileObj.eof)
{
text = fileObj.readln();
if(text.indexOf("< wpt ") > -1) // XML Tag Search
{
xmlData = text.split(" "); // 空白で分割
lat = xmlData[3].substring(5,xmlData[3].length-1);
lon = xmlData[4].substring(5,xmlData[4].length-2);
result += lat+","+lon+CR;
}
}
textObj = docObj.textFrames.add();
textObj.contents = result;
fileObj.close();
}else{
alert("XMLファイルが開けませんでした");
}


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

新しいブラウザ(時代)に対応させたJavaScript例文辞典を用意しました。暇を見て追加していくといった程度なので、気長に使ってやってください。
< http://www.openspc2.org/reibun/javascript2/index.html >

ついに(?)両親にも「ねんきん特別便」(緑色の封筒)が届きました。予想通り、二人とも加入歴が抜けてました……。8年以上まるまる抜けているようで……。先日、郵便局に行ったらこんな女性もいました。「名前がアキラだったらから、役所が親切心で出生登録を男に変えて戸籍に登録してたのよ!」高校入試の時に判明したそうで……。役所というところは、ありえない事がたくさん起こるみたい。

ガソリン価格が高くなったので、30秒以上の赤信号ではエンジン停止。割と節約になる感じです。

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

[改訂版] PHP ポケットリファレンス (Pocket reference) 改訂新版 SQLポケットリファレンス (Pocket reference) 基礎 Ajax + JavaScript 改訂第5版 オールカラー  HTML ポケットリファレンス (POCKET REFERENCE) 標準DOMスクリプティング JavaScript+DOMによるWebアプリデザインの基礎



photo
Google Maps API逆引きクイックリファレンス―WEB2.0対応
古籏 一浩
毎日コミュニケーションズ 2006-09
おすすめ平均 star
star簡単にできます
starようやく出ました。使えるGoogleMapsリファレンス。

Google Maps API徹底活用ガイド Google Maps APIv2活用リファレンス Google Maps Hacks 第2版 ―地図検索サービスをもっと活用するテクニック Google Maps Hacks -地図検索サービス徹底活用テクニック- Googleマップ+Ajaxで自分の地図をつくる本  Google Maps API徹底活用



photo
Ajaxライブラリリファレンス
古籏 一浩
ビー・エヌ・エヌ新社 2007-01-24
おすすめ平均 star
star「リファレンス」です。
starAjaxのステップアップには最適。
starまずはAjaxを使ってみたい

標準DOMスクリプティング JavaScript+DOMによるWebアプリデザインの基礎 PHPによるJavaScriptを書かないAjax Ajaxハッカーズ・プログラミング―基礎からprototype.js、Yahoo!UIライブラリ、HTML_AJAXの活用までWebアプリケーション制作のプログラミング・テクニック Ajaxテクニックブック WebクリエイティブのためのDOM Scripting (Web Designing Books)

by G-Tools , 2008/05/26