Google Mapの各ズームレベルごとのピクセル数と距離の関係
追記10.12.13:
amay007さまのコメントで、以下の関係は緯度が変わると成り立たないことがわかりました。
1年以上前の記事なので正確な位置は覚えていないのですが、神奈川県厚木市付近の地図を使って計算していたことは覚えています。
そこで、先ほどGoogle Mapで神奈川県厚木市役所付近と沖縄県沖縄市役所付近のフルズーム状態(Lv19)の縮尺表示のキャプチャーを取ってピクセル数を見てみました。
つまり、以下の関係は神奈川県厚木市付近でのみ(しかも大体)成り立つということですm(_ _)m
ということは、さらに相当面倒なことに・・・
例えば、この神奈川のテーブルを基準にして、沖縄や北海道との差分を求めて、神奈川からの緯度の変位によって補正をかける、とか?
いやぁ、参りました(;´д`)
あれから1年以上経っているいるので、何か便利なAPIが出来ているかもしれません。今一度調べてみる必要があると思います。
----
Google Mapの各ズームレベルごとに縮尺表示のキャプチャーを取り、縮尺のピクセル数を調べ、ピクセル数と距離の関係を求めた。
API的に何かいい方法はないかと色々探したが、結局見つからなかったのでこんな目に。
あ〜無駄に疲れるo(´^`)o ウー
もし同じことをしようとしている人がいたら、これ使ってください。こんな事をするのは自分1人で十分。人類のエネルギーの無駄ですから。
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
お疲れ様でした!
返信削除とても助かりました
返信削除ありがとうございます
返信削除ありがとうございます。
返信削除久しぶりに見たら、皆様のお役に立っているようでうれしいです(^^)
返信削除絶対やっているひとがいるとおもったら、いました!
返信削除ありがとうございます。
素晴らしい!
返信削除有難う御座います!助かりました。
返信削除どんな緯度でも上記関係が成り立つのでしょうか?…という疑問が浮かびました。いずれ調べてみたいと思います(日本国内で大体あってれば問題ないんですけど)。
geohashでもみられる、歪みというか誤差というか、そういうことをおっしゃっているのでしょうか・・・
返信削除自分は単に縮尺表示のピクセル数と距離の関係を求めただけなので、正直それ以上のことはわかりません。
お役に立てればよいのですが。
とても助かりました
返信削除ありがとうございます
ありがとうございます、助かりました。
返信削除ありがとうございます!
返信削除ありがとうございます!
返信削除2010年8月5日12:28 さんが仰られている事ですが…
返信削除GoogleMap はメルカトル図法の地図なので、北へ行く程1pix辺りの距離(m)が大きくなっていくハズです。
ちょっと調べた所、日本でも北海道と沖縄では、同じズームレベルでも縮尺表示の大きさが異なりますね。
こちらの情報は日本のどの地点で調べられたのでしょうか?
参考までにお知らせいただけましたら幸いです。
amay077さま、仰る通りでした。
返信削除本文にも追記しましたが、計算に使った地図の場所は神奈川県厚木市付近です。
これは相当面倒なことになりますね。いやはや、参りました。
コメントして頂いてありがとうございました。大変勉強になりました。
はじめまして、調査どうもありがとうございました。
返信削除Google Maps の仕様を元に計算してみたところ
(2πR・cosθ) / (256 x 2^n) km/px
R : 6378.137 km (地球の赤道半径)
θ : 緯度
n : Zoom レベル (2^n は 2のn乗)
で計算できるようです。
このサイトで公表していただいているデータで検算させていただいたところ、だいたい 3% 位の誤差だったのでたぶん正しいだろうと確信が持てました。
重ね重ね調査ありがとうございました。
こちらに、詳しいことを載せておきましたので、よろしかったら参考にしてください
返信削除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
hondouさん
削除はじめまして。a-geh-aと申します。
これほど月日が経ってしまっているので大変恐縮なのですが質問があります。
そのページを見させていただいたのですが、
r(θ)=Rcosθ
と表現出来るのはなぜですが?
地球が円ならば確かに成り立つと思うのですが…
おそらくそのあたりの間違いが最終的な誤差に繋がっているものと推測されます。。。
うぉぉ!そんな式で計算できるのですね。すばらしいです。
返信削除微力ながらお役に立てたようでうれしいです。
しかし、最近APIを見ていないのですが、あれから2年近く経とうとしているのに、まだこういった機能が実装されていないのでしょうか。
あまりニーズがないのでしょうか。結構重要だと思うのですけれど。
Lv15が200mになっていますが、正しくは350mですかね?
返信削除