SVX日記
2025-06-23(Mon) マップソースをとっかえひっかえ
なかば冗談ながら「PCD(パブリック・サーキット・データ)」なんてものを策定してみたが「サーキットのスターティンググリッドの場所を示す地球上の緯度経度情報」ってのは、完全にオープンデータである。サーキットのタイム計測ラインであるセクタの境界も、同じくオープンデータだ。
そうなるとちょっと気になってくるのが、空撮画像のイメージデータのオープン性だ。現状Gさんの地図データをこっそり拝借しているわけで、これをオープンと言うことはできない。
しかし、我が日本国には日本国民の血税によって整備が行われた、国土地理院謹製の地理院地図があるッ! ……って、そりゃ、日本国内だけやんけッ! F1に限ればほぼ鈴鹿サーキットだけってことになる。他の国内サーキットを走るには足るが、それじゃちょっとつまらない。
そこで、Gさんと同様に世界の地図データを提供しているサービスがないか調べてみたところ……というか、AIに訊いてみたところ、それなりにザクザク出てきた。特に有望そうなのが、MのBさん。基本有料のMさん。
どちらも、Gさんと同様に地球全体をメルカトル図法にして、1x1=1分割、2x2=4分割、4x4=16分割……というマップタイルで提供する方法に対応している。「TopDrivin'」はレベル20の存在を前提としているが、どちらも少なくともモナコ付近ではそのレベルのマップタイルを提供しているようだ。
もともとは、Gさんのマップタイルのアクセス効率化のため、やっつけで作った自製のキャッシュ機能付きのマップタイル用のプロキシだが、そいつをちょいとイジって、取得先をBさんやMさんに変更すれば、本体に手を入れずともそっちのサービスのマップタイルを使うようになるはず……
……おぉ。アッサリとできてしまった。これは、有名なモナコのローズヘアピンの空撮画像。左から、Gさん、Bさん、Mさん。数メートル程度のズレはあるが、同じ座標データを与えて、この結果が得られている。置き換え可能と言うに十分なレベルだろう。
というわけで、まずは自製のプロキシをイジって、Gさん用のクエリを、Bさん用、Mさん用に変換することで置き換えを実現してみたものの、こうなってみると、ひとつのプロキシをイジるのではなく、各々用に個別にプロキシを用意するのがよさそうだ。さらに、Gさん用のクエリを、Bさん用、Mさん用に変換するのではなく、共通のしかるべきクエリのフォーマットも策定するべきだ。
で、作った。Gさん用はgmproxy.cgi、Bさん用はbmproxy.cgi、Mさん用はmbproxy.cgi。Bさん用は、マップタイル位置の指定方式がちょっと変わっているのだが、それはbmproxy.cgiの中で吸収させている。つまり、いずれも共通のクエリのフォーマットを受け付け、同じ場所のマップタイルを返す。なので、モナコのコレも、共通のデータで、概ね似たように再現される。Bさんはちゃんと道幅が、Mさんはより詳しく表示されるようだ。いいじゃないのよ、これ。
{
"name": "モナコ",
"grid": {
"lat": 43.734846, "lng": 7.421327, "dir": 60
}
"map_proxy": "http://localhost/~user/topdrivin/bmproxy.cgi",
}