地図タイルの命名規則とGoogle Mercatorの深淵

@_hfu_ さんによる,地図タイルの命名規則とGoogle Mercator についての分析です.見落としている関連投稿があると思うので補完をお願いします.
1
hfu @_hfu_

. @kokogiko あ、Google Mercator で定義した Geohash って、役割的に地図画像タイルのパスと同じですね。誰かの地図画像タイル命名規則をパブリックドメインにして、皆で使えば、それなりに嬉しい。c.f. http://bit.ly/9ZIu1r OSM

2010-09-28 06:45:51
OHTSUKA Ko-hei @kokogiko

あ…そう言われてみればそうだ RT @_hfu_ Google Mercator で定義した Geohash って、役割的に地図画像タイルのパスと同じですね。

2010-09-28 07:35:25
OHTSUKA Ko-hei @kokogiko

うちのタイル名は(メルカトルでなく古地図ですが)zoom-x座標-y座標.jpgだから、前方一致もクソもなくインデクスに使えない。RT @_hfu_ 誰かの地図画像タイル命名規則をパブリックドメインにして、皆で使えば、それなりに嬉しい。

2010-09-28 07:36:51
hfu @_hfu_

@kokogiko #{level}-#{x}-#{y} 系のタイル名(たぶん、最もよく使われているタイル名)では、確かに Geohash の前方一致整理はできないですね。ただ、位置からタイル名を算出して当てるという意味でのインデクスの機能は果たすかな?Geohash的なのは→

2010-09-29 05:21:43
hfu @_hfu_

@kokogiko Geohash的にx,yをinterleaveしたパターンのタイル名って、Googleが使っていた気がしたけど、いまGoogleMapsをWebインスペクタで見てみたら、x,y,zを別々に明示したものになってた。

2010-09-29 05:25:29
hfu @_hfu_

@kokogiko 前方一致性を持っているのは、Microsoft の Bing Maps Tile System かな。Quadtree に素直に数字を割り当てるもの http://bit.ly/br2QP5 (あとで読む)「開示されている=使える」ではないけど。

2010-09-29 05:31:47
hfu @_hfu_

. @kokogiko http://bit.ly/9U2NpJ / GDAL2Tiles の人たちは TMS 準拠すなわち(zoom,x,y)独立系のタイル名をはき出すみたい。(http://bit.ly/a6lAGO )/ TileCacheのDisk上のタイル名は長い…

2010-09-29 05:42:49
hfu @_hfu_

. @kokogiko 今朝の結論:前方一致性を求めなければ、既存モノでは権利的に安全そうなTMSタイル名が有望?前方一致性を求めるならば、Bingのやつが権利的にOKでなければ、Geohash/Sp.Mercator(←ほぼ自動的に決まる)を再発明する意義がありそう。

2010-09-29 05:46:23
hfu @_hfu_

. @kokogiko 二つ前の私のツイートで、URL壊れていたけど http://bit.ly/aMz0gZ の地図で地名検索すると、3つのタイルシステムのタイル名が見える。GoogleとTMSってyが違うのか。googleが北から、TMSが南から。

2010-09-29 05:51:27
hfu @_hfu_

quadtree の文字表現上の基数を苛烈化しようとすると、もとのquadtreeが4=2bit木だから、常識的には4,8ビットで切りたくなる4ビットならBASE16だが8ビットのBASE256は現実的ではないだろう。

2010-09-29 05:57:46
hfu @_hfu_

quadtreeで4ビットまとめBASE16とすることは、Zoom0,2,4,6,...だけが許されるかわりに文字数を半減することになる。建物特定レベルでZoom22だから、建物特定レベルのquadtree+BASE16の字数は、11文字。22文字と11文字の違いは大きい。

2010-09-29 06:00:16
hfu @_hfu_

Sp.Mercator平面をQuadtreeで分割すること自体について特許が取られていたら、アウトだけど、Sp.Mercator+Quadtree+BASE16、それなりに使えそうだ。Sp.M上でのGeohashは切れが5ビット(BASE32)のデメリットが、たぶんある気がする。

2010-09-29 06:04:40
hfu @_hfu_

とりあえず、Spherical <M>ercator+<Q>uadtree+BASE<16> の alias として MQ16 という名前を与えておこう。

2010-09-29 06:08:22
hfu @_hfu_

MQ8 も良いかも。十進数値しかゆるされないフィールドにも入力できる。bing quadtree と比べて符号長を 2/3 にできる。建物レベルで16文字程度か?

2010-09-29 06:15:29
hfu @_hfu_

いや、やはり2の奇数乗のBASEはナイか。 @kokogiko の要請「メルカトルで正方性がある」を満たせない。BASE8 とか、BASE16 (MGeohash)は、文字列が表現する矩形が1:2の長方形になるときがある。それを許すなら元のGeohashがとまし考える人が多かろう

2010-09-29 06:25:48
hfu @_hfu_

http://bit.ly/aMz0gZ を見るに、Google Mercator の秘密は、上下界緯度を、投影地域が正方形になるように選んでいることであるように見える。確かに、常識的Mercatorより広いと聞いたことがあるが。検証してみる。ロス海注目。

2010-09-30 04:10:04
hfu @_hfu_

WGS84は世界を2:1の長方形だという。Google Mercator(Web Mercator)は世界を1:1の正方形だという。Geohashはあえて2の奇数乗の基数を使って経度側を先に分解することにより2:1世界に対応したが、Web Mercatorではそれは意味をなさない

2010-09-30 04:12:54
hfu @_hfu_

Google Mercator で Geohash 的割をするには、経緯度の定義域を明確にする必要があるが、緯度の定義域は意外と明示されているものが少ないようだ http://bit.ly/bz3A4p 算出すればよいがTMS tileするためには必須パラメータなので見つかるはず

2010-09-30 04:16:54
hfu @_hfu_

Google Mercator についてこれまでに気づき始めていること (1) 楕円体を使わずに球を使用したのは正逆変換が近似式とならず単純な式で済むから (2) 緯度限界を適当に引っ張ることによって値域を正方形とし、四分木を導入しやすくした(要確認)

2010-09-30 04:24:57
hfu @_hfu_

Web Mercator の定義域が正方形になるための北限を計算すると、85.051128779807 度であった http://jsdo.it/hfu/zGOm #jsdoit #openlayers (目的に対して冗長なコードだが)

2010-09-30 04:48:56
hfu @_hfu_

この、the number to make the earth squareを「85.051128779807」でGoogle検索すると、http://bit.ly/8X7lHP など、TileCache がらみのリソースが見つかった。この値は、それほどは周知されていないもよう。

2010-09-30 04:57:47
hfu @_hfu_

ありがとうございます。hfuはあいかわらずtwitterの使い方間違っている感w ここから先は根性必要だろうなあ RT @niyalist「地図タイルの命名規則とGoogle Mercatorの深淵」をトゥギャりました。 http://togetter.com/li/56358

2010-10-05 06:07:32
hfu @_hfu_

「Google Mercator に対して等分4分木して Geohash 的に interleave して BASE16 で符号化したコードがよさそう」と言うのは至極簡単だが、そこから先実際にコードを提案するのは飛躍的に大変。なんというか「かもめのジョナサン」的な。

2010-10-05 06:17:10
hfu @_hfu_

最後の2ビットを無視する末尾文字uを導入することで、全レベルのタイルにコードを与えることはできる。(ただし、正規化が必要な問題と、前方一致検索に不利になる問題がある)とか。

2010-10-05 06:34:02