GIS奮闘記

元GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

Microsoft が公開している道路データを可視化してみよう

明けましておめでとうございます。本年も GIS奮闘記をよろしくお願いいたします。

2022年末に Microsoft が4780万kmを超える道路データ(GeoJSON形式)の公開をアナウンスしました。本年一発目のエントリーではそのデータを可視化してみようと思います。

公開されている道路データについて

深層学習モデルを使ってBing Maps画像(2020年〜2022年に撮影されたMaxarやAirbusの衛星画像含む)の道路を判読して作成したそうです。OpenStreetMapに無いデータも含まれているみたいですね。

可視化する道路データ

2023年1月7日時点では日本の道路データは公開されていませんでした(少なくとも東アジアの国の道路データは見つかりませんでした)。残念ですが、今回はオーストラリアの道路データを可視化してみようと思います。

実行環境

macOS 13.0.1
Python 3.9.6
QGIS3.16

手順

  1. 道路データをダウンロード
  2. オーストラリアの道路データを抽出
  3. 抽出したデータを可視化

道路データをダウンロード

道路データは Githubでダウンロードできます。

オーストラリアのデータが入っている 「Oceania」 のデータ(Oceania-Full.zip.)をダウンロードします。

zip の中には tsv が格納されています。あれっ、GeoJSONじゃないの?!と思ったのですが、どうやら tsvファイルの2列目が以下のように GeoJSON 形式になっているみたいです(1列目は国名)。なんとも微妙な形で公開するなとぼやきつつも必要なデータ(2列目)だけ抜き取ろうと思います。

留意点

これらの道路データには属性が付与されていないことがわかりました。道路といっても一般道や高速道路、一方通行や進行方向など様々な属性があるかと思います。それらの属性がデータで判別できないとなると当該データは背景として使うくらいしか用途がないかなと思います。

2. オーストラリアの道路データを抽出

以下のようにオーストラリアの道路データのみを抽出して GeoJSON ファイルとして出力します。

import pandas as pd

output_path = "Oceania-Full.geojson"

# 道路データ読み込み
df = pd.read_csv("Oceania-Full.tsv", sep='\t')

road_list = []
for index, row in df.iterrows():

    # オーストラリアの道路データのみを抽出対象とする
    if row[0] == 'AUS':

        # 必要なデータ(2列目)のみを抽出
        road_list.append(row[1])

# GeoJSONファイルの中身を作成
output1 = '{ "type": "FeatureCollection", "features": '
output2 = road_list
output3 = '}'
output = output1 + str(output2) + output3

# GeoJSONファイル出力
with open(output_path, 'w') as f:
    f.write(output.replace("'", ''))

以下のような GeoJSON ファイルが出力されます。

3. 抽出したデータを可視化

QGIS で出力した GeoJSON を読み込みます。わかりやすいように背景図をつけました。

このようにオーストラリアの道路データが可視化されたことがわかります。

さいごに

いかがでしたでしょうか?Microsoft はあまり GIS のイメージが無かったのですが、調べてみると意外と GIS もやっているみたいですね。興味のある方はぜひデータを眺めてみてください。本日は以上です。