GPS機によっては登録した地点およびトラックポイント(軌跡)の標高を記録するものがあります。ここではGARMIN社のGPSmap60CSxで記録された標高データを抜き出して数値としてIllustrator上に配置します。GPSmap60CSx付属のアプリケーションで.gpx形式に変換します。この形式はXML形式になっているので拡張子を.xmlにしてFirefoxなどで表示すると内容を確認できます。XMLデータ自体、テキスト形式なのでテキストエディタなどで閲覧することもできます。
この記録されたXMLデータタグの<wpt>および<trkpt>タグの次の行にある<ele>〜</ele>の範囲が標高データになります。例えば以下のようなデータです。
<trkpt lat="36.1285162" lon="137.9708519">
<ele>651.9111328</ele>
<time>2008-01-04T05:12:24Z</time>
</trkpt>
この場合、標高データは651.9111328になります。この値を登録地点の数またはトラックポイントの記録数だけ抜き出せばできあがりです。
以下のスクリプトでは登録地点の標高データをIllustrator上に表示するものです。
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 <wpt> Tag Search
{
text2 = fileObj.readln();
s = text2.indexOf(">");
e = text2.lastIndexOf("<");
result += text2.substring(s+1,e)+CR;
}
}
textObj = docObj.textFrames.add();
textObj.contents = result;
fileObj.close();
}else{
alert("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("<trkpt ") > -1) // XML <trkpt> Tag Search
{
text2 = fileObj.readln();
s = text2.indexOf(">");
e = text2.lastIndexOf("<");
result += text2.substring(s+1,e)+CR;
}
}
textObj = docObj.textFrames.add();
textObj.contents = result;
fileObj.close();
}else{
alert("XMLファイルが開けませんでした");
}