OpenStreetMap修正に有用な操作紹介

![壊れた道路](https://qiita-image-store.s3.amazonaws.com/0/10108/6b1c0ee0-f0c9-8f53-ea03-6bbca9f23c39.png)

おうふ！
こんなん見つけてしまったぜ...OSMはみんなで作る地図なので、自分がミスするだけでなく、他人のミスを直さないといけない時もあります。
こんな時にどうするか。

![共有ノード](https://qiita-image-store.s3.amazonaws.com/0/10108/c9021b32-1dff-c9b0-513c-0619510eb524.png)

JOSMで見た画面です。
正しいウェイと間違ったウェイと、複数のウェイががっつり1つのノードを共有しています。
このままノードを動かすと、正しいウェイまで引きずられて動いてしまいます。

![間違ったウェイを選択](https://qiita-image-store.s3.amazonaws.com/0/10108/e84d0fbd-c540-fd20-0c3d-22f3d2c56abe.png)

こんな時は、ノードを選択したまま、引き離したいウェイをシフトキーを押しながら選択します（要するにノードとウェイを両方選択）。

![ウェイを引き離す](https://qiita-image-store.s3.amazonaws.com/0/10108/97dcf56b-66b7-8ea6-e2f4-132647fb9ab8.png)

その状態で、ツールから「ウェイを引き離す」を選択します。

![引き離し成功](https://qiita-image-store.s3.amazonaws.com/0/10108/77bc1b35-0275-cb27-20d9-a58034812874.png)

間違っていたウェイのノードが自由に動かせるようになりました。
これで正しい位置に配置すれば、修正完了です。

こんな感じで、新たに書くよりも修正する時に有用なやり方をいくつか紹介したいと思います。

## 建物を分割（単一ポリゴンの際）

![元ポリゴン](https://qiita-image-store.s3.amazonaws.com/0/10108/a6295f38-d15e-1793-93e9-f733196cfc24.png)

このような建物（と見立てたポリゴン）を2つに分割したいとします。

![切り離したい場所のノードを選択](https://qiita-image-store.s3.amazonaws.com/0/10108/68602cec-f062-7f84-47b9-47dabc51af21.png)

切り離したい場所のノードを選択します。
必ず2箇所になるはずです（シフトを押しながら複数選択）。
切り離したい箇所にノードがない場合は、ウェイ中点を動かす等して新たに作りましょう。
もし新たに作った結果、直線が歪んで気持ち悪い、等がありましたら、ツールの「ノードを一直線に配列」等で調整しましょう。

![ウェイを分割](https://qiita-image-store.s3.amazonaws.com/0/10108/479df44c-1713-21c6-fc08-6ab5d7d38f0d.png)

切り離したいノードを選んだ状態で、ツールの「ウェイを分割」を実行しましょう。
閉じポリゴンが2つの開ポリゴンに分かれます。
が、このままではまだノードを共有しているので、右の開ポリゴンを動かすと左のポリゴンも変形してしまいます。
最初の例の「ウェイを引き離す」を行い、2つを完全に引き離します。

![完全に分離](https://qiita-image-store.s3.amazonaws.com/0/10108/550cbe17-f9ba-fd94-300f-ee0f2b90b363.png)

これで互いを独立に動かせるようになったので、後は追加（ショートカットキーA）で、両方のポリゴンを閉じれば

![分割完了](https://qiita-image-store.s3.amazonaws.com/0/10108/1eec1dca-cd2e-f3e6-4974-6fae6ff83b7e.png)

完了です！

## 建物を分割（ウェイを共有している場合）

![ウェイを共有](https://qiita-image-store.s3.amazonaws.com/0/10108/9a266db1-32fb-8a16-0bdd-d27e26067486.png)

こんな感じでウェイを共有しているポリゴンを引き離したい場合は、

![一方を選択](https://qiita-image-store.s3.amazonaws.com/0/10108/223d2cb0-8157-22c2-8071-8b83bc95efb9.png)

一方を選んで、「ウェイを引き離す」だけで...

![分割完了](https://qiita-image-store.s3.amazonaws.com/0/10108/e856bb13-d727-00df-f9ea-c73d1d355ee3.png)

分割完了！簡単！

ちなみに、「ウェイを引き離す」で、そのウェイが他と共有しているノード全てを引き離したい場合は、引き離すノードとウェイ両方を選ばなくても、今のようにウェイだけを選べば、全て引き離してくれます。
逆に、一部のノードだけ引き離したい場合は、対象にしたいノードとウェイ両方を選択します。

たとえばこんな構成で
![共有ノード複数の例](https://qiita-image-store.s3.amazonaws.com/0/10108/623cf700-7f7a-f922-5dc9-04d8507a86ac.png)

ノードを選ばずに分割すればこうなりますが、

![ノードを選ばず分割](https://qiita-image-store.s3.amazonaws.com/0/10108/aef5ae6b-821e-78b0-fc86-6f2f58dfde20.png)

右2つのノードだけ選んで分割するとこうなります。

![ノードを選んで分割](https://qiita-image-store.s3.amazonaws.com/0/10108/2f64038a-0160-6600-4a63-af7c777f38fb.png)

## ウェイを通過する別のウェイを、交差場所で結合する

![交差するウェイ](https://qiita-image-store.s3.amazonaws.com/0/10108/eb697014-dd75-1e84-a332-b690f879a528.png)

こんな例で、閉ポリゴンと直線をノードで結合したい場合があるとしましょう。

![相手ウェイそばにノード追加](https://qiita-image-store.s3.amazonaws.com/0/10108/aa95fa82-a1a7-fe3c-7cfe-8900f60ed68f.png)

一方のウェイで、相手のウェイの交点そばにノードを作ります。
今回は直線側に作りましたが、ポリゴン側に作っても問題ありません。
（もしかしたらノードを作らずにすむ方法もあるのかもしれませんが、私は知りません...）
作ったノードと、相手のウェイを選択しましょう。

ここで使えそうなツールメニューが2つあります。
「ノードをウェイに参加させる」と、「ウェイ上にノードを移動」ですが、この違いは、前者はウェイ側がノードに近寄ってくるのに対し、

![ノードをウェイに参加させる](https://qiita-image-store.s3.amazonaws.com/0/10108/3c28db67-57ac-253a-4558-805fbd40a266.png)

後者はノードがウェイ上に移動します。

![ウェイ上にノードを移動](https://qiita-image-store.s3.amazonaws.com/0/10108/e6785fef-2a60-17dd-08a6-ca609b4341a4.png)

いずれにしても、後者でも元の直線側はノードが移動した結果歪んだりするので、「ノードを一直線に配列」等での調整はどちらでも必要でしょう。

他にもいろいろありますが、あまり長くなるのもアレですし、マルチポリゴンとかに突っ込むと割と沼なのでこのくらいで。
これだけでもいろんなミスを直せるようになるのではと思います。