# <font color="#ffd700">shred layer Episode2</font>
----
### <font color="#4682b4">遠い昔、はるか彼方の銀河系で・・・</font>
----
### 某アーティストに影響を受けてマップ上のレイヤをシュレッダーにかかるプラグイン作ったやで

----
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61492/ac258e2c-40e6-1b41-c967-5f93db08748c.png" width=80%>
----
### なんやかんや言われる

----
### やってみました
#### 裁断方向の充実


----
### コラージュ機能(ベクタレイヤのみ)

----
### 何やってんの?
#### シュレッド用のフィーチャの領域をリスト化

```
list = (①.extent,②.extent,③.extent,・・・)
```
----
#### リストをシャッフル
```
import random
random.sample(extent_list,len(list))
```

----
#### 領域の差分を取る
移動分の距離が得られる
```
リスト(①,②,③,④,⑤)
-リスト(②,③,④,⑤,①)
=(①',②',③',④',⑤')
```

----
#### 各領域の地物のジオメトリに差分の距離を加える
これによって、地物を移動できる
(①+①',②+②',③+③',④+④',⑤+⑤')

----
#### フィーチャのジオメトリは以下で編集
```
for feat in layer.getFeatures():
geom = feat.geometry()
geom.translate(x',y')
layer.dataProvider().changeGeometryValues(
{feat.id(): geom})
iface.mapCanvas().refreshAllLayers()
layer.triggerRepaint()
```
----
----
----
----
#### 今後の展望
- ラスタもシャッフル機能つける
- プラグインの公式リポジトリ化
----
### 教えてください
- 2度目以降プラグインウインドウを開いた際に、前回の設定が残っているのどうにかしたい
- 実行後、新規プロジェクトにするとエラーが生じる

{"metaMigratedAt":"2023-06-15T20:55:57.851Z","metaMigratedFrom":"Content","title":"<font color=\"#ffd700\">shred layer Episode2</font>","breaks":true,"contributors":"[{\"id\":\"3421bddd-0b9a-4ce6-a283-84b7305e07c8\",\"add\":2538,\"del\":892}]"}