QGISのプラグイン作成 スクリーンショットサンプル(ファイル毎)


はじめに

このサンプルは、フォルダ内に格納されているshpを表示して、そのスクリーンショットを画像保存するプラグインです。


使い方

ここからzipファイルをダウンロードしてインストールします。インストールできたら、screenshot_sample.pyの53、54行目を適当に編集してください。

        self.inputdir =  'shpが格納されているフォルダパス' 
        self.outputdir = '画像の保存先のファイルパス' 

設定したらプラグインを再読み込みして実行してください。読み込んだshpのレイヤ全体を表示してスクリーンショットが撮られ、保存先に画像が保存されます。


コード

class ScreenShotSample(QgsMapTool):

    def exportMap(self): 
        self.canvas.saveAsImage(self.outputdir + '\{}.png'.format(self.layername) ) 
        QgsProject.instance().removeMapLayer(qgis.utils.iface.activeLayer()) 
        if len(self.filelist) > self.count: 
            self.setNextFeatureExtent() 
        else: 
            self.canvas.mapCanvasRefreshed.disconnect( self.exportMap ) 


    def setNextFeatureExtent(self): 
        self.layername, ext = os.path.splitext(os.path.basename(self.filelist[self.count])) 
        self.layer = self.iface.addVectorLayer(self.filelist[self.count], self.layername, "ogr") 
        self.iface.zoomToActiveLayer()  	
        self.count += 1 


    def start(self):
        self.ext = '.shp'
        self.inputdir =  'shpが格納されているフォルダ' 
        self.outputdir = '画像の保存先フォルダ' 

        self.filelist = glob.glob(self.inputdir + "\*" + self.ext) 
        if len(self.filelist) == 0: return 
        self.count = 0 
        self.canvas.mapCanvasRefreshed.connect( self.exportMap ) 
        self.setNextFeatureExtent() 
        
~略~

24行目 21行目で指定したフォルダ内のshpファイルのパスを取得して...
14、15行目 マップにファイルを全体表示しています。
4行目 表示が完了したら、スクリーンショットを保存します。
5行目 撮影終わったので、マップからレイヤを削除して...
7行目 次のファイルを読みに行きます。
ソース全文


最後までご覧頂き、ありがとうございました