SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|

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さんはより詳しく表示されるようだ。いいじゃないのよ、これ。

  画像の説明 画像の説明 画像の説明

  そこでさらに、プロキシの設定は「TopDrivin'」の本体ではなく、コースを定義しているJSONファイルである、PCDファイルの中で指定することを必須としてしまおう。

{
    "name": "モナコ",
    "grid": {
        "lat":  43.734846,  "lng":   7.421327,  "dir":  60
    }
    "map_proxy": "http://localhost/~user/topdrivin/bmproxy.cgi",
}

  こうすると何がいいって「TopDrivin'」本体と、地図の利用権のゴチャゴチャを分離できるのがいい。あくまで「TopDrivin'」本体に添付されるプロキシは参考スクリプトであり、外部地図サービスへのアクセスの責任はプロキシの運用者が負うってわけだ……って、パチンコの三店方式みたいだなw。

  なんだったら、外部地図サービスへのアクセスなしに、100%手書きで描いたサーキットのマップタイルを提供するプロキシを立ち上げてもいいわけだ。つうか、つうか、もはやそれはプロキシではなくサーバだな。

  ぼちぼち、気分良く走れるようになってきたところで、次はサウンド関係に手を付けるかなぁ。