2014年4月4日金曜日

ウォッちずがサービス停止になって,地理院地図(電子国土Web)を使えと言われた

 私はバイクで紀伊半島を走るのが好きであり,よく GPS ロガーを持って走りに行っている。 GPS ロガーは走行経路の記録の他に,写真の位置情報を地図に結びつけていたりする。 つまり,ツーリングの時に撮った写真がどこで撮られたかを地図で示すのに使っている。 その際,使っている地図が3種類ある。

一つ目は Google Maps。これは Google が提供している地図であり,JavaScript を使ってアイコンを表示したりできるので重宝している。 また交通情報を表示させたり,あるいは地形を航空写真で見たりできて,大変便利で使わせてもらっている。 しかし,問題がないわけではない。 多少粗い図を見ようと思うと,地図に表示される情報が極端に少なくなってしまう。 最高解像度から5段階ぐらいまでは等高線があっていいのだが,それ以上に広い範囲(少し粗い地図)を見ようと思うと,急に殺風景な地図になってしまう。 田舎で等高線がないと,のっぺりした知図になって何も情報が得られない。 少し粗い地図の表示が良くなるともっと良い地図になるのになぁ,と思う。

2つ目は Yahoo の地図である。 Yahoo の地図は等高線や山の形がわかるような表示なっていて,結構見やすいので気に入っている。 航空写真で見ることもできるし。 しかし,こちらにも問題がある。ある程度以上詳細にしようと思うとデータがない場合が多い。 特に紀伊半島の山の中などはかなり解像度を落とさないといけないことが多い。 データが増えてがどこでも詳細な図が表示されればいいのだが,とりあえずは拡大していくと使えなくなることが多い。

3つ目は国土地理院のウォッちずというサービスだった。 これは1/25000の地図を元にしていて,詳細な部分が得意な地図サービスだった。 しかし,過去形で書いているように,この 2014/3/31 付でサービスが終了してしまった。 なんてことだ,と最初は思ったが,実は別の電子国土というプロジェクトがあり,そちらの情報を使うようにサービスが移行した,のだった。 ウォッちずのサイトのお知らせでは「地理院地図(電子国土Web)」と書かれている。

さて,その地理院地図(電子国土Web)だが,サイトとしては https://maps.gsi.go.jp/(2018/5 訂正。http://portal.cyberjapan.jp/site/mapuse4/index.html)にある。 そのサイトを開くと,日本全体が見渡せる地図が表示される。 そして,ズームすると,最終的に 1/25000 の地図が表示される。 右上の方の「表示」の中の「中心位置の十字線」を選ぶと,中央に十字線が現れたりする。 なかなか面白い地図である。

しかし,ツーリングの時に撮った写真を撮った位置を示そうと思うと,上記のサイトにそのままリンクを張ったのでは意味がない。 そこでどうすればいいか,というのが今回のお話(もうほとんど終わりなのだが…)

具体的には
http://portal.cyberjapan.jp/site/mapuse4/index.html?crs=1&zoom=15&lat=33.7360611111111&lon=135.57495
のように書けばよい。 ここで,「?」以降には web site に渡したいパラメーターを記入できる。複数のパラメーターを渡したい時は「&」記号で区切る。 上記の場合,「crs=1」というのが中央に十字線を表示しろ,というパラメーターであり, 「zoom=15」というのが表示の解像度を示している。zoom の数値が大きいほど,詳細な図になる。zoom 値の最大値は 20 程度だったと思う。 他に「lat=33.7360611111111」と「lon=135.57495」が緯度と経度を示している。 これら以外にも「tab=0」や「dir=0」,「skz=0」などがあり,表示が多少変更される。

ネットで検索すると,この電子国土の地図上に登山の際の経路を表示させることもできるみたい。 ちょっと遊べそうなネタが出来た,今日このごろである…。

追記)2015年3月に上記のようにして地理院地図を使おうとしたら,日本全国が表示されてしまった(全然拡大してくれなかった)。 どうもサーバー側での処理スクリプトを変更したみたい。 今のところ下記のようにすればズームしてくれる。
http://maps.gsi.go.jp/?ll=34.637825,135.100522222222&z=15&base=std&vs=c1j0l0u0
緯度・経度は「ll=34.637825,135.100522222222」で指定し,拡大率は「z=15」,地図の種類は「base=std」で指定している(みたい)。 最後の「vs=c1j0l0u0」の意味はまだわからず…。