ウィキペディアタウンをサイバー空間で再現してみた

過去数度の[京都](https://www.facebook.com/events/259217684201888/)/[奈良](https://code4nara.doorkeeper.jp/events/20396)/[和歌山](https://www.facebook.com/events/913172885393477/)のオープンデータソン[^1]に参加して、いずれも海外の[ウィキペディアタウン](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E3%82%BF%E3%82%A6%E3%83%B3)の事例等を目標に掲げて活動しているわけなのだけれども、データの成果はそれなりに蓄積されても、実際に街中にQRコードが設置されて情報が引けて、という状況にはなかなかほど遠いです。
自発的にイベントに参加してくれるような予備知識がある層とは違う、一般の人々に向けて、制作や管理など物理的コストの発生する取り組みの意義を、どのようにして理解してもらうかが難しいです。
そもそも、説明しても、イメージをしてもらう事すら至難でしょう。

とか考えたところで、だったら街中にQRコードがあった時に引けるデータのシミュレーション？的なものを、現実の2次元写像たる地図の上で見せられれば、まずイメージしてもらうためのプロトタイプを見せられるんじゃないか？と思って、試作してみました。
できるだけコーディングとかせずに作るため、基本は@nogajunさんが

* [uMapとOverpass API(overpass turbo)を使ってOpenStreetMatsuyaマップを作る](http://www.nofuture.tv/diary/20150623.html)

でまとめて下さった、Overpass APIでのOSM検索と、その結果のuMapでの表示で実現しています。

* * * 

できたのがこんな感じ。
![ならまち〜京終Wikipediaタウン](https://qiita-image-store.s3.amazonaws.com/0/10108/347c351f-110c-467d-2ba5-89046c75f1c5.png)
[ならまち〜京終Wikipediaタウン](https://umap.openstreetmap.fr/ja/map/wikipedia_48731)

ならまち京終、等と地名が入ってますが、地図スクロールとともにリアルタイムに更新されるOverpass APIのクエリで動作していますので、スクロールするか経緯度指定さえしてやれば、どこででも使えます。

作り方の手順は、大筋はnogajunさん記事の通りですが、いくつか工夫したところのみ挙げます。

### 出力時に中心点を加えて、情報のあるところを分かりやすく 

今のところ、使っている[Overpass QL](http://wiki.openstreetmap.org/wiki/JA:Overpass_API)は以下の通りです。

```text:最終的なOverpass_QL
[out:json][timeout:25];(
  node["wikipedia"]["type"!="boundary"]({{bbox}});
  way["wikipedia"]["type"!="boundary"]({{bbox}});
);
out body center qt;
>;
out skel qt;
```

要素出力のbodyの後に`center qt`を加えていますが、このうち`center`はwayの外接矩形の中心に代表点のnodeを加えるコマンドです。
`center`を加える前は、面や線で入っている地物は、uMap側の設定で出しているラベルが表示されないため、クリックしてみるまで正体がわからず、また小さいポリゴンはnodeと違い、小縮尺では本当に点になってしまうので、存在がわからなくなってしまう問題がありました。
`center`を加える事で、中心点にラベルがついて、情報の所在がわかりやすくなりました。

また`qt`は、APIへのアクセスをタイル状に行う事で、検索を高速化できる設定のようです。

### 市町村界、都道府県界等は膨大なデータ量になるので対象外として削除

wikipediaタグの含まれる検索対象の地物の中には、都道府県界等大きなサイズのポリゴンも含まれます。
が、今のOverpass API + uMapの組み合わせでは、表示範囲内にある地物だけを取る事はできますが、表示範囲内に少しでもかかっていれば、どんな大きな地物でも全体を取ってきてしまうので、そんな大きなものを引っ掛けた場合、うまく表示できません。

いろいろ調査した結果、それほど大きな構造を持ち、かつWikipediaタグを含んでそうな地物は、`type="boundary"`の行政界と、`type="route"`のバス路線等だけのようでした。
そのうち、路線の方は、次に示すリレーションの排除でうまく排除できるようなので、行政界のみ、名指しで排除するクエリを書きました。

### リレーションはuMap側でうまく表示できないため、非対応とした

OSMの地物には、

* node: 点。
* way: 点の繋がった線。閉じた線は中が埋まっている場合、特別にareaと呼ぶ事もあるが、基本的には同じもの。
* relation: 複数の点と線等を組み合わせて、ひとつの地物として扱うもの。たとえば島のある湖のように、周辺の湖岸と、島の湖岸の2つの線で構成される、そういった地物。

といった種類がありますが、全ての地物に対応しようとしたところ、どうもリレーションが含まれていた場合に、uMapがうまく動作してくれないようでした。
そのため、このサイトの検索条件からは外してあります。

たとえば奈良県庁は、2つの建物によるマルチポリゴン=リレーションで表現されていて、かつWikipediaへのリンクを含みますが、上記の結果このサイトでは表示されていません。
今後どのように対応するか、クエリの再検討が必要です。

* * *

以上のような対応で、まだいくつか課題はありますが、うまく面白く動くテストサイトが作れたと思います。

## 位置情報をベースにした知のインデクシングを行いたい

今回のを作ってみようと思ったきっかけは、実空間でのウィキペディアタウンのシミュレートを行いたい、といったものでしたが、それとは別に私には、昔から、世の中の知のうち位置情報に紐づくものには、全て位置情報側からのインデクシングを行いたい、という願望があります。
今回のはそちらの意味でも、自分でもやっていて面白い試みでしたが、似たような取り組みとして、地域の案内板、掲示板を集めてネット上にマッピングしようという、[monumen.to](http://monumen.to/)というサービスがあります。
これも私のやりたいことにドンピシャだったので、少し前からそれなりに協力しているのですが、もし今回の記事で興味を持ってくださった方がいたら、monumen.toへの協力もよろしくお願いします。
もちろん、今回紹介したOverpass API + uMapの成果は、読まれた方がお住みの地域でも経緯度指定で使えますので、Wikipedia & OpenStreetMapの充実化 & 連携情報入力も、よろしくお願いいたします。

[^1]: [Wikipedia](https://ja.wikipedia.org/)や[OpenStreetMap](https://www.openstreetmap.org/)、[localWiki](https://ja.localwiki.org/)等の民間主導型オープンデータをみんなで集まって作るイベントの総称。