# shred layer1 ## レイヤをシュレッダーにかけるQGISプラグインの話 ---- ## 皆さんは覚えてるだろうか ### オークションで自分の作品をシュレッダーにかけて話題になった人のことを ---- ![](https://i.imgur.com/L1Ob4H0.png) ---- ## それを~~パクって~~オマージュして作ったプログラムがこちら レイヤをシュレッダーにかけたように裁断するプログラム <img src="https://i.imgur.com/hf14OCp.png" width=50%><img src="https://i.imgur.com/9cXs2J6.png" width=50%> ---- ### 裁断用の短冊状のポリゴン ``` #VectorGrid if self.radioButton.isChecked() == True: shredGrid = processing.runAndLoadResults("qgis:creategrid",{'TYPE':2,'EXTENT':exta,'HSPACING':box.width()/shrednum,'VSPACING':box.height(),'HOVERLAY':0,'VOVERLAY':0,'CRS':layer.crs().authid(),'OUTPUT':'memory:'}) elif self.radioButton_2.isChecked() == True: shredGrid = processing.runAndLoadResults("qgis:creategrid",{'TYPE':2,'EXTENT':exta,'HSPACING':box.width(),'VSPACING':box.height()/shrednum,'HOVERLAY':0,'VOVERLAY':0,'CRS':layer.crs().authid(),'OUTPUT':'memory:'}) shredlayer = QgsProject.instance().mapLayersByName("グリッドベクタの出力")[0] ``` <img src="https://i.imgur.com/UJqUBUv.png" width=30%> ---- ### 各短冊で順番にクリップする ``` for i in range(1,shrednum+1,1): shredlayer.selectByExpression('"id" =' + str(i),QgsVectorLayer.SetSelection) processing.runAndLoadResults("native:clip", {"INPUT": layer, "OVERLAY":QgsProcessingFeatureSourceDefinition(shredGrid['OUTPUT'],True) , "OUTPUT": Dir + '/shred_'+layer.name() + "_" + str(i) + '.shp'}) ``` ![](https://i.imgur.com/9OvJUMZ.png) ---- ### 元のレイヤを削除します ``` #remove layer QgsProject.instance().removeMapLayer(layer) QgsProject.instance().removeMapLayer(shredlayer) ``` ---- ### 元データをディレクタから削除します ``` #shp一式選択 files = glob.glob(filename.split('shp')[0]+'*') #Delete for i in files: os.remove(i) self.close() ``` ---- ### で、ここまでは以前よりやってたこと ---- ### それをきちんとプラグイン化したいと思ってた。 <img src="https://i.imgur.com/u3n4WCk.png" width=150>![](https://i.imgur.com/y3mgtG4.png) ---- ### ![](https://i.imgur.com/wTIAvOE.png) ---- ### 元のレイヤはきちんと削除される。 ![](https://i.imgur.com/ugJYkZe.png) ---- ### ディレクトリからも削除される・・・・ ---- ### はず・・・ ---- ### Macなら問題なく削除されたけど。 <img src="https://i.imgur.com/pTz49bJ.png" width=40%> ---- ### windowsの場合。 ![](https://i.imgur.com/KpD7f3e.png) ---- ### なんか残る <img src="https://i.imgur.com/HWHrhY1.png" width=40%> 元レイヤがQGIS上で開きっぱなしにみなされていることはわかるんですが。。。。 ---- ### どうしたらいいんでしょう・・・ https://github.com/nbayashi/shredLayerPlugin 教えてください ---- ### ちなみにこのアイコン <img src="https://i.imgur.com/u3n4WCk.png" width=120> ![](https://i.imgur.com/f33tGFT.png) ---- ### 元はこれで考えてたけど <img src="https://i.imgur.com/dJCtgyQ.png" width=120> あまりに、「それ」っぽくて著作権とかで怒られそうなのでやめました ---- ## ちゃんちゃん
{"metaMigratedAt":"2023-06-15T15:57:53.807Z","metaMigratedFrom":"Content","title":"shred layer1","breaks":true,"contributors":"[{\"id\":\"3421bddd-0b9a-4ce6-a283-84b7305e07c8\",\"add\":3652,\"del\":993}]"}
    329 views