適当のごった煮

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

QGISで鉄道路線ごとの距離を求める

スポンサードリンク

QGISを表計算ソフトのように使って、鉄道路線ごとの距離を算出します。

以下の内容はQGISの練習のために作成したものであり、実際の距離とは一致しないと思います。ご了承ください。

まずは使用するデータを国土数値情報 ダウンロードサービスの鉄道データから最新の平成28年度(N02-16_GML.zip)をダウンロードします。

解凍してQGISに読み込ませ、右下のプロジェクトのプロパティからCRSタブを選んで「オンザフライCRS変換を有効にする」にチェックを入れ、「JGD2000 / UTM zone 54N」を選択します。単位をメートルで表示させるための作業なので、「+units=m」が入っているCRSなら何でもいいと思います(正直よくわからない部分です)。

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

続いて、このデータレイヤに「運営会社+路線名」をまとめたフィールドを作成します。このフィールドを作成しないと、異なる会社の同名路線(札幌市と仙台市と京都市の東西線など)が区別できなくなってしまいます。

レイヤパネルから対象レイヤを右クリックして属性テーブルを開き、さらにフィールド計算機を開きます。ここで出力フィールド名を「4to3」、タイプを「テキスト」、幅を「50」に指定して、式は「"N02_004" + "N02_003"」とします。

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

その結果、元のデータの4番目と3番目の項目を足したテキストデータが5番目に作成されるので、ツールバーの保存ボタンを押して編集内容を保存します。

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

次に同じ路線を一つにまとめます。ベクタ→空間演算ツール→融合を選び、先ほど作成したフィールドで融合します。

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

すると、一つの路線が一つの列で表されるレイヤが作成されます。

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

最後に距離を示すフィールドを作成します。「運営会社+路線名」をまとめたフィールドを作成したときと同様のやり方で、出力フィールド名を「kyori」、タイプを「整数」、式に「$length / 1000」を入力します。

「$length」は長さをメートルで返すので、千で割ってキロメートル表示されるようにしています。

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

結果を保存すれば、各路線ごとの距離が算出されます。

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

特に必要のないデータ列であるN02_001と002を削除して路線距離を降順で表示させてみると、山陰線が最長路線という結果になりました。※あくまで計算上の結果です。

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

距離の長い路線は、ほとんどJR系のようなので、フィルターを「"N02_004" not like '%旅客鉄道%'」としてJR系を除いた結果、青い森鉄道線が最長という結果になりました。

しかし、wikipediaによると計算結果の一位と二位の青い森鉄道線と肥薩おれんじ鉄道線はもともとJRの路線だったそうで、純粋な私鉄最長線は東武鉄道伊勢崎線で、近畿日本鉄道大阪線があとに続くという結果になりました。この結果はwikipediaの記述とも一致します。

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

また、フィルターで「kyori > 200」として200km以上の路線を表示させてみると下記のようになりました。

f:id:tekito-gottani:20171115165606j:plain
「国土交通省国土政策局「鉄道データ」をもとにid:tekito-gottaniがQGISを用いて編集・加工」

この他にも、レイヤをクリックして名前を付けて保存の画面でCSVを選択し、オプションのGEOMETRYを<既定値>に変えて保存すると、属性テーブルで確認できる情報と同じ表が作成できます。

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

f:id:tekito-gottani:20171115165734j:plain
作成したCSVをExcelで開いて距離の降順でソート

せっかくなので路線距離の降順に100km以上の路線を距離100km以上の鉄道路線に投稿しました。参考程度に見ていただければ幸いです。