none
getCurrentPositionで取得する位置情報について RRS feed

  • 質問

  • 初歩的な質問で済みません。

    getCurrentPositionで取得する位置情報ですが、自宅の無線接続では数メートルの誤差で出てくるにも関わらず、職場の固定IP環境では位置が皇居(!)になってしまい悩んでおります。

    位置を取得するメカニズム等を解説したドキュメント等はどこかにないでしょうか?

    2011年12月6日 13:36

すべての返信

  •  ドキュメントを探すまでもなく、何らかの位置を測定できる機能を持った機器がなければ、位置情報を取得することはできないと思いますが?

     携帯情報機器の大部分は、GPS 機能を有しています。無線公衆ネットワークに繋がっている場合は、無線公衆ネットワークの親機から測定できるようです。これは、Android 端末が徘徊して、一般家庭の Wi-Fi を含む、Wi-Fi 中継器の Mac アドレスと、そのアドレスを検出した位置情報を関連付けることで出来ます(情報ソース:「Wi-FiのMACアドレスはもはや住所と考えるしかない」高木浩光@自宅の日記)。すると、位置測定機能を持っておらず、データベースに接続元の Mac アドレスが登録されていない接続ポイントを使用している場合は、位置情報を計測できないということになりませんか。

    「getcurrentposition ie」で検索し、Geolocation API というものを知り、「geolocation api」で検索した結果より。

    1. Geolocation の利用
      Firefox 3.5 では収集した WiFi アクセスポイントの情報に基づき、 Google の位置情報サービスを利用して現在位置を特定します。 Firefox 3.5 と Google 間の通信においては、WiFi アクセスポイント情報、アクセストークン(2週間有効なクッキーのようなもの)、ユーザーのIPアドレスが送信されます。
    2. Gears API Geolocation AP
      The Geolocation API provides the best estimate of the user's position using a number of sources (called location providers). These providers may be onboard (GPS for example) or server-based (a network location provider).
    3. Geolocation API について
      Windows Internet Explorer 9 には、Wi-Fi 位置データと インターネット プロトコル (IP) アドレス情報に基づいて、Windows Internet Explorer が実行されているコンピューターやデバイスの経度および緯度を特定するロケーション プロバイダーが組み込まれています。

    Jitta@わんくま同盟
    • 編集済み Jitta 2011年12月7日 14:18
    2011年12月7日 14:16
  • 済みません。趣旨が上手く伝わらなかったようですが、知りたいのは"number of sources"の具体的な内容と、それを組み合わせるアルゴリズムです。どのような条件の時、どの程度の誤差で具体的にどの場所が報告されるか分からないと、プログラムからは安心して利用できないので。

    実際に試してみると予想以上に精度が高い場合と、予想以上に精度が低い場合があって、なぜそうなるのかも知りたいところです。

    どこの誰が運営するどういうサーバのどのような情報に依存しているのかも気になります。

     

    2011年12月7日 15:39
  • Internet Explorer の場合、Geolocation API の内部実装は当然プロプライエタリな部分ですから、具体的なロジックやアルゴリズムは公開されないと思います。どのような位置情報サービスと情報をやり取りしているのかは、ネットワーク キャプチャなどで確認できるかもしれません。

    興味があれば Firefox や Chromium のソースを読めば、Geolocation API の内部実装がわかると思います。


    hebikuzure
    2011年12月8日 8:43
    モデレータ
  • すみません。質問を変えます。

    IE9とWP7.5の位置情報はMicrosoft's Orion geolocation databaseというサービスに依存しているようです。ホスト名はinference.location.live.netのようです。IE9はこのサービスとhttps通信を行って情報を取得しているようです。

    Orionという名前は以下のページにも出てきて、特に秘密ではないように思えます。

    http://blogs.msdn.com/b/hirosho/archive/2009/11/29/windows-7-sensor-location-platform-4.aspx

    GPS以外の位置特定に使用する情報ソースの詳細は割と詳しくWP7.5の設定の位置情報のプライバシーの文書に書いてありました。

    ここで行いたい質問は以下の通りです。

    • Orionの情報はどこまで公開か?
    • Orionの詳細に関する文書はあるか?
    • Orionはどの程度の信頼性と精度があるか。他サービスと比較したときの品質はどうか?
    • 信頼性や精度はこの先、どの程度維持される見込みであるか

    たぶん、Orionが分かればIE9の挙動も分かるような気がします。

     

    2011年12月9日 2:41
  • 誤差(精度)の値ならposition.coords.accuracyで取得できるようですよ。

    ・・・確かに都市部で精度が5kmと出るようですと、アプリケーションによっては難しいかもしれませんね。 
    2011年12月11日 3:39
  • ありがとうございます。

    accuracyは確かにW3Cのスペックにあるプロパティですね。

    しかし、実際に試したところ、以下のような結果でした。

    • IE9 1609
    • Firefox 166000

    単位はメートルだとすると、IE9は皇居を10km以上離れた皇居を表示しているにしては数値が小さすぎます。

    Firefoxは 、皇居よりももっと遠い新富町付近を表示しますが、166kmとすると桁違いに値が大きすぎます。たまたま偶然、近い場所だっただけでしょうか?

    このような数値の解釈で良いのでしょうか?

     

    2011年12月11日 5:41
  • 私も今日知ったのですが、accuracyの単位はメートルのようですね。
     
    私の場合は、皇居から7-8km前後でaccuracyは4828だったので、
    なんとなく円の半径という解釈なら問題ないかなと思ってしまいました。
    正確には、「最大accuracyのメートルずれている場合がある」という解釈の方が良いのでしょうか。
     
    enableHighAccuracyオプションをtrueにすることで精度が向上しないかを確認しましたが、変化は見られませんでした。
    (GPSのようなものが入っていないと意味がなさそう!?)
     
    The accuracy and altitudeAccuracy values returned by an implementation should correspond to a 95% confidence level. 
    W3Cに上の記述があるのですが、95%の信頼度とは統計用語的な話なのでしょうか?
     
    現在の環境では、位置センサーはインストールされていないため、IPアドレスで判断していると思い、
    動作確認環境であるlocalhostのサイトと、インターネット上のサイトとで、
    getCurrentPositionを使用した際に、得られる精度の値が変わらないか気になりましたが、
    モーグリのツイートキャッチでも開始地点は皇居のままでした。
    (何に使っているかは分かりませんが。今週金曜日に分かるかも?。例が悪くてすみません。)
     
    各ブラウザでaccuracyと、場所は次のようになりました。括弧内がgooglemapsで表示される場所です。
     
    IE9: 4828 (皇居の中)
    Chrome: 37 (すぐそば)
    FireFox: 166000 (千代田区役所:皇居の隣)
    2011年12月11日 11:49
  • 他の用事が多く、返事が遅くなって済みません。今も本当は手が離せない仕事があるのはさておき。

    その後、更に調べたところ、accuracyの値は以下のような結果でした。

    各種ケースを総合すると、accuracyの値は極端に大きすぎるケースと極端に小さすぎるケースがあるようです。サンプル事例が少ないので、95%の範疇に含まれないレアケースなのかは良く分かりません。

    やはり、どのような根拠でaccuracyの値が決められているのか、ぜひ知りたいところです。

    あまり的確なお返事ができなくて済みません。

     

    自宅の無線LANだとaccuracyの値は、

    • IE9 350 ほぼ正確(数メートル以内)
    • Firefox 33 100mぐらいずれている
    • Chrome 33 Firefoxとほぼ同じ

     

    2011年12月14日 6:54
  • 無線 LAN は、Wi-Fi から位置がとれます。というか、あなたの家の Wi-Fi 親機の Mac アドレスと位置情報が収集され、登録されているわけです。有線 LAN の PC に GPS 等の位置情報を取得できる機器がつながっているなら、それから精度の高い情報がとれます。たとえば家庭内 LAN 等のように、有線と無線が入り交じっていれば、もしかしたら高い精度で位置がとれるかもしれません。そういうものがなければ、IP アドレスから情報を検索します。グローバル IP アドレスは、おおよその住所も公開されていますから、そこから情報をとります。私は兵庫県姫路市からアクセスしていますが、兵庫県神戸市が表示されます。
    Jitta@わんくま同盟
    2011年12月14日 9:13
  • 無線 LAN は、Wi-Fi から位置がとれます。というか、あなたの家の Wi-Fi 親機の Mac アドレスと位置情報が収集され、登録されているわけです。

    横から申し訳ありません。
     
    (; Д)゚ ゚ 
     
    となると、家庭内の場合は、バッファローの無線LANをデフォルト設定で使っていると、Geolocation APIの精度の値が2桁台に向上しやすいのですね。 (GPSがなくても)
    で、以下からMACアドレスの情報を消すと、IE9のGeolocation APIの位置情報が粗くなりそうですね。(未確認)
    https://www.windowsphone.com/ja-JP/locationblocklist?wa=wsignin1.0
     
    無理を押して、あえて書くと、ロジックは不明ですが、
    GPS、またはかき集めたWiFi位置情報を元に精度や情報の信頼性や新鮮度の高い方を選択し、ダメならIPアドレスから特定と言った感じでしょうか。
    精度100-30前後のものはWiFiなのでしょうか。350はなんでしょう? 
     
    EMobileで接続した場合は、FireFoxで渋谷区役所になりました。
    現時点のFireFoxで166000が出る場合は測定できなかったを意味する固定値のように思えました。
    位置情報として区役所が出てしまうパターンは、IPアドレスを元に、契約しているプロバイダ等によるイメージでしょうか。

     
    # ブラウザを変えてみたところ、モーグリのTweetキャッチの開始地点は現在位置から決まるように思えました。

    2011年12月14日 16:03
  • となると、家庭内の場合は、バッファローの無線LANをデフォルト設定で使っていると、Geolocation APIの精度の値が2桁台に向上しやすいのですね。 (GPSがなくても)

    精度100-30前後のものはWiFiなのでしょうか。350はなんでしょう?

    “精度”を、誰が、どの様に測れるのでしょう?せいぜい、実験的にわかっている GPS の精度を出すしかないと思うのですけど。

    それから、「デフォルト設定で」とは、どういうことを意図していらっしゃいますか?「_nomap を付けていない」という意味でしたら、それをオプトアウトとして扱うのは Google 他数社なので、今のところ、マイクロソフト他の所では意味がないと思います。ステルス設定にしても、それは人間に見せないというだけで、機械には見えていますよね?

    高木氏のブログから想像すると、公道を何らかの機械を持って移動して、Mac アドレスとそれを観測した位置情報が集めていると考えられます。すると、複数の地点で同じ Mac アドレスが観測されたなら、その地点間の中心を「そのものの位置」とし、観測した地点間の距離の平均を“精度”として良いかもしれません。しかしそれは、「示した地点から、これだけの距離の範囲内にあなたは居ます」ではないはずです。せいぜい、「示した地点からこれこれの距離の範囲で、位置を特定するための何か(Wi-Fi 機器の Mac アドレス)を確認できた」という精度ではないでしょうか。

    自宅で使っている無線 LAN は、部屋の戸を閉めると繋がらなくなります。…ん~、ノート PC 内蔵は繋がらなくなるけど、XBOX360 内蔵のは繋がる。子どもたちが何も言わないので、Nintendo DS もつながっているっぽい。一階に下りると、Nintendo DS は繋がらない。このことから、無線親機が置いてある場所と観測地点の間にどの様な障害物があるか、観測にどの様な機器を用いているかによって、精度と言っているものの精度が変わると思います。また、GPS そのものの精度がどの様に扱われているのか気になります。
    場所を確定して位置情報を登録するのではなく、観測できた地点から「ここにあるだろうと思われる地点」というものを割り出すのですから、精度が30だろうが350だろうが、GPS 機能は付いていないけど Wi-Fi 親機を検出する機能が付いている機器でやってみたなら、Wi-Fi を使った位置検索でしょう。


    そういうわけで、autumn009さんが、どの様な理由で精度を気にしていらっしゃるのか、気になります。有線 LAN からアクセスすることを想定していらっしゃるのなら、残念ながら「使えない」と思った方がいいでしょう。

    そもそも、私は GPS 機能付き以外で精度の高い位置情報が取れるわけがないと考えています。autumn009さんは、そうではないようです。この考え方の違いが、出てきた情報に対して疑問を感じるかどうかなのかもしれませんね。たとえば、先日、新幹線に乗ったのですが、東海道線のエリアでは無線 LAN サービスがあるのですね。移動する新幹線の中では、どこが表示されるのでしょうね。MAC アドレスは固定していましたけど。


    Jitta@わんくま同盟
    • 編集済み Jitta 2011年12月17日 13:56
    2011年12月17日 13:55
  • そもそもの話になりますが。

    私がなぜ精度を気にするのか、について説明しておきます。

    位置情報を利用したサービスを作成した場合、必ず『そのサービスを利用した場合、私はどの程度の品質で情報を受け取ることができますか?』という質問がお客様から出てくる可能性が発生します。

    その際、返答できないのは好ましくありません。

     

    だから、行ったことが無い未知の場所に住んでいる知らない構成のシステムを使用している未知の他人がどの程度の精度で位置情報を得られるかが知りたいわけです。その際、「もしあなたがXXであればXXとなる」という条件を提示できれば十分です。けして、「私の無線LANで精度が高い理由」を知りたいわけではありません。

    2011年12月18日 1:56
  • 「精度の信頼性」や、実際測定したときに感じる「精度の値のばらつきの大きさ」は少し気になる部分ではありますね。
    # 個人的には、w3cにあるレベルで良いとは思いましたが、問われる信頼性レベルによるかもしれません。
     
    GPS以外の位置特定に使用する情報ソースの詳細は割と詳しくWP7.5の設定の位置情報のプライバシーの文書に書いてありました。
    以下のことですね。
     
    MACアドレスの他に、信号強度、電波の種類(802.11nなど)も収集しているのですね。
     
    よく分からないのですが、Orion?というのは”日本”の情報も保持しているのでしょうか?
    現時点の日本における、IE9の位置情報やその信頼性の取得先は実質サードパーティになったりしていないでしょうか?
    というのも直接は、関係しないかもしれませんが、
    WiFiの情報を収集する際に「管理ドライブ」(車両の走行)を行うとあるのですが、
    同じ仕組みで情報収集すると思われる、bingのstreetsideというストリートビュー機能も日本ではまだのようなのと、
    他にも、サードパーティ製のNokiaの測位データベースなどにも照会とありますが、
    日本では、たとえ例だとしても違和感を感じるのです。(それともこれから何かあるのでしょうか)
     
    リンク先の情報は日本には当てはまらない記述が多い気がしてならないのです。
    もしそうなら、(少なくとも)データの収集方式に関しては、リンク先とは異なってくる可能性がありそうだと考えております。
     
    条件が提示出来ればよいとのことですが、
    測定の際の「電波状況(周囲含む?)」と、測定の際の「サーバ側の保持データ」によって結果が変わると思っているため、
    これらも条件として考慮した方がよいと考えますが、いかがでしょう。
    時によって変わりにくいものが良いとは思っていますが、どういった想定でしょうか。

    • 編集済み (´・ω・`) 2011年12月19日 16:04 もっと伝わるように表現に修正
    2011年12月18日 13:50
  • お返事ありがとうございます。

    IE9が、Orionのサーバとされるinference.location.live.netに対して、httpsで通信しているのは確認しています。しかし、その先は良く分かりません。

    そのサーバが、日本に対しては他の方法で得た情報を持っていたり、他のサービスへのプロキシとして機能している可能性は十分にあります。

    その先の話は、いろいろ思うところもありますが、何も確信が無いので話はここまでにしておきます。

     

    2011年12月20日 0:39
  • まったくの余談ですみませんが。

    位置をチェックできるサイトは多いのですが、accuracyを数値でチェックできるサイトはあまり無いようなので、accuracyの簡易チェッカーを作りました。(といっても、自分で使っていたHTMLファイルを少し化粧直ししただけですが)

    http://www.piedey.co.jp/location/

    根拠の無い煽り文句→あなたのブラウザで、ジオロケーションAPIがどの程度の精度で機能するか予測して、このページにアクセスしてみよう! きっと、予測通りの値になる場合もあるが、予測を裏切る場合もあると思うぞ!

    興味深い数字が出たらぜひ教えてください。(当方でデータは一切記録していません)

    IE9とChromeで動作確認済みです。

     

    2011年12月20日 4:26
  • 位置情報を利用したサービスを作成した場合、必ず『そのサービスを利用した場合、私はどの程度の品質で情報を受け取ることができますか?』という質問がお客様から出てくる可能性が発生します。_
    その際、返答できないのは好ましくありません。

    その問いに対する返答を作るための材料は、既に示していると思います。同様の質問を受けた場合の、技術者である私の返答は、こんな感じでしょうか。
    「GPS 機能が付いている機器を使っている場合は、GPS の精度です。機器の性能によって、十数メートルから数百メートルの誤差がありえます。上空が開けていて、電話や公衆無線 LAN の電波状態も良いところなら、数メートルの誤差で使用できるでしょう。(この返答をする理由については、WikiPedia で GPS を参照して頂ければわかると思います)
    GPS 機能はないが、無線 LAN 機能が付いた機器を使っている場合は、場所によります。しかし、このシステムが使えるということは公衆無線 LAN が繋がっているという状態なので、その場合は高い精度で計測できるでしょう。ただ、無線 LAN での位置測定は、一般家庭から漏れている情報を使用しているため、プライバシーの問題があると言われています。今後、精度が悪くなる可能性があります。公衆無線 LAN が繋がっている状態なら大きな誤差はないでしょうが、自宅で計測する場合は、誤差が大きくなることも考えられます。また、公衆無線 LAN といっても、鉄道車内は別です。(この返答をする理由については、以前に紹介した高木氏の日記を見て頂ければよいと思います)
    どちらにも当てはまらない場合は、どこが表示されても不思議ではありません。(この返答をする理由については、既に示したと思います)」

    そういえば、1990年頃、九州方面の県警から「パトカーの位置を地図上に表示する。この時、実際に走っている地点と計測できる地点には誤差があるので、「実際に走っていると思われる道路」をブリンクさせる」というシステムについて、問い合わせがありました。20年経った今なら実現されていますが、当時は先輩と「こんなの無理だよ。何十台ものパトカーの位置表示だけでひとつのシステムになるよ」と話をしていました。あと10年もすれば、全ての機器に GPS と加速度センサーが付いて、高精度で現在位置の計測が出来るようになっているかもしれませんね。


    Jitta@わんくま同盟
    2012年1月4日 12:07