壊れた森林ポリゴンの修正_上級者編


森林を形成するマルチポリゴンの間違った編集によって、森林ポリゴンが壊れることが頻発しています。

広域のレンダリングには時間がかかることもあり、osm.orgを参照しつつ修正することはなかなか難しいのですが、[OSM Inspector](https://tools.geofabrik.de/osmi/)を使うことによって簡単に検知を行うことができます。
個々の修正はさほど難しい作業ではないことがほとんどのため、ここに手順を記載します。

## First of All, 大切なこと
データが間違っているからといって、絶対に怒ってはいけません。
壊れているデータを眺めるのは、サイズの違う服を着せられた時のような違和感を伴いますが、必ず、平常心を保ちましょう。

間違ったデータを憎んで、マッパーを憎まず、です。
実際、ちょっとした手違いやケアレスミスで、間違ったデータはすぐ作られます。コツは、小さいことを気にしないことです。

## 壊れたポリゴンの発見
GeoFabrik社が提供している[OSM Inspector](https://tools.geofabrik.de/osmi/)を表示します。

* https://tools.geofabrik.de/osmi/

左上の `View`から、`Area`を選択し、適宜、対象の位置まで表示を移動させてください。

![スクリーンショット_2018-09-02_8_49_47.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/cab9d307-8236-30c6-7b14-675bc1bbb06a.jpeg "スクリーンショット_2018-09-02_8_49_47.jpg")


これらのポリゴンはほぼ全て、データのジオメトリ（位置）や、リレーションの構造が間違っているなど、いわゆる「壊れた」ポリゴンです。
若干、気が遠くなりますが、コツコツやってゆきましょう。

主に修正対象となるのは、`Duplicate segments`カテゴリのなかにある以下の項目です。

* `Duplicate segment`: オレンジ色で表示

ただ、`Intersections`カテゴリや`Ring problems`カテゴリも、修正方法は似ているので、慣れてきたらトライしてみてください。

オレンジ色のデータをブラウザ上で選択します。
選択すると、右側のウィンドウに、対象オブジェクトの情報が表示されます。

![スクリーンショット_2018-09-02_9_38_02.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/ca1558a0-3cd8-3259-961e-182e15c9211c.jpeg "スクリーンショット_2018-09-02_9_38_02.jpg")


表示された情報を確認し、修正したいエラーを確認します。
エラーの詳細部分に表示されているOSMの虫眼鏡アイコンをクリックすると、エディタを起動させたり、ブラウザ上でオブジェクトの情報を表示させたりすることができます。

右から3番目、Jの文字が表示されたアイコンをクリックすると、JOSMで対象のデータを読み込むことができます。
（JOSMを起動しておき、かつJOSMのオプションで、遠隔操作を有効にしておく必要があります）

![スクリーンショット 2018-09-02 9.12.03.png](https://qiita-image-store.s3.amazonaws.com/0/9928/105facd8-d755-6b87-a6ec-9ae1d5902d44.png "スクリーンショット 2018-09-02 9.12.03.png")


`Yes, Once`あるいは`Yes, Always`を選んで、対象のデータを読み込んで下さい。

## JOSMでのデータ読み込みと、エラー場所の特定

### 対象データの読み込み
JOSMでデータを読み込むと、いつものようにJOSMで編集を行うことができます。

リレーションを編集する際には、すべてのメンバーを読み込んでおく必要がありますが、しばしば、一部のメンバーだけしか読み込めていないときがあります。
対象のデータを完全に読み込むために、リレーションの残りのメンバーを読み込みましょう。
`選択`あるいは`リレーション`のウィンドウから対象のリレーションを選択して、`不完全なデータをダウンロード`します。

![スクリーンショット 2018-09-02 9.55.28.png](https://qiita-image-store.s3.amazonaws.com/0/9928/7136a0f8-7ff1-8129-45b4-50cd499863c0.png "スクリーンショット 2018-09-02 9.55.28.png")


データのダウンロードが終わったら、`リレーション`ウィンドウから、対象のリレーションの状態を確認します。
`リレーション`ウィンドウで対象のリレーションを選択し、リレーションエディタを起動させます。

![スクリーンショット_2018-09-02_9_56_23.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/32225e23-cff2-3aef-bd03-181c465967aa.jpeg "スクリーンショット_2018-09-02_9_56_23.jpg")

![スクリーンショット 2018-09-02 9.59.06.png](https://qiita-image-store.s3.amazonaws.com/0/9928/795e4563-52bb-fa6b-c477-e9d608c071fa.png "スクリーンショット 2018-09-02 9.59.06.png")

### ウェイの並び替え
今回は問題ないようですが、たまに、outerのウェイがつながっていないことがあります。

outerのウェイがつながっていない場合は以下のように、円環ではなく、細切れになった線が表示されます。

![outerがつながっていない例](https://qiita-image-store.s3.amazonaws.com/0/9928/a4fa2886-8df6-c109-acfb-47b26c854662.png "スクリーンショット 2018-09-02 9.22.59.png")

この場合、まずはウェイを正しく並び替えましょう。

![スクリーンショット_2018-09-02_9_23_33.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/6f1389df-d0de-de7c-95e9-80e238013b45.jpeg "スクリーンショット_2018-09-02_9_23_33.jpg")

この操作で正しくリングがつながらないこともありますが、どちらにしろ後で修正するので、気にしないことにしましょう。
OKを押して、リレーションエディタを閉じます。

### エラー箇所の特定と修正
並び替えが終わったら、JOSMの妥当性検査を行います。

すると、いくつかのエラー、あるいは警告が検知されるはずです。
当該のエラーに似た内容を探しましょう。

Inspectorで検知されたオレンジのエラーは `duplicate_segment` (セグメントの重複) ですが、今回はJOSMでエラーとして`自分自身が交差しているウェイ`が検知されています。
たぶんこれが検知されていると思われるので、対象にズームして確認します。

![スクリーンショット 2018-09-02 10.01.40.png](https://qiita-image-store.s3.amazonaws.com/0/9928/3edca5e6-583b-28b9-d38e-f4eb8c0baa78.png "スクリーンショット 2018-09-02 10.01.40.png")

どうやら、ウェイの一部が重複して描かれているようです。

![スクリーンショット 2018-09-02 10.04.39.png](https://qiita-image-store.s3.amazonaws.com/0/9928/1f63640f-bf0e-8103-9ecf-08f2901b9292.png "スクリーンショット 2018-09-02 10.04.39.png")

削除します。

![スクリーンショット 2018-09-02 10.05.30.png](https://qiita-image-store.s3.amazonaws.com/0/9928/140cd6b0-4512-9c2c-3fa7-f773ecd7160c.png "スクリーンショット 2018-09-02 10.05.30.png")

再び妥当性検査をかけますが、どうもエラーが直りません。
よく見てみると、2つのノードが重複しています。

![スクリーンショット 2018-09-02 10.08.34.png](https://qiita-image-store.s3.amazonaws.com/0/9928/f31df94e-c173-76b9-6c3a-47141259a73b.png "スクリーンショット 2018-09-02 10.08.34.png")

ノードを移動させてみると、隠れていたウェイが出てきました。

![スクリーンショット 2018-09-02 10.09.01.png](https://qiita-image-store.s3.amazonaws.com/0/9928/1ad0b7f7-4c75-295c-e271-fab1a0dae8ea.png "スクリーンショット 2018-09-02 10.09.01.png")

せっかくなので、背景画像を頼りに正しいと思われる形に修正します。
主目的はエラーの修正なので、位置の修正は深追いしすぎない程度にしましょう。

妥当性検査を実行すると、無事エラーが解消されました。

![スクリーンショット 2018-09-02 10.11.27.png](https://qiita-image-store.s3.amazonaws.com/0/9928/c2359e80-5c3a-7126-c538-ad8541ea9501.png "スクリーンショット 2018-09-02 10.11.27.png")

### マルチポリゴン化の失敗を修正
よくある別の例を見てみましょう。
マルチポリゴンの作成に失敗し、`outer`と`inner`のウェイがつながってしまっている例です。

妥当性検査を実行すると、以下のような箇所が検出されます。
この場合、`ウェイが同じ区間を二度含んでいる`というエラーで検知されています。

![スクリーンショット_2018-09-03_7_53_36.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/94611b91-01b8-8859-d173-68e6f43c967b.jpeg "スクリーンショット_2018-09-03_7_53_36.jpg")

本来あるべき姿はこうです。
Innerのエリアを構成するウェイはouterウェイと接続せず、
独立したエリアで表現されます。

![スクリーンショット_2018-09-03_7_55_35.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/9141a663-4e21-950b-3a55-593619f81573.jpeg "スクリーンショット_2018-09-03_7_55_35.jpg")

あるべき姿に近づけるために、接続されてしまっているウェイを分割し、削除します。
ノードを選択し、ショートカット`p` (ウェイの分割) を押して分割します。

![スクリーンショット 2018-09-03 7.54.14.png](https://qiita-image-store.s3.amazonaws.com/0/9928/b044632f-b8b1-4654-619f-050586a0e25d.png "スクリーンショット 2018-09-03 7.54.14.png")

![スクリーンショット 2018-09-03 7.54.29.png](https://qiita-image-store.s3.amazonaws.com/0/9928/39e7e7f1-db4d-596a-67bf-2ceeff89f16f.png "スクリーンショット 2018-09-03 7.54.29.png")

不要な部分のウェイを削除します。
リレーションに所属しているオブジェクトを削除するため、警告が表示されますが、問題ありません。削除してください。

![スクリーンショット 2018-09-03 7.54.49.png](https://qiita-image-store.s3.amazonaws.com/0/9928/216d84c9-8574-b08e-3acd-98e3f8ed39ab.png "スクリーンショット 2018-09-03 7.54.49.png")

削除ができたら、リレーションエディタを開き、並び替え順の修正とメンバーのロールを修正します。
メンバーを並び替えた後、本来innerメンバーであるオブジェクトを選択し、`inner`ロールを割り当ててください。

![スクリーンショット_2018-09-03_7_55_35-2.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/9bcead37-7784-6921-fec5-ab3b6b8f634e.jpeg "スクリーンショット_2018-09-03_7_55_35-2.jpg")

この場合、マルチポリゴンの状況を確認し、全体から見て適切なロールが割り当てられるようにしてください。
基本構成は、以下の図のとおりです。

手前味噌ですが、リレーションに関するこちらの文章も参照してみてください。

* [Qiita: OpenStreetMapリレーションとは](https://qiita.com/nyampire/items/13f6dd0daad5cc072ea8)

![マルチポリゴン.png](https://qiita-image-store.s3.amazonaws.com/0/9928/05888a1b-3838-dfc8-3b43-a28c0304660f.png)

並び替えとロールの割当が完了し、妥当性検査で関連するエラーや警告が検出されなくなったら、osm.orgへのアップロードへ進みます。


## データのアップロードと確認
何度か修正と妥当性検査を繰り返してみて、エラーや警告が無くなったら、osm.orgへのアップロードを行います。

![スクリーンショット 2018-09-02 10.13.19.png](https://qiita-image-store.s3.amazonaws.com/0/9928/48203d03-0546-0a96-0203-989e000f6ea8.png "スクリーンショット 2018-09-02 10.13.19.png")

これで作業は完了です。
OSM Inspectorの更新は1日に1回程度のようなので、別のエラーを探して、妥当性検査 -> 修正 -> アップロードという流れで作業を行います。

個々の作業はさほど複雑ではないとはいえ、わりと疲れることは事実なので、根を詰めないようにしてください。

おつかれさまでした！