iPhone4GPSの正確性とGoogle Mapas API v3での表示、そしてMySQLには?

この記事は約2分で読めます。
記事内に広告が含まれています。

iPhoneGPS精度

実は初めてiPhoneで位置情報をGPSで取得し、それを投稿するシステムを作った。投稿後はMySQLというデータベースに格納され上記のようにGoogle Masp API v3を使って位置情報を登録した地点にカエルマークを表示しています。

これが、こんなに精度が良いのか!と思われたのは、この交差点の角。
日本工学院の正門前の交差点でやってみたんですが、2〜3mの誤差もありそうな気がしますが、いい線行っていると思います。

実は内部的にはiPhoneから取得できる緯度経度の小数点以下6桁から下は切っています。というか、小数点以下の桁数が異常にあって、これは誤差範囲だからどちらにしても切ってしまって良いのだろうかと思っています。


なぜならば、少し根拠が違うかもしれませんが、

Google マップと PHP/MySQL を使用 – Google Maps API ファミリー – Google Codeより引用:
Google マップの現在のズーム機能では、小数点以下 6 桁までの精度しか必要ありません。作成するテーブルの保存に必要な容量を最小限に抑えるため、lat 属性と lng 属性をサイズ(10,6)の浮動小数点数として指定できます。これにより、小数点以下 6 桁と整数部 4 桁(たとえば -123.456789 度)をそのフィールドで保存できます。

という話がありました。これは2007年4月の記事ですが、もっと新しい記事でも同じような表現がありました。

PHP/MySQL と Google Maps API for Flash の使用 – Google Maps API ファミリー – Google Code
MySQL テーブルの作成時には、lat 属性と lng 属性に特に注意することをおすすめします。Google マップの現在のズーム機能では、小数点以下 6 桁までの精度しか必要ありません。作成するテーブルの保存に必要な容量を最小限に抑えるため、lat 属性と lng 属性をサイズ(10,6)の浮動小数点数として指定できます。これにより、小数点以下 6 桁と整数部 4 桁(たとえば -123.456789 度)をそのフィールドで保存できます。

これは2008年9月のもので、同じように「小数点以下 6 桁までの精度しか必要ありません。」とのこと。

じゃあ、それでいいかーってことで、MySQLのテーブル構造も変えました。

MySQL設定

結論から言えば、必要な桁数だけのデータベースに格納するということで、decimal(10,6)という形で緯度経度の格納場所を指定してやれば良いかと思います。

コメント

  1. roku より:

    質問がありコメントします。
    楽天、ヤフーショッピング、アマゾンなどを一括検索して表示するアフィリエイトをしたいと検索していたところ、貴ブログの2009 年 1 月 29 日にたどり着きました。コメントのやりとりの中で、「楽天APIとバリューコマースAPIとのコラボ」というのは検索結果が楽天とバリュコマ、つまり楽天とヤフーショッピングとAmazon・・・などの検索結果をごちゃまぜにして表示する、というイメージで良いでしょうか?」という記述があります。正にそういう機能が欲しいのですが、何か良い方法はないでしょうか?
    素人的な質問で恐縮です。アドバイス頂けましたら幸いです。

タイトルとURLをコピーしました