適当のごった煮

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

QGISで高速バスの路線図を作成する

スポンサードリンク

関東圏を発着する高速バスの路線図を探しましたが、ピンとくるものがなかったので、国土数値情報のバスルートを用いて高速バスの路線図を作成します。ただし、使用するデータは平成22年(2010年)頃のものなので、参考程度もしくはQGISの練習用と考えてください。

国土数値情報 バスルートの「その他の情報」欄を読むと、「整備したバス路線は高速バスを含み」という記載があったので、さっそく関東甲信越と福島・新潟・静岡のバスルートデータをダウンロードしました。

最初にダウンロードした都県別データを解凍して同じフォルダに入れ、ここから一つのファイルにまとめます。

「ベクタ→データマネジメントツール→複数のシェープファイルを1つに結合する」を選択し、「フォルダのレイヤによって選択する」にチェックを入れ、データをまとめたフォルダのデータを複数選択します。

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

結合したデータは、高速バス以外の路線も含まれています。属性テーブルを開いて選別できそうな項目を探すと、「N07_003」の「バス系統」が数字だけか、数字ハイフン数字だけで構成されているものは単なる路線バスと考えてよさそうです。

そこで、属性テーブルからフィールド計算機を開き、路線バス判定フラグとして「flg」という項目を作成し、式に正規表現を使って「if ( regexp_match( "N07_003" , '^\\d+$') or regexp_match( "N07_003" , '^\\d+-\\d+$'), 0, 1)」と入力します。

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

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

フラグが機能していることを確認して変更を保存し、路線バスを表示しないようにフィルターします。レイヤを右クリックして「フィルター」を選択し、フィルタ式に「flg = 1」(N07_003の名称が路線バス的ではないルート)を表示させます。

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

続いて「ベクタ→空間演算ツール→融合」を選び「N07_003」で融合します。こうすることで、県が違っていても同じバス系統名であれば同じ路線として一つの路線に融合されます。

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

作成されたレイヤのCRSに「JGD2000 / UTM zone 54N」などを指定して距離計算をメートルで出来るCRSを指定して保存します。そして新たに保存したレイヤだけを表示させ、右下にあるプロジェクトのCRSの表示をクリックして、「'オンザフライ'CRS変換を有効にする」のチェックを外します。

場合によっては表示していたレイヤが見えなくなってしまうので、「レイヤの領域にズームする」で位置を調整します。

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

次にそれぞれのバスルートの距離を算出するために、属性テーブルのフィールド計算機を利用して、「kyori」という項目を作成し、式は「$length / 1000」とします。「$length」だけだと距離がメートルで算出されるのでキロメートルに直しています。

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

これでおおむねデータとしては完成です。あとは距離の項目を利用して、例えば「kyori > 100」などといった条件でフィルターすれば長距離のバス路線図が表示できます。ただ、融合作業の部分で関係のないデータ同士が融合されている部分があったりして、なかなか思い通りの結果とはなりませんでした。

f:id:tekito-gottani:20170725224247j:plain
「国土交通省国土政策局「バスルート(千葉、茨城、栃木、群馬、埼玉、東京、神奈川、長野、山梨、新潟、福島、静岡)データ)」をもとにid:tekito-gottaniがQGISを用いて編集・加工」

ここまで苦労して作成した路線図ですが、使用したデータは2010年頃のモノなので、あくまで参考程度なのが少々残念なところです。また、データ量が多くなるのでバス停データは使用していません。

すべての都道府県のバスルートとバス停データをダウンロードすれば理論上は全国版が作れると思いますが、かなり時間と手間がかかりそうです。