まずは国土数値情報ダウンロードサービスより、「JPGIS2.1(GML)準拠及びSHAPE形式データのダウンロード」をクリックし、そのページの下の方の「国土骨格」のカテゴリにある「鉄道時系列(線、点)」をクリック。(要するにここ )。
下の方にデータ選択ボタンがあるので選んで先に進む。用途とかのアンケートにちゃんと答えてからダウンロードする。
ダウンロードしたデータは、ZIP 形式なので解凍する。解凍したデータ(SHAPE形式)を QGIS(http://www.qgis.org/) を使って必要なデータのみに絞ってしまう。 (※手順は別途まじめに書こうと思う。自分は JR西日本の「現在生きているデータ(有効期間のend が 99999999 なもの)」に絞り込んだ)
OpenLayers に生のベクトルデータとして取り扱いをさせたいので、SHAPE 形式のデータを GeoJSON 形式に変換(といってもただ形式を選択して保存するだけ)した。
できあがった GeoJSON 形式のファイルを、
JRW-railroad.geojson (路線の線形のベクトルデータ)
JRW-stations.geojson (駅の位置、名称情報)
というファイル名で保存した。
- Web サーバの準備
ディレクトリ構成は以下の様な感じ。
/maptest/
example.html
example.js
json/
JRW-railroad.geojson
JRW-stations.geojson
とりあえず、自分のマシン環境で、以下の URL でアクセスできるような形にしてみた。
http://localhost/maptest/example.html
- JR西日本の全駅全路線のデータをいっぺんにハンドリングするので、結構重い(自分のMac: Core2Duo 2.33GHz, OSX10.7, Firefox20.0)。
- Firefox でテストをしていたが、Chrome だと少しレスポンスが改善される。iPhone5 だと自分の Mac とあまり変わらないくらい。
- レイヤーで線の情報、駅の情報をチェックボックスで off できるようにしているが、どちらか一方を off にするだけでも、ずいぶん軽くなる(ということで、やはりデータ量の多さがネックかと)
- プログラム(JavaScript)自体チューニングはしていないが、この重さから考えると抜本的な見直しが必要と思われる(線形だけでも MapServer を経由してラスタ化してしまう、とか)
- OpenLayers わからんことが多い。今のところ駅のシンボル(ただの○)が線の裏側に表示されていてダサい。
- あと路線の描画で QGIS だとそれなりに格好の良いスタイル(電車の路線を表す点線みたいなやつ)を表現できるのだが、OpenLayers でできるのか???
- 線名、駅名を、路線のポリゴンと重ならないように表示させる、なんていう芸当は、OpenLayers では多分無理。
- JavaScript でまともにプログラム書いたことがないので、見よう見まねな感じが辛い...。
こんどまじめに記事にしよう...