Mapillaryの標識フィルタ

すっかり気がついていませんでしたが、Mapillaryで、機械学習成果として検知された標識や地物をフィルタして表示したり、ダウンロードしたりする機能が追加されていました。

これまでも、OSMを編集するにあたってMapillaryの道路標識の自動認識はとても重要な手がかりのひとつでしたが、認識される数があまりにも多いため、編集している途中で「やってられんな」という状態になることが（個人的に）課題でした。
これが、データをダウンロードできることにより、画期的に視認性が高まり、編集や管理がしやすくなりました。

ここでは、フィルタリングした標識データを使って、JOSMで効率的に地図編集を行う方法をまとめます。

## 必要となるJOSMプラグイン
今回の作業では、以下のJOSMプラグインを利用します。

* opendata
* Mapillary
* todo

## Mapillaryで対象のデータをフィルタ
[Mapillaryの地図表示画面](https://www.mapillary.com/app)を開きます。
![スクリーンショット 2023-08-18 17.41.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/59df37eb-44bf-eea0-bac6-9d3c790e652b.png)

対象となる場所まで表示を移動させ、画面左上のフィルタアイコンをクリックします。
![スクリーンショット 2023-08-18 17.42.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/8574fcdc-67cb-671f-84f1-1d7f0115e97b.png)

*Show Traffic signs*の項目から、対象となる標識を選びます。複数選ぶことも可能です。
対象となる項目の数はかなり多いのですが、検索窓に文字列を入力すると対象の項目をフィルタできます。

試しに、`one way`と入力してみましょう。
大文字小文字は区別されませんが、スペースは正しく入力する必要があります。
![スクリーンショット 2023-08-18 17.45.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/7b8c9079-b3b9-6820-4e1d-8f7e453cb427.png)

日本で使われるのは、右向きの白い矢印（`Regulatory: One way right (g1)`）と、左向きの矢印（`Regulatory: One way left (g1)`）です。

それぞれ選択してフィルタに項目を追加すると、その標識のみ表示される状態になります。
![スクリーンショット 2023-08-18 17.50.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/dbe247e6-1cc5-3268-a982-c3049820d8cf.png)

対象の標識アイコンが表示されない場合、zoom14くらいまで地図を拡大するか、標識がありそうな位置まで表示を移動させてください。

## データを表示させた状態でダウンロード
対象のデータを表示させた状態で、downloadボタンを押してください。
geojson形式でデータがダウンロードされます。
![スクリーンショット 2023-08-18 17.52.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/54c655d6-7b99-8a47-2ec3-22cdf3d24bd3.png)

## geojson.ioで変換
ダウンロードされたgeojsonファイル（`mapillary-traffic-signs.json`）を、geojson.ioを使ってCSVに変換します。

http://geojson.io

geojson.ioを開き、Mapillaryからダウンロードしたgeojsonをドラッグアンドドロップすると、地図上にポイントが表示されます。

その状態で、geojson.ioのメニューからCSVで保存を選び、保存してください。
![スクリーンショット 2023-08-18 17.56.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/21cfcfb5-9f66-5071-201b-85be06f614e0.png)

## CSVファイルをJOSMで読み込み
JOSMを開きます。

oepndataプラグインを利用することで、JOSMはCSVファイルを読み込むことができるようになっています。CSVファイルをJOSMへドラッグアンドドロップしてください。

測地系は`WGS84測地系 (EPSG:4326)`を選びます。
![スクリーンショット 2023-08-18 18.03.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/9e9e8593-b2a6-d140-862c-9f07a69d6948.png)

CSVファイルがレイヤとして追加されます。（この例の場合、`points(1).csv`）
![スクリーンショット 2023-08-18 18.05.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/b73f0a5a-8b69-766a-1727-b768f475d149.png)

## JOSMのtodoプラグインでリスト化（オプション）
このままだとどのポイントを編集したか分かりづらいので、todoプラグインを使ってチェックができるようにします。

CSVのレイヤを有効化し、すべての地物を `Ctrl+A` で全選択します。
![スクリーンショット 2023-08-18 18.07.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/5612142b-8d1a-2953-cd05-7f76f3ec006d.png)

その状態でtodoプラグインを開き、`+`のアイコンを押して、すべての地物を作業リストに追加します。
![スクリーンショット 2023-08-18 18.07.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/99cc1f8f-a24a-edfc-9ec3-71bc86e2bfaa.png)

## 対象の地点のOSMデータをダウンロードして編集
項目を選択した状態で`ズーム`ボタンをクリックすると、対象のノードの位置にジャンプします。

ジャンプしたら、通常の編集と同様、その地点のOSMデータをダウンロードして編集します。
ただしその際、必ず「新しいレイヤとしてダウンロード」するようにして、CSVデータとは別のレイヤで作業するようにしてください。

もしCSVデータと同じレイヤにOSMデータをダウンロードして作業してしまうと、編集結果をアップロードする際、Mapillaryから抽出したCSVも一緒にOSMにアップロードしてしまうことになります。
謎のゴミデータがOSMに登録されてしまうことになりますので、注意が必要な箇所です。
![スクリーンショット 2023-08-19 8.29.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/5ff42610-17b2-411b-0c33-5444b2ac1e8b.png)

JOSMメニューの「画像」→「その他」からMapillaryプラグインを有効化し、画像を確認しながら編集します。
また、追補情報として、同じく「その他」の中にある`Mapillary Traffic Signs`レイヤや、`Mapillary point features`レイヤを有効化しておくと、対象となる画像の選定を簡単に行うことができるでしょう。
![スクリーンショット 2023-08-19 9.12.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/273cafce-3677-7cda-4515-e44f4afc5500.png)

編集や確認が終わったら、todoプラグインで`マーク`を押すと、対象の消込が行われ、次の対象への移動が実行されます。
適度なところでOSMにアップロードしましょう！（繰り返しますが、CSVファイルに含まれるデータをアップロードしないようにしましょう！）

## 日本の標識とMapillary featureの対応表
Mapillaryで認識される標識は大量にあり、単純にスクロールさせて対象を探すのは効率がよろしくありません。
と、いうわけで、日本でよく使われそうな標識とMapillary feature名称の対応表です。

元のデータはこちら。
* 標識: https://www.mapillary.com/developer/api-documentation/traffic-signs?locale=ja_J
* 地物: https://www.mapillary.com/developer/api-documentation/points?locale=ja_JP

### 対応表
|標識アイコン |標識名称 |Mapillaryフィルタ名 |Mapillary APIでの名称 |OSM wiki |
|---|---|---|---|---|
|![rds_034.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/f4e2c1a0-b5d7-26cd-25ee-bde0af558661.png)|一方通行（左向き）|Regulatory: One Way left (g1) |regulatory--one-way-left--g1|[Key:oneway](https://wiki.openstreetmap.org/wiki/Key:oneway)|
|![rds_034.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/d0aa7ffa-63e4-1848-4556-a81cee0e88a8.png)|一方通行（右向き）|Regulatory: One Way right (g1)|regulatory--one-way-right--g1|[Key:oneway](https://wiki.openstreetmap.org/wiki/Key:oneway)|
|![rds_025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/91150caa-345d-2ea4-d610-67bcf59afe6c.png)|重量制限|Regulatory: Weight Limit (g1)|regulatory--weight-limit--g1|[Key:maxweight](https://wiki.openstreetmap.org/wiki/Key:maxweight)|
|![rds_027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/465b681a-9665-ae65-3980-be547f05de6e.png)|最大幅|Regulatory: Width Limit (g1)|regulatory--width-limit--g1|[Key:maxwidth](https://wiki.openstreetmap.org/wiki/Key:maxwidth)|
|![rds_026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9928/d83847b6-c806-8c28-c864-6dfaaa98a68e.png)|高さ制限|Information: Height Limit (g1)|information--height-limit--g1|[Key:maxheight](https://wiki.openstreetmap.org/wiki/Key:maxheight)|

(そのうち追記予定)

画像出典: [地図に使える素材 FreeSozai.jp](https://freesozai.jp/itemList.php?category=roadsign&page=index&type=sozai)