はじめに
国内外のOpenStreetMapコミュニティでは、みんなで集まってマッピングパーティー という愉快なイベントを開催しています。
マッピングパーティのガッチリしたやり方はとくに決まっていませんが、参加者でまち歩きをするなどして地域のお店や建物などの調査をおこない、その結果をOpenStreetMapに入力するのが一般的なマッピングパーティーの流れです。
マッピングパーティーの最後では「今日はどのくらいデータを追加・更新できたかなー」という振り返りは重要なプログラムだと考えています。
(とくにビギナーさんにとってわくわくするお土産があると、コミュニティや次のイベントに参加してくれるかもしれないですしね。)
振り返りでは、イベント前のOpenStreetMapのスクリーンショットなどを記録しておいて、終了時のiDエディタ画面と比較することがあります。ですがこの手法だと画面に慣れていないビギナーさんにとってはちょっとわかりにくいという声もいただきます。
また、地物の追加だけでなく、建物や道路の形状をアップデートした場合は、更新場所の見分けがつきにくいという弱点もあります。
このほかにも、OpenStreetMapで閲覧できる地図タイル画像の生成はリアルタイムでは行われないため、サイト上ですぐ変化が確認できない仕組みになっています。
(ふりかえりの比較イメージ)
そこでこの記事では、イベント終了間際にOpenStreetMapのデータマイニングツールであるOverpassTurboとオープンソースGISであるQGISを使ってマッピングパーティーの成果を参加者にすばやく共有するやり方を紹介します。
このやり方はここ最近わたしが関わったマッピングパーティーで実践を行い、参加者や主催者さんにも好評でした。もしよければ様々な場所でも試していただけると幸いです。
(もうちょっと楽にできるよ!というやりかたがあればぜひお教えください)
こんな方に
- OSM歴1-2年くらい
- マッピングパーティの良い成果をもたらしたい
- マッピングパーティーの運営さん/講師さんをしている
- QGISをつかってデータから図化ができる
準備物
- インターネット
- QGISが動くPC
(本稿ではQGIS 3.4.2 + OSX10.13.6(17G65)でテストを行っています)
ながれ
1. QGISをインストール
2. マッピングパーティー開始
3.OverpassTurboから時系列属性付きGeoJSONデータをダウンロード
4. QGISで図化
5. イベントまとめで投影・共有!
##やってみよう
1.QGISのインストール
OSXならこのへんとか、windowsならこのへんをどうぞ。なんかこまったらGoogle先生におねがいします。
あ、もちろんマッピングパーティー前日までにはインストールなどを済ませておくと当日ばたばたしなくて幸せです。
2.マッピングパーティー開始
よしなに。
マッピングパーティーにか関するまとめはこのへん やSakanoshitaさんの記事 をご参照ください
3. OverpassTurboから時系列付きデータをダウンロード
イベント終了30分前くらいになると、振り返りのための準備をはじめましょう。
今回用いるOverpassTurboでは、指定範囲のOSMデータをGeoJSONなどでダウンロードができるのですが、デフォルトの設定ではチェンジセットのタイムスタンプ属性がくっついてきません。
ですので、
out meta;
というアクションに変更することで、すべての要素が出力されます。取得に時間がかかるかもしれないので、このクエリではタイムアウトを180秒にしています。
※なお、OverpassTurboに下のコードを入力しなくても、すでにひな形がありますのでこちらをお使いください。
[out:json][timeout:180];
(
node({{bbox}});
way({{bbox}});
relation({{bbox}});
);
// print results
out meta;
>;
out skel qt;
ひな形のOverPassTurboのページが開いたら、イベントを行った地域あたりにマップを移動させて
- 実行 を押すとデータの取得が始まります。
- 右上の データ タブを押すと取得できたデータのプレビューが見れます。 timestamp の属性が取得できていますね。
※Sakanoshitaさんの記事にもOverpassturboによる抽出方法がでてきます。なるほど!、日付でくくるやり方もあるのね!
{
"type": "node",
"id": XXX9451017,
"lat": 4X.1975843,
"lon": 1XX.0023172,
"timestamp": "2017-09-29T11:04:58Z",
"version": 1,
"changeset": 52240XXX704,
"user": "XXXXXXX",
"uid": 1696339
},
3. QGISに読み込むために、エクスポートを押してGeoJSON形式で任意の場所に保存しましょう。
4. QGISで図化
ダウンロードしたGeoJSONファイルをQGISにドラッグ&ドロップで開きます。
どの要素を表示するか聞いてきますが、とりあえず 全てを選択 を押して、全ての要素を表示させましょう。
そうすると、OverpassTurboで取得したデータが画面に表示されます。
これだと全ての期間が表示されているので、まずはポリゴンのレイヤレイヤプロバティ→ソースからフィルタをかけます。
の右下にあるクエリビルダをクリックし、@timestampの属性フィールドにマッピングパーティー前日以降というフィルタをかけます
たとえば2018年6月2日にマッピングパーティーがあれば
"@timestamp" > '2018-06-01'
としておきましょう(属性の時間はUTCですので注意)。
ポイント・ラインにも同様のフィルタをかけると、マッピングパーティーで更新されたデータだけに絞れてきます
5. イベントまとめで投影・共有!
あとは、このあたりを参照にMIERUNE地図などの背景図などを足して、色を変えてみると。更新されたデータがはっきりしますね。
ここまでできたら、まとめのときに投影したり、スクリーンショットをグループ連絡用チャットに貼るのもよいですね。
まとめ
慣れれば速くて10分くらいで、このような図ができます。
また、属性テーブルをいじることで、更新レコード数などのエビデンスも算出可能です。
このほかにも、Timemanager pluginなどを使うと、この記事冒頭のアニメーションも作れたりしますので、いろいろ試してみてくださいね。
Happy Mapping!