今では携帯電話でもPS機能が搭載され、珍しい機能ではなくなりました。GPS=Global Positioning System、つまり地球上での位置を特定するためのものです。GPSを使えば、地球上のどの地点なのかを、手軽に調べることができます。
GPS機によっては、計測したデータなどをXMLデータで出力できるものがあります。このXMLデータ内には、位置座標などが入っています。今回は、このGPS機から出力されたXMLデータの座標値を読み出して、Illustrator上のドキュメントに表示します。今回表示するのは、36.222, 136.45676という数値になります。ドキュメント上には今回はプロットしません。
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秒以上の赤信号ではエンジン停止。割と節約になる感じです。

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

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

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