明けましておめでとうございます。本年も 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
手順
- 道路データをダウンロード
- オーストラリアの道路データを抽出
- 抽出したデータを可視化
道路データをダウンロード
道路データは 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 もやっているみたいですね。興味のある方はぜひデータを眺めてみてください。本日は以上です。