山崎はるかのメモ

インターネットタウンページのメモ

- 優秀な地図表示機能を使いこなす -

 




このページは、すでに改訂版が出ています。正規には改訂版をごらんください。




はじめに

インターネットタウンページの地図表示機能。
地図表示なら マピオン とか MapFan など専門サイトがあるが、インターネットタウンページの地図表示については、この両者の追随を許さぬある特徴がある。

ためしに 大手町の「郵政省」を引いてもらいたい。
マニアなら、インターネットタウンページLite を使うべきだろう。

郵政省/東京都千代田区大手町

電監さんが ぼこぼこ出てくるのが なかなかに象徴的であるが、どこでもいいから map と表示されている部分をクリックしてみてくれ。
ビル名が 詳細に出てくるのがよくわかるだろう。

では 住宅街ならどうか。
住宅街の ど真ん中にある、ダイアモンドアプリコット会計センターのある中野区上高田・新井薬師を引いてみよう。

西武鉄道株式会社/新井薬師前駅

商店名やマンション名が バリバリに出てくる。
これは驚異的だ!
これこそ、 マピオンMapFan では どうしても弱い、インターネットタウンページ特有の「建物表示付きマップ機能」なのである。
このテを使わないてはない。

ところが、このURLを ちょっといじくると 突然「検索可能な範囲を越えました」とエラーが表示されたり、地図がまったく表示されなかったりする。
これだけ便利なのに...
いや、意地でも 使いこなしてやる!

今回は この地図機能を いじくりまくってみたい。

 

わたしゃ地図にはうるさいぞ -戯言だから 地図データに興味がない人は読み飛ばしてもいいぞ -

これでも、私は 非常に短いが アルバイター・仮のサラリーマン時代がある。
朝日航洋 という航空測量会社に勤務していたのだ。

ヘリパイロットになりたかったのだが、どういうわけか測量部(現在の空間情報事業本部)で大型コンピュータを操作することになった。
そのとき やってた仕事が、DD協会という暗号名・正体不明の公益法人からの 全国デジタル道路地図・作成プロジェクトである。
私の担当は 北海道全域と南紀(和歌山・三重)。
この仕事は、極秘扱いで その地図が何に使われるか、作ってる本人にも 伝えられなかった...これがサラリーマンの悲しいところだ。
だが、数年後 その結果を見て「あっ!」と 驚くことになる。

地図には、その地図を「書く者」のクセが微妙にあらわれる。
デジタル地図は、なにも、最初からデジタルデータとして存在しているわけではない。
国土地理院の出す「正規地図」を 「トレース」という職人さんが、道路の部分だけ トレースペンと呼ばれる専用筆記具で 半透明のトレーシングペーパーにえどる。

それをはがすと 道路だけ描かれた地図となる。
ここまでは アナログの世界なのだ。

それを我々が スキャナで読んで数値化するのだが、その作業を繰り返していると、それぞれのトレースさんによって線の交点に微妙な差があることに気がつく。
CD化された後の製品となると 素人にはわからないが、プロには デジタル化された後でも、それが どのトレースさんの仕事か わかるようになる。
我々は トレースさんのクセを読み取り、大型ドラムスキャナとプロッタで「それが交差点」なのか「立体交差」なのか判断しなければならない。
非常に緊張感の高い作業だが、これが なれてくると けっこうおもしろい。
デジタル地図作成現場には いろんな裏話があって、いずれ どっかで話すが、とても思い出深い仕事だった。
作られた地図が どのように使用されるか そのときは わからなかったが...

それがわかったのは、5年以上 経過した オートバックスであった。
カーナビのデモを見てたら、
「あれ? これって...どっかで...」
という画面にでくわした。
非NAVIKEN系の その地図CD。その背面に「(財)日本デジタル道路地図協会」とある。
デジタル道路地図協会→DD協会...なるほど、そういうことだったか!
自分の仕事を 意外な場所で その結果を見るというのは なかなか感動だ。

さて、素人にはわかりづらいが、デジタル地図はその製作過程によって、それぞれの特性が出る。

たとえば、ゼンリン(ナビ研)は 基本的に「メートル法」で地図を作成している。住宅地図が主力なのだから、あたりまえだ。
したがって、CD地図に変換する際、メートル法→経緯度座標 に変換する処理が必要となる。
じつは この方法は「短距離」を正確に測るのに とてもよい。
だから 駐車場情報とか「○○の隣に××」など、付加価値的情報が入れやすかったりする。
これは カーナビを「街案内」と考える人には 非常に重要なことだろう。
S規格やIISなどは そのたまものだ。

一方で、地図にメートル法を使うということは「軸正距方位図法→非メルカトル図法」となる。したがって、これで作った地図を 何枚もつなげてゆくと、南北間で微妙な誤差が積み重なり...
つなぎあわせで 全国地図を作ろうとすると...これが たいへんなことになる。
たとえば、それぞれの地図単位の接合面があわなくなる...という大欠点がある。

その結果、微妙に曲がった道路なのに どういうわけか「直線道路」で表示されることがあるなど、現実と異なる部分がどうしても生じてくる。
大きな道路は 修正されているが、田舎道だと そこで道が切れてたりとかするのは、そういう理由だ。
また 都市部以外は 道路幅員(道幅)が いいかげんだったりすることもあるが、それは 基礎地図作成段階における道幅の概念が ナビ研規格では甘いからである。
「関東版」など詳細地図が分割販売されるのは、CDの収容能力よりも こういった 誤差修正やデータ量の問題であろう。

一方、デジタル道路地図協会では「経緯度」で地図を作成している。
さらに 幅員10m以上・5m以上・それ以下・交差方式・アスファルト・砂利・など「路面情報」を重視する。
これは...たとえば 「国道」であっても 道路管理は「都道府県」とか、橋は「建設省」の所有物なんだけど 表面管理は道路公団とか...「道路」というのは およそ「お上」の不思議な現象が 最も如実にあらわれるところである。
(運輸省の指揮下による道路だとタンクローリーは通れるが、建設省の道路はダメとかね)
そういった路面情報を記録することがデジタル道路地図協会データのメインで、カーナビとして使うというのは「副産物」のようなものである。

だが「緯度情報で収録」していることと「交差情報」・つまり「高低差」の概念を もとから持っているというのは、高速道路案内や VICS情報の変換において とても都合がよい。
某メーカーのカーナビの評判がすこぶる高いが、それはカーナビの性能というよりも、元データの最初の記録方式・データの収容方式がよいからだ。
カーナビを「道路ナビゲーション」と考える人には、こちらのほうがよい。(助手席に乗せる人によるけどな。ナビ研は 地図自体が話題のネタになりうる)
そして、これにも欠点がないわけではない。
デジタル道路地図協会(非ナビ研)は、「国土地理院地図・至上主義」であるから、国土地理院の地図が改訂されるまで、更新されないことが多い。
国土地理院の地図は 5年更新だから、最新の地図CDを買っても 場所によっては最大5年前の地図を使わされるハメになる。
バージョンアップが たいしてバージョンアップにならない、あるいは 妙に 非ナビ研CDが古いように感じることがあるのは このためだ。
ただ、主要道路は 国土地理院の改訂よりも、現実を重視する方向にあるから、改善されつつある。

こういう面で見ると、
マピオン は エアリアマップ系のクセを持つオリジナルデータ。聞いてみたら凸版印刷とのこと。ただ鉄道系(昭文社など)のクセもあるから、いろんな地図を複合させていると思う。
MapFan は、どっから どう見ても デジタル道路地図協会。(私の担当地域を見たら 私しか知らない特徴があった)
個人的には MapFanを推すぞ、わたしゃ。ただ ネット地図で 道路に詳しいことが そんなに重要かは よぉわからんがな。

で、インターネットタウンページ。これは どう見ても ゼンリン である。
直線的な道路標示・けっこう いいかげんな道路幅員・でも 位置関係だけは 完璧と言えるほど しっかりしている。
そして 狂気としかいいようがないほどの「建物表記」。
こんなことが できるのは ゼンリン 以外にない!!
ジャストマップやワイルドバードが消えた現在、ネットで見られるゼンリンの地図は インターネットタウンページ だけだろう。

 

URLを分解する

ゼンリンは。元地図をベクター(直線情報)で管理している。
文字すらもベクター管理だ。
そして そのベクターは、メートル単位である。
したがって座標系はメートル単位で管理しているはずだ。

また HTMLファイルを見ると、GIF画像で 地図をそのまま提供している。
ここが ひっかけだ! GIFをリロードするとエラーになる。

これは どういうことか。
じつは このシステムは、ユーザーから 地図の中心座標を受け取ると、「その場で地図を書いて」「GIFに変換して」「ユーザーに送る」という、これまた、とんでもない高等な作業をしているのだ。
そりゃベクター化されてるんだから、リクエストに応じて地図は書けるだろうけど、1分間に1000人はリクエストしそうなシステムで いちいち そんなことをしてたら...
かなり高速なサーバーシステムと、高度なプログラミング能力が要求される。
元・地図職人として アタマが下がる思いである。
昼間・メチャ重になるのは あたりまえだな。

では かまわず、URLを分解してみよう。
さきほどの 西武鉄道株式会社/新井薬師前駅 のURLは、

http://map.itp.ne.jp/se/map_direct?menuType=map_direct&map_Name=99909I173174293130_99909I173186293125_4&jsyo_code=&script=off&map_scale100.x=0

である。異常に長い!
値をとっていない変数も多い。
そこで、地図表示だけ できればいい...という考えで、どこまで省略できるか に挑戦したら、次のように短くできた。

http://map.itp.ne.jp/se/map_direct?map_Name=99909I173174293130_99909I173186293125_4&map_scale100.x=0

つまり、地図表示に必要な変数は map_Name と その他ひとつの変数らしい。
ここまでわかれば充分だ。

 

URLの構造

JavaScriptを読むと、map.itp.ne.jp/se/map_direct という実行ファイルは、UNIX上の別のスライスにハードリンクされていることがうかがえる。
したがって CGIというより デーモン だろう。
まあ、難しいハナシは ともかく map_Name 変数の構造を分解しよう。

【分解構造】
map_Name = 99909I 173174 293130 _ 9909I 173186 293125 _ 4

【意味】
map_Name = 表示する地図の中心座標 _ アンカー座標 _ アンカー種類

では、まず わかりやすいところから、おしりの アンカー種類 について説明しよう。
アンカー とは、地図上で「ここ!」というピンマークのことである。地図用語の一種だ。
この地図では 3種類ある。

3.80m円..map_Name=99909I173174293130_99909I173186293125_3
4.10m円..map_Name=99909I173174293130_99909I173186293125_4
その他...map_Name=99909I173174293130_99909I173186293125_5
       ↑全体マップ(スコープマップ)ではアンカーを表示するが、メインマップでは表示しない

もちろんアンカー座標 とは、この○の位置・座標の ことである。


次に地図の座標系について 説明しよう。
99909I 173174 293130(表示する地図の中心座標)99909I 173186 293125(アンカー座標)も 「_ 」で接続されているだけで、同じ座標系である。

【分解構造】
99909I 173174 293130
99909I 173186 293125

【意味】
地図コード5桁 + スケールコード(1文字) + X軸メートル座標6桁 + Y軸メートル座標6桁
地図コード5桁 + スケールコード(1文字) + X軸メートル座標6桁 + Y軸メートル座標6桁

メートル座標で6ケタと聞くと「そんなに狭いの?」と思う向きもあるかもしれない。
だが よく考えていただきたい。
999,999mが表せるということは、1000Km四方を座標系内に置けるということだ。
なかなかに広いぞ、これは。

座標系は 西から東に向かって X軸が増える。つまり X軸を増やせば 東に移動する。
また、南から北に向かって Y軸が増える。 つまりY軸を増やせば 北に移動する。

つまり、数学の座標系と同じ、

   
Y    
  X

という構造になっている。
中心点を 東に5m移動したければ Xの値を5増やす。
逆に 西に20m移動させるなら、Xの値を20減らせばよい。

なお スケールコードは I~Lまであるが、これは それぞれ 100m・200m・500m・1Km の各縮尺地図に対応している...が、基本的にIスケールで指定して、実際の縮尺は map_Name の後にくっつける &map_scale100.x=0 などで指定すると、最も最適な地図を選択してくれる。
こっちのほうが、いろいろな意味で安全だ。

 

実際に地図を作ってみよう

自分で書くわけじゃないから、地図を作る...という表現もヘンだが、ま、作ってみよう。

田舎から出てきた友人と 秋葉原で待ち合わせ。
デパート前でもいいが、出口が4ヶ所ある秋葉原駅では 迷うかもしれない。
(実際 私は はじめて秋葉原に来たとき えらい迷った)
献血コーナーなんてわかるわけがない。
そもそも ローカル地方の人は、東西南北で位置判断するため、山手線・京浜東北線と総武線が十字にクロスする駅構造は、下から見ると どこから見ても 同じに見え・しかも東西南北の方向感覚を著しく狂わせる。
そこで 地図を送ることにした...というのが このたびの設定だ。

というわけで、書泉ビル側のJR出口で、マクドナルドとロケット本店にはさまれた、公園を地図で指定する...という、なかなかな 問題をやってみよう。
ん?現実的でない?
テストの問題とは そういうもんだ。 実際に起きることが すでに問題としてわかってるなら、それは とっくにマニュアルになっているはずである。
字が読めないならいざ知らず、いちいち脳細胞の1エリアを消費して記憶するべきことではない。
テストの問題とは、実際に 起きるはずのないことを設問にするべきなのだ。
それほど テストの問題とは 空虚なものなのだ。

ハナシが脱線した。では やるぞ。

まずは マクドナルドだ。
マクドナルド+東京都千代田区 で 探すと 一発で出た。

マクドナルド/秋葉原昭和通り店

おお これだ。
では 公園をクリックして、地図の真ん中にもってくる。

公園を中心にする

そして、100mモードにする。

100mモード

ほぉ、あれは児童公園だったのか。児童公園の前に D-カルトという なかなかなマニアックな店があるのは、笑えることだ。

この段階で URL を採取する。

http://map.itp.ne.jp/se/map_direct?menuType=map_direct&map_Name=99909J182507291128_99909J182532291126_3&jsyo_code=&alist=pd6lr6XJpcql66XJob%2B9qc3VuLa%2BvM%2FCxMyk6sW5fDAzLTM1MjYtOTI1MXx8xey1%2FsXUwOnC5cXEtui%2FwMXEurS117TWxK6jscP6zNyjsqOxfHyl1aWhobyluaXIpdWhvKXJfHx8fHx8KCk%3D&script=off&map_scale100.x=66&map_scale100.y=14

うわ、なっげー!
例によって、余分なURLを削除し、おしりを&map_scale100.x=0にする。

http://map.itp.ne.jp/se/map_direct?map_Name=99909J182507291128_99909J182532291126_3&map_scale100.x=0

お?何も表示されないぞ!
じつは 先ほど言ったように、アルファベットのスケールコードは「I」にしたほうがよいのだ。
正確には map_scale指定のサイズと、同じ サイズのスケールコードがいいんだけどな。

http://map.itp.ne.jp/se/map_direct?map_Name=99909I182507291128_99909I182532291126_3&map_scale100.x=0

うむ、今度は ちゃんと表示された。
次に アンカーマークを中心にもってこよう。
なんのこたぁない。表示座標の値を そのまんま アンカー座標にしてしまえば、アンカーは真ん中に来るではないか。

http://map.itp.ne.jp/se/map_direct?map_Name=99909I182507291128_99909I182507291128_3&map_scale100.x=0

次に、アンカーマークも変えてしまおう。

http://map.itp.ne.jp/se/map_direct?map_Name=99909I182507291128_99909I182507291128_4&map_scale100.x=0

ううむ、ここまでくると、細部のデティールにこだわりたくなってきた。
自動販売機前のベンチに○を持ってこよう。
東に5m・北に15mってとこかな?
アンカー座標は 99909I182507291128 であり 99909I 182507 291128 で分けられる。
X軸に5m・ Y軸に15m だから、 99909I 182507 291128 → 99909I 182512 291143 だな。
よって 99909I182512291143 が、アンカー座標になる。

http://map.itp.ne.jp/se/map_direct?map_Name=99909I182507291128_99909I182512291143_4&map_scale100.x=0

おっけー、こんなもんだろう。
あとは このURLを 友人に送ってやるだけだ。

 

はまりどころ

アンカーの座標をどこにしようが、表示座標をどこにしようが、それぞれは 独立している。
スケールが異なっていてもいいぐらいだ。

ただ、短時間でピタリと正確な座標系にするには 次の手順を忘れてはならない。

1.まず 近所をさがして、次に中心点をさがして、そこをクリックする。
2.そこでスケールサイズを一度変える(変えて・元にもどしてもよい)
3.ここからURLを取り出す
4.URLをけずりまくり、おしりに&map_scale100.x=0 をつける
5.それぞれの位置関係を微調整

特に 画面をクリックしてスケールをフラッシュすることと、&map_scale100.x=0 は重要である。これを忘れると えらい悪循環をさせられるから要注意だ。

 

おっと忘れてた

現在も、この地図はエリアが増えつづけているようである。
主に大都市と 各都道府県庁所在地をカバーしている。
とにかく、建物名が出るというのは 何かと気分がいいもんだ。

 

(99/12/27・山崎はるか)


Network Diamond Apricot - SOHKA.JSC

■メモエリアに戻る