LoginSignup
5
1

More than 5 years have passed since last update.

ズームレベルの現実的な最大は何と考えればよいか

Posted at

24、この数字を知っておくことの意味

結論から申し上げれば、24 です。

理論的にはズームレベル 25 以上も可能な中で、このような具体的な数字を知っておくことの意味は何でしょうか。そこには、二つの意味があると思います。

  1. ウェブ地図のシステムは論理的な存在ではなく、計算機(とりわけストレージ)と通信回線の上に実現される具体的な存在です。システムを具体化するにあたっては、具体的な数字を出し、理解し、実現へのインパクトを評価することが重要です。ズームレベル 24 のタイル数は、全世界で 4 ** 24 = 281兆4749億7671万0656 となります。これ以上のオーダーのデータ数を相手にする必要はないと知っておくことは、実装技術を選択するにあたって重要です。
  2. ズームレベルは級数的な性質を持つ数であり、ズームレベルが 1 増えると情報の量は 4 倍になります。よって、小さな数字の違いが大きな意味を持ちます。そのような数字について、具体の数字を知っておくことは効果が高いです。

次に、なぜズームレベルの最大は 24 と考えて良いのか、ズームレベル 24 という数字は既存のソフトウェアの中でどう使われているのか、紹介します。

geojson-vt での議論

gh:mapbox/geojson-vt のイシュー 87では、mourner さんが次のように発言しています。

I think we should explicitly limit the zoom to 24 and throw an error on higher values. I haven't seen any practical reasons to support z25+ — a z25 tile will be roughly 1x1m, and even assuming the default extent of 4096, coordinates would have ~0.2mm precision.

ズームレベル 25 のタイルは 1m 四方となるが、(ベクトルタイルの内部座標の定義域である)4096 でこれを割ると、座標の分解能は 0.2mm 程度となってしまい、現実的には十分以上の精度となる、ということを言っていると思います。確かに、(海を含むような)世界全体をユニバーサルな絶対座標で表現する場合には、0.2mm よりも大きい分解能は必要なさそうです。必要な場合には、別の技術体系を考える方が良さそうです。

このようにして、タイル技術の限界を積極的に定義していくことで、限界の内部での性能の最適化に進むことができる、と考えます。

なお、蛇足 ですが、緯度によって分解能は変化する、具体的には、緯度のコサインに「地上画素寸法」は比例する、という側面があります。つまり、緯度が60度になると、赤道と比べて2倍の分解能を持つようになる、つまりズームレベルが1つ上がることに匹敵する、ということです。これについては、高緯度においてはタイルをカットする、ということでタイルを節約できる可能性があると思っています。実はこれでかなりのデータ量が節約できる可能性がある(ただし、定数倍でしか効かないが)と思っています。これはまた別の話。

Mapbox GL JS での 24 の実装

Mapbox GL JS では、すでに最大ズームレベルを 24 として実装しています。例えば Mapbox Style の layer の minzoom/maxzoom の規定では、ズームの値を「between 0 and 24 inclusive」と明記しています。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1