QGISでは、Pythonを使用して処理アルゴリズムを記述する唯一の方法は、QgsProcessingAlgorithmクラスを拡張することです。QGIS内では、プロセシングツールボックスの上部にあるスクリプトメニューの「新しいスクリプトを作成」を使用して、自分のコードを書けるプロセシングスクリプトエディタを開いて作成できます。

タスクを簡素化するには、同じメニューの「テンプレートから新しいスクリプトを作成する」を使用して、スクリプトテンプレートから開始できます。これによりQgsProcessingAlgorithmを拡張するテンプレートが開きます。

以下に、ベクトルレイヤーを入力として取り、特定の操作を行い、結果のレイヤーを出力として返すPythonスクリプトの例を示します。

from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing, QgsProcessingAlgorithm, QgsProcessingException, QgsProcessingOutputNumber, QgsProcessingParameterDistance, QgsProcessingParameterFeatureSource, QgsProcessingParameterVectorDestination, QgsProcessingParameterRasterDestination)
import processing

class ExampleProcessingAlgorithm(QgsProcessingAlgorithm):
    def tr(self, string):
        return QCoreApplication.translate('Processing', string)

    def createInstance(self):
        return ExampleProcessingAlgorithm()

    def name(self):
        return 'bufferrasterextend'

    def displayName(self):
        return self.tr('Buffer and export to raster (extend)')

    def group(self):
        return self.tr('Example scripts')

    def groupId(self):
        return 'examplescripts'

    def shortHelpString(self):
        return self.tr('Example algorithm short description')

    def initAlgorithm(self, config=None):
        self.addParameter(QgsProcessingParameterFeatureSource('INPUT', self.tr('Input vector layer'), types=[QgsProcessing.TypeVectorAnyGeometry]))
        self.addParameter(QgsProcessingParameterVectorDestination('BUFFER_OUTPUT', self.tr('Buffer output')))
        self.addParameter(QgsProcessingParameterRasterDestination('OUTPUT', self.tr('Raster output')))
        self.addParameter(QgsProcessingParameterDistance('BUFFERDIST', self.tr('BUFFERDIST'), defaultValue = 1.0, parentParameterName='INPUT'))
        self.addParameter(QgsProcessingParameterDistance('CELLSIZE', self.tr('CELLSIZE'), defaultValue = 10.0, parentParameterName='INPUT'))
        self.addOutput(QgsProcessingOutputNumber('NUMBEROFFEATURES', self.tr('Number of features processed')))

    def processAlgorithm(self, parameters, context, feedback):
        # Processing code goes here
        pass

このスクリプトは、QGISのプロセシングフレームワークで使用できるカスタムPythonスクリプトの一例です。このスクリプトは、ユーザーが選択したフィールドに基づいて溶解操作を実行し、溶解されたフィーチャの別のフィールドの値を合計します。

以上が、QGISでPythonスクリプトを書く方法についての基本的なガイドです。この情報がPythonとQGISのスクリプト作成に役立つことを願っています。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です