独り言日記
同一ドメイン内での
JavaScript
からの外部ファイル読み込み(
2009/11/30
)
自分用メモ。
「Scripting.FileSystemObject」による JavaScript からの外部ファイル読み込みは、セキュリティの警 告 が 出 る の で ほ か の 手 段 が な い か 探 す と、「XMLHttpRequest」(Firefox や Safari の 場 合)、 「ActiveXObject("Msxml2.XMLHTTP")」(IE の場合)、が使えますね。 これだと同一ドメインの縛りはあるけど、ローカルでも例えば CSV をブラウザから読み込んで処 理する、というのができています。ブラウザとしてよりも、ローカルアプリとして単に Google Mapsを使いたいだけだとするとこれは使えそうです。 以下のような感じで使用できます(HTML に記載する JavaScript になります)。 function createXMLHttpRequest() { var XMLhttpObject = null; if(window.ActiveXObject) { // IE の場合
try{
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {
try {
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP"); }catch(e) { return null; } } } else { // IE 以外のブラウザの場合 try {
XMLhttpObject = new XMLHttpRequest(); } catch(e) { return null; } } return XMLhttpObject; } function foo() { // XMLHttpRequest のオブジェクトを作成 var request = createXMLHttpRequest();
// 外部ファイルの読み込み(同期取得。読み込みが完了するまで次に進まない) request.open("GET", "test.csv", false);
request.send(null);
// テキストとしてファイル内容を取得 var retStr = request.responseText; }
上記のようにした場合の foo 関数の retStr に外部ファイル「test.csv」内のテキストが入ります。こ の「test.csv」を上記の JavaScript がある HTML ファイルと同一ディレクトリにおいておけばロー カルでも外部ファイル読み込みができますね。セキュリティの警告も出ません。
Firefox(Win)/IE(Win)/Safari(Mac)で動作するのを確認しました。
全に読み込まれるとコールバックを返す(その間は即座に次の処理に進む)、という手段もありま す。ようは、このあたりは「Ajax」ですね。Ajax はノータッチだったのですが、これの入り口が 「XMLHttpRequest」の非同期通信だそうで。 Google Mapsで使う場合は、外部ファイルに緯度経度などを随時格納し、これをタイマーでまわし ながら JavaScript で取得して画面に反映させればスムーズに行くことになります。 クライアントアプリに Google Maps を埋め込む場合は、 ・GPS から緯度経度を取得してファイル「lat.txt」などに書き出し(これを 1 秒間隔に出力) ・Google Maps(JavaScript) で、1 秒間隔で lat.txt が読み込める状態なら読み込み。この情報を
反映させる。 の 2 つのループがあって、外部ファイルを使ってやりとりを行う、という流れになります。もち ろん、ファイル出力途中に読み込むとおかしくなるといけませんので、ファイルロックの制御は 忘れずに。 また、GPS のロガーソフトからのログ取得は成功し、gpx という拡張子の XML にて取得できてい るのを確認しました。このファイルは、計測時間、緯度軽度、高度、速度(相対的なもの)が列 挙されているファイルになっており、これをポイントしていくことで経路は後付けで地図上に反 映できそうです。 gpxとは「GPS Exchange Format」のことで、汎用的なフォーマットなんですね。 http://www.topografix.com/gpx.asp 自分はこの経路をたどってみた、なんて情報交換に使えるんだそうです(サイクリングとか山登 りとかで)。
Google Maps Navigation
(
2009/11/29
)
ちょっと調べたところ、Google 自身が GPS と Google Maps を使った Android 携帯でのカーナビ 「Google Maps Navigation」というのを進めているみたいですね。
以下、紹介動画。 http://www.youtube.com/watch?v=tGXK4jKN_jY 以下、公式サイト。 http://www.google.com/mobile/navigation/index.html 音声でのナビも使えるらしい。基本的には、Google Mapsにできる機能に GPS の情報を与えた、と いう形になってそうです。技術としては今ある機能をつなぎ合わせただけといえばそれまで、で すが。動画では、写真に経路の道筋が半透明でオーバーラップされていて、おおっ、と思ったの ですが ストリートビューに経路を表示してるだけっすね。カメラとリアルタイムオーバーラッ
プかよ、と勘違いしてしまいましてちょっとびっくりしました。 で、アメリカのカーナビ関連メーカーはこれが発表された直後に株が下がったんだそうな。そ りゃ、無料でネット接続のカーナビを提供されたりしたらたまらんだろうなぁと。Google はそれ をやっちゃおうとしていると。使用できるのは今のところアメリカだけとなっているようです が、いずれは GPS を使ったサービスの無料化の流れは来るでしょうね。 日本ではサイクリングで GPS でロギングして経路を確認したりしているサイトも多い気がしま す。ロギングしたものを後で Googls Maps に流し込むとか。 ですが、iPhone/Android 携帯ですと、GPS も使えるしネット接続もできるし開発もできる、ので、 一体型の端末としてはちょうどよいんだよなぁ。その場で経路確認もできてしまうわけですし (バッテリーが持つかは不明ですが)。今は実験もかねてなので PC でプログラムしていますが、 いずれは iPhone あたりに移行してみたいなと思っています。
続・
Google Maps API
(
2009/11/29
)
なお、上記にある緯度経度は実際の測定からわざとずらしています。ですので、私がかっぱ寿司 近辺で怪しく動めいていた、ってわけじゃありません (^_^;;。
個人位置情報が分かる部分は隠していますが、NMEA-0183 フォーマットでは「$GPGGA」という のをパースすることで GPS からの主要な情報を取得できます。
GoogleMapは JavaScript 経由での制御なので、アプリで統合するようなものを作るとすると、一時
的に作業ファイルを吐き出して JavaScript で読み込ませる、などの細工が必要になりますね。規約
上、ブラウザから離れた利用自身あんまりよくないかもしれません。まだ Google Maps API の使 用規約をまともにチェックしていないので、後々確認してみることにします。 JavaScript か ら の フ ァ イ ル 読 み 込 み で セ キ ュ リ テ ィ ー の 警 告 が 出 る た め(ActiveX の 「Scripting.FileSystemObject」でファイルを JavaScript から読み込むようにした)これは改善の余地 ありか。 いずれにせよ、これで実際に歩いた軌跡を表示しながらマッピング、ができるようになりました。 ダンジョンゲームのオートマップのような感じですね。 とプログラムはできましたので、今度の休日に実際に歩いてマッピングしてみるかな。 無線のネット環境がないため GPS 情報だけロギングしておいて、後で流し込むのが無難な感じで す。ちなみに上記のような地図 +GPS を使ったマッピングは、iPhone のアプリなどでも大量にあ ると思いますので(普通の携帯電話のアプリでもあるかも)いまさらな実験だったりします。 ノート PC で GPS と通信機能を持ち歩いて、というのが大掛かりではありますので、実用を考え たら(こういうのを作るんだとしたら)iPhone を端末に選ぶのが無難かなぁ。 秋月で購入した GPS レシーバ (GT-730F/L) は、USB 電池ボックスなるものが付属で追加されてお り、どうもロガー機能が使えるっぽいのですが、ハードで記録ってのはしてないですよね、たぶ ん。ソフト制御なら自分でロガーを作ってしまったほうが早いかもしれません。 追記: ロガー機能ですが、チップに内蔵されているようです。ハードの製造メーカーのサイトより。 *2M Bytes flash memory for data logging,
with 16 bytes binary data per record that stores up to 256K data records *Log data can be exported to mapping software suchas Google Earth and TrackMaker
この GPS レシーバの仕様は、以下のサイトにてやたら詳しく解説してました。 http://yamagatan.com/?p=log&l=117984 専用ソフトでログデータを抽出できるみたいですね。 先日は、誤差は 5 メートル以内と書いたのですが、実際にマップに当てはめて観察していると、動 いていなくても緯度経度がずれるときが見受けられました。衛星の観測数が少なくなる場合が あり、少ないとぶれが大きくなる感じです。道路一幅くらいの誤差は発生しますねぇ。これは場 所をいろいろ変えて実験してみる必要がありそうです。
Google Maps API
(
2009/11/28
)
http://code.google.com/intl/ja/apis/maps/
今は実際の位置を出すわけにはいかないため(自宅なんで (^_^;;)、後々公共の場を使って測定に
いく予定です。
場所にもよるかもしれませんが、実際の誤差としては 5 メートル以内というところですかね。
NMEA-0183のフォーマットから取得できるのは、m 度 n 分の情報ですのでこれを Google Map に 理解できるように「m + (n / 60)」の緯度・経度に計算して当てはめます。
JavaScriptでは、定型的な記載を省いたとして // 地図をあらわす基本オブジェクトの生成
var map = new GMap2(document.getElementById("map_canvas")); // マップの種類
map.setMapType(G_NORMAL_MAP); // 緯度経度の指定
var point = new GLatLng( 緯度 , 経度 ); // 表示地図の中心位置指定(第二引数は拡大率) map.setCenter(point, 18); // マーカーの表示 map.addOverlay(new GMarker(point)); で OK ですね。 また、「GPolyline」クラスにて複数の緯度経度をつなげた線も引くことができました。これで、歩 いた位置をラインで結んでいって軌跡を表示してみる、なんてことに使えそうです。
Google Mapでは、地図に表示するマーカーやラインは「Overlay」というもので表現され、このほ
かにポリゴン、情報ウィンドウ(ふき出しのようなもの)、なども表示できるようです。 これは Google Map とは関係はないですが、GPS からは「平均海水面からのアンテナ高度」という のも取得できていますので、たとえば道路と建物の 2 階で測定した場合の高さはどうなるのか、な ども検証したいところです。ですが、高さはすぐに 1 メートルの差が出たりちょっと不安定かも しれません。
大阪のアヒルちゃんリターンズ(
2009/11/24
)
年末の 2009/12/12 ∼ 2009/12/25 に八軒家浜に再び巨大アヒルが帰ってくるとのこと。 http://www.namura.cc/ahiru/ 前回見逃したので、今度は見に行きたい!!後一週間遅ければ私も帰郷するので会えたのです が、、、。早めに帰って見に行こうかどうしようか。そもそも、今年は帰れるだろうか、、、。 いずれにせよ、そろそろ新幹線のチケットを買う準備をしないといかんです。後、年賀状と。続・
GPS
レシーバ購入(
2009/11/23
)
GT-730F/Lのドライバを「http://www.canmore.com.tw/」よりダウンロードすると、XP/Vista 以外で も Mac OS X/Linux のドライバも同梱されていました。
今回は MacBook 上の Vista にてインストールです。「USB_Driver(Vista).exe」を実行すると、
PL-2303 Driverというのが出ますのでインストールを開始。
しかし、文字化けするので手探りで 3 つめを選択して進めると、一瞬にしてインストール画面が 閉じました。
本当にインストールが完了しているのか、デバイスマネージャより「Prolific USB-to-Serial Comm
Port(COM3)」という表示があるのを確認。COM3 となっていた場合はポート番号 3 の使用となり ます。
これをダブルクリックして、ポート設定の BPS を 38400 にすると、私の過去作っていたテストプ ログラムは動作しました。
自宅からだと、室内でも衛星数が 8 個ゲットできました。さすが埼玉。さえぎるものがないのは いいねぇ。今度、オフィス付近で歩いて計測してみよう。
ということで、MacBook 上の Vista にて秋月電子で売っていた GPS レシーバ「GT-730F/L」は快適 に動作しました。Mac のドライバもあるので Snow Leopard でもできそうですね。
3200 円の投資でこれが得られれば研究の始まりとしては安いもんです。これでいろいろ材料が そろいました。後は、土日で研究を進めていこう。
GPS
レシーバ購入(
2009/11/23
)
結局秋月電子にて GPS レシーバである「GPS USB DONGLE」(GT-730F/L) というのを購入しまし た。 http://akizukidenshi.com/catalog/g/gM-02619/ Vistaにも対応とうたってたので。ちゃんと NMEA-0813 です。 以前購入したものが「GT-730F」なので結局同じメーカーだったのかな。なんか別会社だったよう な気もしたのですが、まったく同じ形状で型番だけ違ってました。 製造は台湾の会社だそうです。 http://www.canmore.com.tw/ ところで、ドライバの CD、シングル CD サイズなのは勘弁してほしかったです。MacBook にシン グル CD を入れたら取り出せなくなって焦りましたよ (^_^;;。苦肉の策で、Mac起動時にマウスダウンしながら起動させて CD を出口付近まで移動させる、後は真下に振って取り出し口で引っ張 りだせるまで移動させてつまんで取り出しました。 いや∼、このまま CD が入ったままになるかと思いました。ということで、シングル CD を MacBookに突っ込まないようにしよう、という教訓を得ました。
GPS
レシーバを探しに(
2009/11/22
)
先日秋葉原に行ってきたのですが、大型店では隅々まで見たつもりですが GPS レシーバーを探し てもおいていなかったです。半年くらい前は棚の 1/4 くらいのスペースでこじんまりとあったと 思ったのですが、、。 やっぱり秋月電子でバルクのを買うのがよいのかなぁ。過去買った GPS レシーバが Vista で動け ばよいのですが、ドライバが古いまま更新されないため使えてないです。 以下の動画が、秋月の GPS レシーバで測定して GoogleMap 上にポインティングしたものみたい (Mac で)。 http://www.youtube.com/watch?v=HOSJYahdiU0 過去実験した感じではこの動画のように 1 秒間隔で位置情報を取得、とかはなんとかできてまし たのでほぼリアルタイムでの地図とのマッピングは可ではありますね。個人的に誤差がどれく らいあるのか計測したいなぁと。後、地図と合わせる以外の遊べる用途に期待を持ってます。 GPSレシーバでは絶対位置をそれなりに得ることができればとりあえずいいかと思っていて、相 対的な補正をかける手段があればもっと面白いことができないだろうか。でも、GPS だと室内が 弱点なので絶対位置・向きで言えば WiFi や電子コンパスやらと絡めて複合的に使うのがいいんで すかね。 個人的にはシンプルにしたいので、GPS +画像処理(つまりはカメラからの映像)でそれができ ないかなと。、、、時間が取れないのでなかなか研究が進んでいないのもありますが (^_^;;。 でも、野外にて持ち歩くとなるとノート PC はちょっと大きすぎますね、というか不審者になりま すね (^_^;;。ものすごいそれをやりたいのですけど、、、。 リアルタイムである必要はなく、例えば写真を撮ったそのときの GPS 情報と画像解析+無線通信 でその絶対位置と向きにまつわる情報をオーバーラップさせるという、東のエデンそのままのこ とはたぶん今の世にある技術で可能だとは思ってます。 例えば現実にある看板をカメラで取ってデジタルな落書きをすると、カメラで取った写真を通し てその落書き情報を共有できるとか。特定の撮影ポイントでは心霊写真のように情報が出ると いう、宝探しみたいで面白いかもしれない。誰かやってほしいですね∼∼。そんな研究時間がほ しいです(あくまでも、あくまでも趣味でそれをしたいだけですが)。メーラー(
2009/11/16
)
メールは、Mac 標準の Apple Mail を使っているのですが、やはり大量のメールを削除したら時間 がかかってしまいます。2000 通くらいの迷惑メールを消していたのですが 30 分くらいカリカリ なにかやってる、、、。待っていたら終了したので、ハングったわけではないようです。インデッ クスを作ってるんでしょうけど。。。 メールはやっぱり Windows 環境に戻そうかなぁ。移行が面倒というのがあり、なかなか重い腰を 上げれずにいます。
SiRF starIII/LP
(
2009/11/10
)
以前、秋月電子で購入した GPS レシーバが Vista 環境ではうんともすんとも言わなくなったので、 新しい GPS でいいのがないか検索中。 アイオーデータの「USBGPS2/SMD9」がいいのかな? http://www.iodata.jp/product/mobile/gps/usbgps2smd9/index.htm GPS受信用チップセットが「SiRF starIII/LP」となっているのですが、残念ながら通信プロトコル が明記されていないです。あくまでもプログラム(という名の遊び)で使うためのものですので これが分からないとつらいところ。SiRF社というのは、アメリカの SiRF Technology という会社で以下の HP のようです。 http://www.sirf.com/ ですが、該当する GPS の情報がどこにあるのかよく分からない、、、、。もうバージョンアップしま くっていて、starIII/LP は過去のものになってるのかもしれない。しかし、HP の雰囲気からザイリ ンクスっぽいなぁと。 他のサイトにて「starIII/LP」を採用している GPS 製品を見ると「NMEA-0183」と書いているのが 多かったです。これなら分かりやすいのでいいのですが、はたしてアイオーデータのはプログラ ムで衛星情報をゲットできるかどうか、、、。 関係ないですが、昔の PC-98 時代のアイオーデータの製品の話をひとつ。 昔々、アイオーデータやメルコは、グラフィックアクセラレータとして 65536 色(後に 1677 万色) を出すボードを出していたことがありました。今みたいに nVIDIA だの ATI だの言われるよりも 前です。グラフィックといえば「フレームバッファ」なんて言われた時代に 5 万円以下の手に入 りやすい価格帯でした。でも、速度をアップさせるものじゃなくてあくまでも発色をハーフカ ラーやフルカラーにする、解像度を 800x600 にするという意味での「アクセラレータ」です。速 度はお世辞にも速くはなかったですねぇ。 当時最大 4096 色中 16 色の PC-98 としてはかなりの魅力でして、私もそのボードを購入したこと があります。ですが、DirectX/GameSDK とかはない時代ですので(というか Windows すら 3.1 以
前だったかな)当然ながらメーカーの独自 API でボードをいじれたんですね。分かる人は「ああ」 と思われる「MS-DOS 3.3C」が神バージョンだったあのころ。 アイオーデータの場合は、C 言語の API(というか BIOS)仕様と説明書がボードについていて、プ ログラマ(当時私は学生)にとっては非常に胸躍る製品だったんです。なんせ、操れば 65536 色 ハーフカラーを PC-98 で表現できたんですから。でも、各メーカーが独自仕様だったので結局そ れを使ったゲームや製品はあまり出てなかったように記憶しています。統一規格が出る前です からね。OpenGL はその当時あったとは思いますが、高嶺の花だったです、たしか。 で、何がいいたいかというと当時は結構ハード製品にプログラマ向けのドキュメントや仕様書が オープンについていたという点。GPS も私から見るとまだ閉じた環境に思えますので、ぜひ製品 にプログラマ向けの情報をつけてほしいなぁ、とちらっと思いました。なんとな∼く、創世記(過 渡期)の楽しみが GPS には感じるんだよなぁ。
ぬいぐるみ(
2009/11/07
)
なかなか忙しくて更新できてませんでした。数ヶ月プログラムと関係ない駄文ですが今月もこ んな感じになりそうです。 秋葉原行ってきて、ミクのぬいぐるみがあったので購入。思ったよりも大きかったです。フィギュアは持ってないのですが、これは(フィギュアじゃない けど)自分の中では初キャラもの購入かな?後、CD で初音ミクを使ったものが増えてました ねぇ。
秋葉原探索の目的としては、「only my railgun」の CD(とある科学の超電磁砲の OP)を買おうと
してたのですが軒並み売り切れでした。先月耳コピして深夜のハイテンションの中アップして たのはこの曲なんですが、発売前にコピー完了させたかったなぁ。ということで、放映期間中に 完成させよう、うん。本当は、第一話のエンディング(が、次回から OP になってこれが only my railgunになります)を見たときに、即コピーしてみようと思ったのですが時間の都合でどんどん 後ろに。いずれにせよ、自分が気に入った曲が人気があったとわかって、一安心(?)です。物 欲センサーは衰えてなかったということで。