Google Mapの各ズームレベルごとのピクセル数と距離の関係

追記10.12.13

amay007さまのコメントで、以下の関係は緯度が変わると成り立たないことがわかりました。

1年以上前の記事なので正確な位置は覚えていないのですが、神奈川県厚木市付近の地図を使って計算していたことは覚えています。

そこで、先ほどGoogle Mapで神奈川県厚木市役所付近沖縄県沖縄市役所付近のフルズーム状態(Lv19)の縮尺表示のキャプチャーを取ってピクセル数を見てみました。

厚木市役所付近 - 86px
沖縄市役所付近 - 79px

つまり、以下の関係は神奈川県厚木市付近でのみ(しかも大体)成り立つということですm(_ _)m

ということは、さらに相当面倒なことに・・・

例えば、この神奈川のテーブルを基準にして、沖縄や北海道との差分を求めて、神奈川からの緯度の変位によって補正をかける、とか?

いやぁ、参りました(;´д`)

あれから1年以上経っているいるので、何か便利なAPIが出来ているかもしれません。今一度調べてみる必要があると思います。

----

Google Mapの各ズームレベルごとに縮尺表示のキャプチャーを取り、縮尺のピクセル数を調べ、ピクセル数と距離の関係を求めた。

API的に何かいい方法はないかと色々探したが、結局見つからなかったのでこんな目に。
あ〜無駄に疲れるo(´^`)o ウー

もし同じことをしようとしている人がいたら、これ使ってください。こんな事をするのは自分1人で十分。人類のエネルギーの無駄ですから。

Lv0 : 10000km = 10,000,000m,  81pix, 123,456.79012 m/pix, 0.00001 pix/m
Lv1 :  5000km =  5,000,000m,  81pix,  61,728.39506 m/pix, 0.00002 pix/m
Lv2 :  2000km =  2,000,000m,  66pix,  30,303.03030 m/pix, 0.00003 pix/m
Lv3 :  1000km =  1,000,000m,  66pix,  15,151.51515 m/pix, 0.00007 pix/m
Lv4 :   500km =    500,000m,  66pix,   7,575.75758 m/pix, 0.00013 pix/m
Lv5 :   200km =    200,000m,  53pix,   3,773.58491 m/pix, 0.00027 pix/m
Lv6 :   200km =    200,000m, 103pix,   1,941.74757 m/pix, 0.00052 pix/m
Lv7 :   100km =    100,000m, 103pix,     970.87379 m/pix, 0.00103 pix/m
Lv8 :    50km =     50,000m, 103pix,     485.43689 m/pix, 0.00206 pix/m
Lv9 :    20km =     20,000m,  84pix,     238.09524 m/pix, 0.00420 pix/m
Lv10:    10km =     10,000m,  84pix,     119.04762 m/pix, 0.00840 pix/m
Lv11:     5km =      5,000m,  84pix,      59.52381 m/pix, 0.01680 pix/m
Lv12:     2km =      2,000m,  67pix,      29.85075 m/pix, 0.02350 pix/m
Lv13:     1km =      1,000m,  67pix,      14.92537 m/pix, 0.06700 pix/m
Lv14:    500m =        500m,  67pix,       7.46269 m/pix, 0.13400 pix/m
Lv15:    200m =        200m,  54pix,       3.70370 m/pix, 0.27000 pix/m
Lv16:    200m =        200m, 106pix,       1.88679 m/pix, 0.53000 pix/m
Lv17:    100m =        100m, 106pix,       0.94340 m/pix, 1.06000 pix/m
Lv18:     50m =         50m, 106pix,       0.47170 m/pix, 2.12000 pix/m
Lv19:     20m =         20m,  85pix,       0.23529 m/pix, 4.20000 pix/m

コメント

  1. とても助かりました

    返信削除
  2. ありがとうございます

    返信削除
  3. ありがとうございます。

    返信削除
  4. 久しぶりに見たら、皆様のお役に立っているようでうれしいです(^^)

    返信削除
  5. 絶対やっているひとがいるとおもったら、いました!
    ありがとうございます。

    返信削除
  6. 素晴らしい!

    返信削除
  7. 有難う御座います!助かりました。
    どんな緯度でも上記関係が成り立つのでしょうか?…という疑問が浮かびました。いずれ調べてみたいと思います(日本国内で大体あってれば問題ないんですけど)。

    返信削除
  8. geohashでもみられる、歪みというか誤差というか、そういうことをおっしゃっているのでしょうか・・・

    自分は単に縮尺表示のピクセル数と距離の関係を求めただけなので、正直それ以上のことはわかりません。

    お役に立てればよいのですが。

    返信削除
  9. とても助かりました
    ありがとうございます

    返信削除
  10. ありがとうございます、助かりました。

    返信削除
  11. ありがとうございます!

    返信削除
  12. ありがとうございます!

    返信削除
  13. 2010年8月5日12:28 さんが仰られている事ですが…
    GoogleMap はメルカトル図法の地図なので、北へ行く程1pix辺りの距離(m)が大きくなっていくハズです。
    ちょっと調べた所、日本でも北海道と沖縄では、同じズームレベルでも縮尺表示の大きさが異なりますね。
    こちらの情報は日本のどの地点で調べられたのでしょうか?
    参考までにお知らせいただけましたら幸いです。

    返信削除
  14. amay077さま、仰る通りでした。

    本文にも追記しましたが、計算に使った地図の場所は神奈川県厚木市付近です。

    これは相当面倒なことになりますね。いやはや、参りました。

    コメントして頂いてありがとうございました。大変勉強になりました。

    返信削除
  15. はじめまして、調査どうもありがとうございました。

    Google Maps の仕様を元に計算してみたところ

    (2πR・cosθ) / (256 x 2^n) km/px

    R : 6378.137 km (地球の赤道半径)
    θ : 緯度
    n : Zoom レベル (2^n は 2のn乗)

    で計算できるようです。

    このサイトで公表していただいているデータで検算させていただいたところ、だいたい 3% 位の誤差だったのでたぶん正しいだろうと確信が持てました。

    重ね重ね調査ありがとうございました。

    返信削除
  16. こちらに、詳しいことを載せておきましたので、よろしかったら参考にしてください

    http://hondou.homedns.org/pukiwiki/index.php?Java%20Google%20Maps%20%A4%AB%A4%E9%C3%CF%BF%DE%B2%E8%C1%FC%A4%F2%BC%E8%C6%C0%A4%B9%A4%EB

    返信削除
    返信
    1. hondouさん

      はじめまして。a-geh-aと申します。
      これほど月日が経ってしまっているので大変恐縮なのですが質問があります。
      そのページを見させていただいたのですが、
       r(θ)=Rcosθ
      と表現出来るのはなぜですが?
      地球が円ならば確かに成り立つと思うのですが…

      おそらくそのあたりの間違いが最終的な誤差に繋がっているものと推測されます。。。

      削除
  17. うぉぉ!そんな式で計算できるのですね。すばらしいです。

    微力ながらお役に立てたようでうれしいです。

    しかし、最近APIを見ていないのですが、あれから2年近く経とうとしているのに、まだこういった機能が実装されていないのでしょうか。

    あまりニーズがないのでしょうか。結構重要だと思うのですけれど。

    返信削除
  18. Lv15が200mになっていますが、正しくは350mですかね?

    返信削除

コメントを投稿

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法