適当のごった煮

Pythonと境界標とQGISを中心にいろいろと

QGISでJR東日本「駅ナンバリング」を表示する

スポンサードリンク

東京オリンピックに向けて、JR東日本が首都圏の駅に駅ナンバリングを導入しました。QGISのフィルター機能とデータ結合機能を使って、地図上にナンバリングを表示させます。

データ作成

今回の試みで必要なデータは、駅とナンバリングがペアで入力されているデータです。QGISで読み込ませるために、最終的にはCSV形式で保存します。

便利なデータがネット上に存在していないか検索してみましたが、見当たらなかったので、首都圏エリアへ「駅ナンバリング」を導入します(pdf)えきから時刻表を参考に、自分で作成しました。

作成したデータのHTML表形式をJR東日本の首都圏エリア「駅ナンバリング」に投稿しました。実際に使用したCSVファイルは、データの先頭に項目名として「eki,kigo」という行をつけて「駅名,路線記号+駅番号(3文字記号がついている場合はそちらを採用)」という形式で作成しました。データの並び順は気にしなくても大丈夫です。

また、CSVファイルと同名で拡張子を「.csvt」としたファイルに「"String","String"」と入力して保存します。CSVTファイルは、QGISにCSVデータの属性を伝えるファイルです。

f:id:tekito-gottani:20161224120128j:plain

もしかしたら、データ作成が今回の作業で一番手間のかかった部分です。

鉄道路線をフィルターして表示する

データが準備できたら国土数値情報から鉄道データを取得して路線データと駅データを読み込みます。

今回は、JR東日本の一部路線だけが作業の対象なので、特定路線だけを表示させるフィルターを適用します。

レイヤパネルの鉄道路線レイヤを右クリックして、「フィルター」を選択します。

f:id:tekito-gottani:20161224120354j:plain

ここで、鉄道データの運営会社(N02_004)がJR東日本(東日本旅客鉄道)の路線だけ表示されるように、フィルタ式に「"N02_004" = '東日本旅客鉄道'」と入力します。

f:id:tekito-gottani:20161224120422j:plain

この方法以外にも、より細かく範囲に合致した表示をさせるには、「N02_003 in ('東海道線','横須賀線','東北線','根岸線','横浜線','南武線','鶴見線','山手線','中央線','青梅線','五日市線','総武線','東北線(埼京線)','赤羽線(埼京線)','常磐線','京葉線','武蔵野線')」という路線名に対するフィルタ指定をします。

同じように、駅レイヤに対してもフィルターをかけ、JR東日本だけの路線図を作成します。

f:id:tekito-gottani:20161224120503j:plain
「国土交通省国土政策局「国土数値情報(鉄道(全国))」をもとにid:tekito-gottaniがQGISを用いて編集・加工」

駅を融合する

駅名を表示させて、作成した路線図を拡大してみると、多くの路線が乗り入れている駅では、同じ駅名が多数表示されてしまいます。

f:id:tekito-gottani:20161224120556j:plain

これを防止するために、駅レイヤを駅名(N02_005)で融合します。ベクタ→空間演算ツール→融合で入力ベクタに駅レイヤ、融合フィールドにN02_005を指定して新たな駅レイヤを作成します。

f:id:tekito-gottani:20161224120753j:plain

元の駅レイヤを非表示にして、作成したレイヤを表示させると駅が融合されていることが分かります。

f:id:tekito-gottani:20161224120821j:plain

CSVファイルの読み込みと結合

続いて最初の項目で作成したCSVファイルをQGISに読み込みます。ブラウザパネルからCSVファイルを読み込ませても、今回作成したCSVファイルには位置情報がないので表示は特に変化しません。

CSVレイヤの属性テーブルを開いて読み込みが正常に行われていることを確認し、駅レイヤとの結合を行います。

f:id:tekito-gottani:20161224120922j:plain

結合を行うには、結合先のレイヤ(ここでは駅レイヤ)のプロパティを表示させ、「結合」タブを開き、「+」ボタンを押して下記のように結合条件を入力します。2つのファイルに共通するデータがあったら、駅レイヤの列に指定した項目を追加します。

f:id:tekito-gottani:20161224121000j:plain

f:id:tekito-gottani:20161224121029j:plain

作業が完了したら、駅レイヤの属性テーブルを開いて「eki_kigo」の項目が追加されていることを確認し、駅名ナンバリング表示用のshapeファイルとして別名保存します。

駅ナンバリング表示

最後に駅ナンバリングを表示させるため、まずは駅レイヤのフィルターに「"eki_kigo" is not null」と入力し、ナンバリングが登録されている駅名だけ表示します。

f:id:tekito-gottani:20161224121153j:plain

f:id:tekito-gottani:20161224121216j:plain
「国土交通省国土政策局「国土数値情報(鉄道(全国))」をもとにid:tekito-gottaniがQGISを用いて編集・加工」

続いてプロパティのラベル表示で「式ダイアログ」を使い、「"N02_005" + '\n' + "eki_kigo"」と入力します。これは、駅名表示して改行、続いて駅ナンバリングを表示するという意味になります。

この状態では見づらいので、スタイルやラベル表示を下記のように変更して、路線で色分けするとナンバリングがついた路線図が表示できます。

プロパティ変更項目
スタイル シンプルラインのペンスタイルをペン無し
ラベルの整形 複数行の配置を中央
ラベルの背景 背景描画にチェック
サイズタイプをバッファ、xとyを0.5
ラベルの背景 ボーダーカラーを黒
ボーダー太さを0.2
ラベルの配置 水平
ラベルのレンダリング このレイヤの全ラベル表示にチェック

f:id:tekito-gottani:20161224121334j:plain
「国土交通省国土政策局「国土数値情報(鉄道(全国))」をもとにid:tekito-gottaniがQGISを用いて編集・加工」

全体を表示させるとラベルが重なってしまうので、拡大して山手線周辺を表示させると下図のようになります。

f:id:tekito-gottani:20161224121429j:plain
「国土交通省国土政策局「国土数値情報(鉄道(全国))」をもとにid:tekito-gottaniがQGISを用いて編集・加工」