# <font color="#ffd700">shred layer Episode2</font> ---- ### <font color="#4682b4">遠い昔、はるか彼方の銀河系で・・・</font> ---- ### 某アーティストに影響を受けてマップ上のレイヤをシュレッダーにかかるプラグイン作ったやで ![](https://i.imgur.com/L1Ob4H0.png) ---- <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61492/ac258e2c-40e6-1b41-c967-5f93db08748c.png" width=80%> ---- ### なんやかんや言われる ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61492/c8d18c24-db07-610b-2ae7-250932db9f27.png) ---- ### やってみました #### 裁断方向の充実 ![](https://i.imgur.com/YJRThsh.png) ![](https://i.imgur.com/4YceW1i.png) ---- ### コラージュ機能(ベクタレイヤのみ) ![](https://i.imgur.com/Nuo4bsr.png) ---- ### 何やってんの? #### シュレッド用のフィーチャの領域をリスト化 ![](https://i.imgur.com/6f58TVR.png) ``` list = (①.extent,②.extent,③.extent,・・・) ``` ---- #### リストをシャッフル ``` import random random.sample(extent_list,len(list)) ``` ![](https://i.imgur.com/mV1ez7A.png) ---- #### 領域の差分を取る 移動分の距離が得られる ``` リスト(①,②,③,④,⑤) -リスト(②,③,④,⑤,①) =(①',②',③',④',⑤') ``` ![](https://i.imgur.com/oZ4aVUd.png) ---- #### 各領域の地物のジオメトリに差分の距離を加える これによって、地物を移動できる (①+①',②+②',③+③',④+④',⑤+⑤') ![](https://i.imgur.com/mI8SilZ.png) ---- #### フィーチャのジオメトリは以下で編集 ``` for feat in layer.getFeatures(): geom = feat.geometry() geom.translate(x',y') layer.dataProvider().changeGeometryValues( {feat.id(): geom}) iface.mapCanvas().refreshAllLayers() layer.triggerRepaint() ``` ---- ---- ---- ---- #### 今後の展望 - ラスタもシャッフル機能つける - プラグインの公式リポジトリ化 ---- ### 教えてください - 2度目以降プラグインウインドウを開いた際に、前回の設定が残っているのどうにかしたい - 実行後、新規プロジェクトにするとエラーが生じる ![](https://i.imgur.com/EUDmTuZ.png)
{"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}]"}
    301 views