eyecatch

空港まで車で何分? QGISで所要時間を計算して可視化してみよう

投稿日: 最終更新日:
この記事はQGIS 3.40を使用しています。

この記事でわかること


  • OSMデータの読み込み方法
  • 道路データを利用して所要時間を計算する手順

こんな人におすすめ


  • QGISでOSMデータを読み込んでみたい方
  • QGISを使って道路データから所要時間を計算したい方

はじめに

筆者は北海道に住んでいるのですが、ふと「北海道で空港から最も遠い場所はどこだろう?」という疑問が浮かびました。

道北の稚内空港と旭川空港の中間地点か、それとも道南の渡島半島の中央部あたりなのか。

この記事では、QGISで道路データから所要時間を計算し、可視化する方法を解説します。

道路データをQGISに読み込む

OSMデータをQGISに読み込む方法

所要時間を計算するには道路データが必要です。今回はOpenStreetMap(以下OSM)の道路データを使用します。

OSMの詳細は以下の記事をご覧ください。

OSMデータの読み込みには、プラグイン「QuickOSM」を使用します。インストール方法と使い方については、以下の記事をご覧ください。

「Quick query」タブを選択し、読み込む領域を中央左の[In]プルダウンメニューから選びます。今回は[Canvas Extent](QGISのキャンバス領域)を選択しました。

以下の項目を設定します:

  • Key:OSMの道路タグである[highway]
  • 左のプルダウン:[Or]
  • Value:[motorway](高速道路)、[trunk](国道)、[primary](主要地方道)、[secondary](その他主要道)と、それぞれの[〇〇_link]を入力

設定後、[Run query]を押します。

QuickOSMの画面
QuickOSMの画面

読み込む地物が多すぎると処理がスキップされるため、キャンバス領域を狭くするか、縮尺を上げて調整してください。

数十秒待つと、道路データが読み込まれます。

QuickOSMで道路が出力された
QuickOSMで道路が出力された

【応用編】道路データを加工する

この項目は、道路種別ごとに異なる速度を設定したい方向けです。速度を一律にする場合は、次の章「空港からの所要時間を計算する」までスキップしてください。

OSMデータにはmaxspeedタグに制限速度(最高時速)が記録されています。

ただし、データが入力されていない道路も多いため、その場合は道路種別から速度を推定して自動的に付与します。

各道路の時速は、motorway(高速道路)=90km/h、trunk(国道)=70km/h、primary(都道府県道)=60km/h、secondary(その他の道路)=50km/hとしました。

属性テーブルの[フィールド計算機]から新しいフィールド[speed]を作成し、以下を入力します。

CASE
  WHEN "maxspeed" IS NOT NULL AND "maxspeed" != '' AND "maxspeed" > 0 
    THEN "maxspeed"
  ELSE
    CASE
      WHEN "highway" = 'motorway' THEN 90
      WHEN "highway" = 'motorway_link' THEN 60
      WHEN "highway" = 'trunk' THEN 70
      WHEN "highway" = 'trunk_link' THEN 50
      WHEN "highway" = 'primary' THEN 60
      WHEN "highway" = 'primary_link' THEN 40
      WHEN "highway" = 'secondary' THEN 50
      ELSE 30
    END
END

これで、新しいフィールド[speed]が追加され、すべての道路データに速度が設定されます。

OSMの道路データに新しいフィールド[speed]が追加された
OSMの道路データに新しいフィールド[speed]が追加された

空港からの所要時間を計算する

所要時間の計算には、プラグイン「QNEAT3」を使用します。

インストール後、プロセシングツールボックスから[QNEAT3 - Qgis Network Analysis toolbox]を選択し、[Iso-Areas]→[Iso-Areas as Pointcloud (from Point)]をダブルクリックします。

プロセシングツールボックスからQNEAT3を選択
プロセシングツールボックスからQNEAT3を選択

ダイアログが表示されたら、以下の項目を設定します:

  • [Start Point]:計算開始点(地図をクリックして選択)
  • [Size of Iso-Area]:到達範囲を秒単位で入力(1時間の場合は3600)
  • [Optimization Criterion]:Fastest Path(time optimization)を選択
  • [Speed field]:speed(前述の「道路データを加工する」を実施した場合のみ入力)
  • [Default speed]:50

設定後、[実行]をクリックします。

QNEAT3の画面
QNEAT3の画面

今回は新千歳空港付近の道路を計算開始点としました。

プロセスが完了すると、新千歳空港を中心に道路上へポイントが表示されます。これが1時間以内に新千歳空港へ到達できる範囲です。

新千歳空港を中心に1時間で到達できる範囲が出力された
新千歳空港を中心に1時間で到達できる範囲が出力された

属性の「cost」フィールドで色分けすれば、時間に応じたグラデーション表示も可能です。

時間に応じてグラデーションで色分けした例
時間に応じてグラデーションで色分けした例

北海道で一番空港から遠い地点を探す

北海道の他の空港も同様に計算し、1つのレイヤに統合します。

プロセシングツールから[SQLを実行]を選択します。

統合したいデータソースを選択し、下記のコードを入力して実行すると、各地点の最小値を取得してマージできます。

(マージするレイヤ数に応じて「UNION ALL SELECT cost, geometry FROM input○」の行を増減させてください)

SELECT 
  MIN(cost) as min_cost,
  geometry
FROM (
  SELECT cost, geometry FROM input1
  UNION ALL
  SELECT cost, geometry FROM input2
  UNION ALL
  SELECT cost, geometry FROM input3
  …マージするレイヤの数だけ増やす
)
GROUP BY geometry

マージされたデータの[min_cost]を降順にソートし、最も数値が大きい地点を選択します。

8879秒(=2時間28分)が最大値となった
8879秒(=2時間28分)が最大値となった

北海道で空港から最も遠い地点は、島牧村 泊(泊川河鹿の湯付近)で、丘珠空港まで2時間28分(8879秒)となりました。

北海道で空港から一番遠い地点は「島牧村 泊」となった
北海道で空港から一番遠い地点は「島牧村 泊」となった

他にも空港から遠かった地点として、以下が挙げられます:

  • 苫前町三渓(2時間21分)
  • 羽幌町上羽幌(2時間19分)
  • 新ひだか町、浦河町、様似町の山間部

これらは空港と空港の間に位置する行き止まりの山間部に多く見られました。

地図のスタイリング

色分け

サーモグラフィをイメージして、「空港から近い=暖色系」「離れるほど寒色系」という配色で、所要時間を30分ごとに色分けしました。

30分ごとに6階調のグラデーションに色分け
30分ごとに6階調のグラデーションに色分け

「近い=寒色系」という配色が一般的という意見もあるかもしれませんが、ヤフー(2015)が制作した到達時間マップのように、「近い=暖色系」とする例も多く見られます:

デザイン

空港のアイコンは、QGISのプリセットにあるSVGと円を組み合わせて作成しました。背景地図は国土数値情報データをもとに海岸線と市町村ラベルを表示させて完成です!

地図をスタイリングして完成!
地図をスタイリングして完成!

【おまけ】実情に即した計算をするには?

筆者が当初作成した地図は、OSMデータの制限速度や道路種別から推定した最高速度で計算していました。そのため、「都市部ではこんなに早く着けない」というコメントをXでいただきました。

そこで、国土交通省が公開している「平均旅行速度」のデータを利用することにしました。

「平均旅行速度」は、信号待ちや渋滞を含む実際の移動時間で計算されています。

北海道全域の朝夕旅行速度を見ると、一般国道(直轄)はDID(人口集中地区)では時速20キロ台ですが、市街部では40キロ台、平地部・山間部では50キロ台後半となっています。同じ道路でも地域によって大きな差があることがわかります。

国土交通省「令和3年度全国道路・街路交通情勢調査 一般交通量調査 集計結果整理表」より
国土交通省「令和3年度全国道路・街路交通情勢調査 一般交通量調査 集計結果整理表」より

これを参考に下記の表の値を設定し、道路データをDIDに重なる部分とそうでない部分に分類して平均旅行速度を付与しました。

道路種別

DID(人口集中地区)

非DID

motorway(高速道路)

時速60キロ

時速80キロ

trunk(国道)

時速40キロ

時速60キロ

primary(主要地方道)

時速30キロ

時速50キロ

secondary(その他主要道)

時速20キロ

時速45キロ

下記画像は、従来の「制限速度(最高速度)」(左)と「平均旅行速度」(右)で計算した結果の比較です。特に都市部を経由する場合の到達範囲が狭くなり、より実情に近い結果になったと思われます。

制限速度と平均旅行速度で計算した際の関東地方の比較
制限速度と平均旅行速度で計算した際の関東地方の比較

これ以上の精度を求める場合は、実際のプローブデータや渋滞情報などを利用する必要があるかもしれません。

おわりに

最後に、「平均旅行速度」で計算したデータを使い、全国のマップも作成しました。

北海道以外では、群馬県北部、伊豆半島、高知県西部などに、2時間以上かかる水色〜青のエリアが広がっています。

<a href="https://x.com/chizutodesign/status/1991103250314224025" target="_blank">全国の空港到達時間マップ</a>
全国の空港到達時間マップ

このように、QGISを使えばOSMの道路データから所要時間を計算し、可視化することができました。

今回はQGISの標準機能のみで計算しましたが、より専門的な解析方法もあります。

興味のある方は、@geograさんの解説記事もぜひご覧ください!

データ出典

この記事を書いた人
MIERUNE Inc. 加藤 創(地図とかデザインとか)
MIERUNE Inc. 加藤 創(地図とかデザインとか)

デザイン制作会社を経て、北海道札幌市の株式会社MIERUNEでグラフィックデザイナーとして携わる。X(旧Twitter)などのSNS上にて「地図とかデザインとか」の名前で地図や路線図などを中心とした作品を発表している。

関連する記事