QGISにおけるプロセシングプラグインのパラメータ



## プロセシングプラグインとは
QGISでは、QtDesignerを用いてダイアログ形式のプラグインを作成することのほかに、プロセシング形式のプラグインを作成することが可能です。
プロセシングプラグインで作成することにより、グラフィカルモデラーに組み込むことができたり、バッチ処理で複数のファイルを一括で処理することができるなど、多くの利点があります。
また開発者目線では、UIをプロセシングの型にあわせて作成するだけでよいので、開発時間の短縮も期待できるでしょう。

[QGIS公式ドキュメント | プロセッシングプラグインを書く](https://docs.qgis.org/3.22/ja/docs/pyqgis_developer_cookbook/processing.html)

弊社で開発しオープンソースとして公開している「登記所備付地図データ」をQGISで読み込むためのプラグインについては、プロセシング形式で作成しています。
https://github.com/MIERUNE/qgis-mojxml-plugin
    

この記事では、主にプロセシングプラグインで追加することができるパラメータについて紹介します。
なお、この記事の執筆にあたっては、以下の記事を参考にさせていただきました。
[QGIS のプロセシングプラグインを書いてみた - Qiita](https://qiita.com/tohka383/items/f8e3c91c32184aef3d7a)

## パラメータの追加・参照

`initAlgorithm`内で、`addParameter`メソッドでパラメータを追加する。下記はインプットレイヤを設定するパラメータ。パラメータにより引数は異なる。

```python
def initAlgorithm(self, config=None):
		self.addParameter(
        QgsProcessingParameterMapLayer(
			# コード内でパラメータを識別するために使用する名称
            'MapLayer',
			# UIに表示する文字列
            self.tr('QgsProcessingParameterMapLayer'),
            # Trueに設定されている場合、そのパラメータの設定が任意となる。
			optional=True
        )
    )
```

属性を設定するパラメータの場合はレイヤと紐づける必要があるため、`parentLayerParameterName`で親となるパラメータの名称を設定する。

```python
	def initAlgorithm(self, config=None):
			# レイヤの設定
			self.addParameter(
			            QgsProcessingParameterFeatureSource(
			                'FeatureSource',
			                self.tr('QgsProcessingParameterFeatureSource'),
			                optional=True
			            )
			        )
			
			# 属性の設定
			self.addParameter(
			            QgsProcessingParameterField(
			                'Field',
			                self.tr('QgsProcessingParameterField'),
							# 親レイヤのパラメータの名称を指定
			                parentLayerParameterName='FeatureSource',
			                optional=True
			            )
			        )
```

`processAlgorithm`内に実行時の処理を記載し、パラメータを参照する場合は、`parameterAsxxxx`メソッドを使用する。

```python
def processAlgorithm(self, parameters, context, feedback):
		# QgsProcessingParameterFileの場合
		filename = self.parameterAsFile(parameters, self.INPUT, context)
		input_layer = QgsVectorLayer(filename, 'input_layer', 'ogr')
```

その他のパラメータの参照はこちらのページを参照

[Class: QgsProcessingParameters](https://qgis.org/pyqgis/master/core/QgsProcessingParameters.html#module-QgsProcessingParameters)

## パラメータ一覧

[Welcome to the QGIS Python API documentation project](https://qgis.org/pyqgis/master/index.html)

- [Class: QgsProcessingParameterAggregate](https://qgis.org/pyqgis/master/core/QgsProcessingParameterAggregate.html)
- [Class: QgsProcessingParameterAnnotationLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterAnnotationLayer.html)
- [Class: QgsProcessingParameterAuthConfig](https://qgis.org/pyqgis/master/core/QgsProcessingParameterAuthConfig.html)
- [Class: QgsProcessingParameterBand](https://qgis.org/pyqgis/master/core/QgsProcessingParameterBand.html)
- [Class: QgsProcessingParameterBoolean](https://qgis.org/pyqgis/master/core/QgsProcessingParameterBoolean.html)
- [Class: QgsProcessingParameterColor](https://qgis.org/pyqgis/master/core/QgsProcessingParameterColor.html)
- [Class: QgsProcessingParameterCoordinateOperation](https://qgis.org/pyqgis/master/core/QgsProcessingParameterCoordinateOperation.html)
- [Class: QgsProcessingParameterCrs](https://qgis.org/pyqgis/master/core/QgsProcessingParameterCrs.html)
- [Class: QgsProcessingParameterDatabaseSchema](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDatabaseSchema.html)
- [Class: QgsProcessingParameterDatabaseTable](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDatabaseTable.html)
- [Class: QgsProcessingParameterDateTime](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDateTime.html)
- [Class: QgsProcessingParameterDefinition](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDefinition.html)
- [Class: QgsProcessingParameterDistance](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDistance.html)
- [Class: QgsProcessingParameterDuration](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDuration.html)
- [Class: QgsProcessingParameterDxfLayers](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDxfLayers.html)
- [Class: QgsProcessingParameterEnum](https://qgis.org/pyqgis/master/core/QgsProcessingParameterEnum.html)
- [Class: QgsProcessingParameterExpression](https://qgis.org/pyqgis/master/core/QgsProcessingParameterExpression.html)
- [Class: QgsProcessingParameterExtent](https://qgis.org/pyqgis/master/core/QgsProcessingParameterExtent.html)
- [Class: QgsProcessingParameterFeatureSink](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFeatureSink.html)
- [Class: QgsProcessingParameterFeatureSource](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFeatureSource.html)
- [Class: QgsProcessingParameterField](https://qgis.org/pyqgis/master/core/QgsProcessingParameterField.html)
- [Class: QgsProcessingParameterFieldMapping](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFieldMapping.html)
- [Class: QgsProcessingParameterFile](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFile.html)
- [Class: QgsProcessingParameterFileDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFileDestination.html)
- [Class: QgsProcessingParameterFolderDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFolderDestination.html)
- [Class: QgsProcessingParameterGeometry](https://qgis.org/pyqgis/master/core/QgsProcessingParameterGeometry.html)
- [Class: QgsProcessingParameterLayout](https://qgis.org/pyqgis/master/core/QgsProcessingParameterLayout.html)
- [Class: QgsProcessingParameterLayoutItem](https://qgis.org/pyqgis/master/core/QgsProcessingParameterLayoutItem.html)
- [Class: QgsProcessingParameterLimitedDataTypes](https://qgis.org/pyqgis/master/core/QgsProcessingParameterLimitedDataTypes.html)
- [Class: QgsProcessingParameterMapLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMapLayer.html)
- [Class: QgsProcessingParameterMapTheme](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMapTheme.html)
- [Class: QgsProcessingParameterMatrix](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMatrix.html)
- [Class: QgsProcessingParameterMeshDatasetGroups](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMeshDatasetGroups.html)
- [Class: QgsProcessingParameterMeshDatasetTime](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMeshDatasetTime.html)
- [Class: QgsProcessingParameterMeshLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMeshLayer.html)
- [Class: QgsProcessingParameterMultipleLayers](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMultipleLayers.html)
- [Class: QgsProcessingParameterNumber](https://qgis.org/pyqgis/master/core/QgsProcessingParameterNumber.html)
- [Class: QgsProcessingParameterPoint](https://qgis.org/pyqgis/master/core/QgsProcessingParameterPoint.html)
- [Class: QgsProcessingParameterPointCloudAttribute](https://qgis.org/pyqgis/master/core/QgsProcessingParameterPointCloudAttribute.html)
- [Class: QgsProcessingParameterPointCloudDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterPointCloudDestination.html)
- [Class: QgsProcessingParameterPointCloudLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterPointCloudLayer.html)
- [Class: QgsProcessingParameterProviderConnection](https://qgis.org/pyqgis/master/core/QgsProcessingParameterProviderConnection.html)
- [Class: QgsProcessingParameterRange](https://qgis.org/pyqgis/master/core/QgsProcessingParameterRange.html)
- [Class: QgsProcessingParameterRasterDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterRasterDestination.html)
- [Class: QgsProcessingParameterRasterLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterRasterLayer.html)
- [Class: QgsProcessingParameterScale](https://qgis.org/pyqgis/master/core/QgsProcessingParameterScale.html)
- [Class: QgsProcessingParameterString](https://qgis.org/pyqgis/master/core/QgsProcessingParameterString.html)
- [Class: QgsProcessingParameterTinInputLayers](https://qgis.org/pyqgis/master/core/QgsProcessingParameterTinInputLayers.html)
- [Class: QgsProcessingParameterType](https://qgis.org/pyqgis/master/core/QgsProcessingParameterType.html)
- [Class: QgsProcessingParameterVectorDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterVectorDestination.html)
- [Class: QgsProcessingParameterVectorLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterVectorLayer.html)
- [Class: QgsProcessingParameterVectorTileDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterVectorTileDestination.html)
- [Class: QgsProcessingParameterVectorTileWriterLayers](https://qgis.org/pyqgis/master/core/QgsProcessingParameterVectorTileWriterLayers.html)

## レイヤの入力

### QgsProcessingParameterFile

 外部のレイヤ・フォルダを選択。
![Untitled 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/35fd25e0-b944-140e-5a81-ab3ca8ba01a8.png)
```python
self.addParameter(
            QgsProcessingParameterFile(
                'File',
                self.tr('QgsProcessingParameterFile'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterFile](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFile.html)



### ****QgsProcessingParameterMapLayer****
インプットレイヤ。すべての種類のレイヤが対象
![Untitled 3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/a9154742-29a0-fae9-932b-0d36b0ef2957.png)


```python
self.addParameter(
            QgsProcessingParameterMapLayer(
                'MapLayer',
                self.tr('QgsProcessingParameterMapLayer'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterMapLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMapLayer.html)

### QgsProcessingParameterFeatureSource

インプットレイヤ。ベクタレイヤのみが対象
![Untitled 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/cd88d71d-cb0f-6d1b-a1a3-6fc150ac8e07.png)


```python
self.addParameter(
            QgsProcessingParameterFeatureSource(
                'FeatureSource',
                self.tr('QgsProcessingParameterFeatureSource'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterFeatureSource](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFeatureSource.html)

### QgsProcessingParameterVectorLayer

インプットレイヤ。ベクタレイヤのみが対象。

公式ドキュメントによると「**`[QgsProcessingParameterFeatureSource](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFeatureSource.html#module-QgsProcessingParameterFeatureSource)の`**使用がおすすめ」とのこと。

![Untitled 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/43d61483-1235-2ef2-3ee4-dc7e87bd38c4.png)


```python
self.addParameter(
            QgsProcessingParameterVectorLayer(
                'VectorLayer',
                self.tr('QgsProcessingParameterVectorLayer'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterVectorLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterVectorLayer.html)

### QgsProcessingParameterMultipleLayers

複数のレイヤのインプット。ベクターレイヤのみが対象。

![Untitled 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/341dff68-e1ac-2869-cbf5-045d8b927ce0.png)

![Untitled 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/86e1b1d5-eaf0-9318-2664-52e3b0e7b6ba.png)


```python
self.addParameter(
            QgsProcessingParameterMultipleLayers(
                'MultipleLayers',
                self.tr('QgsProcessingParameterMultipleLayers'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterMultipleLayers](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMultipleLayers.html)

### QgsProcessingParameterRasterLayer

インプットレイヤ。ラスターレイヤのみが対象。

![Untitled 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/b6695402-d3fc-0cd2-9554-58f5eb8d1bad.png)


```python
self.addParameter(
            QgsProcessingParameterRasterLayer(
                'RasterLayer',
                self.tr('QgsProcessingParameterRasterLayer'),
                optional=True
            )
        )
```

[QgsProcessingParameterRasterLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterRasterLayer.html)

### QgsProcessingParameterMeshLayer

インプットレイヤ。メッシュレイヤのみが対象。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/01045685-eac4-2bdf-7896-54b5e07d7c87.png)


```python
self.addParameter(
            QgsProcessingParameterMeshLayer(
                'MeshLayer',
                self.tr('QgsProcessingParameterMeshLayer'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterMeshLayer](https://qgis.org/pyqgis/master/core/QgsProcessingParameterMeshLayer.html)

## 属性関係

### QgsProcessingParameterField

ベクタレイヤの属性を設定するパラメータ

![Untitled 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/6caa5349-62b1-a72e-373d-5514b2978ed3.png)


```python
# レイヤの設定
self.addParameter(
            QgsProcessingParameterFeatureSource(
                'FeatureSource',
                self.tr('QgsProcessingParameterFeatureSource'),
                optional=True
            )
        )

# 属性の設定
self.addParameter(
            QgsProcessingParameterField(
                'Field',
                self.tr('QgsProcessingParameterField'),
								# 親レイヤのパラメータの名称を指定
                parentLayerParameterName='FeatureSource',
                optional=True
            )
        )
```

QgsProcessingParameterFieldの引数に`allowMultiple=True`を加えることで属性の複数選択が可能になる。

![Untitled 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/a253cf26-f186-07ac-f42f-318a8a3b0c87.png)


- [Class: QgsProcessingParameterField](https://qgis.org/pyqgis/master/core/QgsProcessingParameterField.html)

### QgsProcessingParameterBand

ラスターのバンドの設定

![Untitled 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/b82925a4-bdee-100f-ca11-b2fae7b4090b.png)


```python
# ラスターのインプット
self.addParameter(
            QgsProcessingParameterRasterLayer(
                'RasterLayer',
                self.tr('QgsProcessingParameterRasterLayer'),
                optional=True
            )
        )

# バンド
self.addParameter(
            QgsProcessingParameterBand(
                'Band',
                self.tr('QgsProcessingParameterBand'),
								# 親レイヤのパラメータの名称を指定
                parentLayerParameterName='RasterLayer',
                optional=True
            )
        )
```

## レイヤの出力

### QgsProcessingParameterFeatureSink

アルゴリズムで作成された地物の出力先を指定するパラメータ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/2f03e188-70e4-6d7c-b932-98f89438b211.png)


```python
self.addParameter(
            QgsProcessingParameterFeatureSink(
                'FeatureSink',
                self.tr('QgsProcessingParameterFeatureSink'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterFeatureSink](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFeatureSink.html)

### QgsProcessingParameterVectorDestination

アルゴリズムで作成されたベクタレイヤーの出力先を指定するパラメータ。ドキュメントによれば、「より柔軟な**`[QgsProcessingParameterFeatureSink](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFeatureSink.html#qgis.core.QgsProcessingParameterFeatureSink)`**使用することを検討してください。」とのこと。

![Untitled 14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/1b71e5ca-9095-b51e-15eb-0f41387b8410.png)


```python
self.addParameter(
            QgsProcessingParameterVectorDestination(
                'VectorDestination',
                self.tr('QgsProcessingParameterVectorDestination'),
                optional=True
            )
        )
```

- [Class: QgsProcessingParameterVectorDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterVectorDestination.html)

### QgsProcessingParameterRasterDestination

アルゴリズムで作成されたラスタレイヤーの出力先を指定するパラメータ。

![Untitled 15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/00ecd2ed-811e-4d03-d3c0-38038ea047db.png)

```python
self.addParameter(
            QgsProcessingParameterFileDestination(
                'FileDestination',
                self.tr('QgsProcessingParameterFileDestination'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterRasterDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterRasterDestination.html)

### QgsProcessingParameterFileDestination

アルゴリズムで作成されたファイルの出力先を指定するためのパラメータ。

![Untitled 16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/d9145822-a6ee-89ac-7b79-3d45296066db.png)


```python
self.addParameter(
            QgsProcessingParameterFileDestination(
                'FileDestination',
                self.tr('QgsProcessingParameterFileDestination'),
                optional=True
            )
        )
```

- [Class: QgsProcessingParameterFileDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFileDestination.html)

### QgsProcessingParameterFolderDestination

アルゴリズムで作成されたフォルダや、アルゴリズム内で新規ファイルを作成する際に使用するフォルダの出力先を指定するためのパラメータ。

![Untitled 17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/69a83d26-6ba6-257f-8d32-033dc85685fe.png)


```python
self.addParameter(
            QgsProcessingParameterFolderDestination(
                'FolderDestination',
                self.tr('QgsProcessingParameterFolderDestination'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterFolderDestination](https://qgis.org/pyqgis/master/core/QgsProcessingParameterFolderDestination.html)

## 各種設定（一般）

### QgsProcessingParameterBoolean

ブーリアンのパラメータ。

![Untitled 18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/84221ae9-4014-60a8-c45c-286db69ef1cf.png)


```python
self.addParameter(
            QgsProcessingParameterBoolean(
                'Boolean',
                self.tr('QgsProcessingParameterBoolean'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterBoolean](https://qgis.org/pyqgis/master/core/QgsProcessingParameterBoolean.html)

### QgsProcessingParameterEnum

あらかじめ定義された値からプルダウンで選択。

```python
self.addParameter(
    QgsProcessingParameterEnum(
        'Enum',
        self.tr('QgsProcessingParameterEnum'),
        options=[self.tr('札幌'), self.tr('東京'), self.tr('名古屋')],
        defaultValue=0,
        optional=True
    )
)
```

![Untitled 19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/4109b72c-144d-7858-524d-3fb3596578a6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/6a1f99a2-fd66-a6d7-466e-ae41c788f28c.png)


チェックボックス形式にもできる
![Untitled 21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/35ce3b20-13f1-5c14-5a21-4e177d3272bd.png)

```python
self.addParameter(
QgsProcessingParameterEnum(
    'EnumBox',
    self.tr('QgsProcessingParameterEnum [widget_wrapper: checkboxes]'),
    options=[self.tr('札幌'), self.tr('東京'), self.tr('名古屋')],
    defaultValue=1,
    optional=True
		)
	)
self.parameterDefinition('EnumBox').setMetadata(
		{
	    'widget_wrapper': {
	        'useCheckBoxes': True,
	        'columns': 3
	    }
		}
	)
```

[Class: QgsProcessingParameterEnum](https://qgis.org/pyqgis/master/core/QgsProcessingParameterEnum.html)

### QgsProcessingParameterNumber

数値パラメータ

![Untitled 22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/eda9d3d0-cf4d-56e9-38fb-24dd5ac4320e.png)


```python
self.addParameter(
            QgsProcessingParameterNumber(
                'Number',
                self.tr('QgsProcessingParameterNumber'),
                optional=True
            )
        )
```

メタデータを設定することで小数値を設定できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/77c79f54-48ac-1a00-8a30-9bb44cc6e5ea.png)


```python
self.addParameter(
      QgsProcessingParameterNumber(
          'Number',
          self.tr('QgsProcessingParameterNumber'),
          type=QgsProcessingParameterNumber.Double,
          optional=True
          )
      )
  self.parameterDefinition('Number').setMetadata(
      {
      'widget_wrapper': {
          'decimals': 2
          }
      }
)
```

[Class: QgsProcessingParameterNumber](https://qgis.org/pyqgis/master/core/QgsProcessingParameterNumber.html)

### QgsProcessingParameterRange

数値の範囲のパラメータ
![Untitled 24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/785806cc-d863-d00b-4db4-bf7cf09e9c0e.png)

```python
self.addParameter(
            QgsProcessingParameterRange(
                'Range',
                self.tr('QgsProcessingParameterRange'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterRange](https://qgis.org/pyqgis/master/core/QgsProcessingParameterRange.html)

### QgsProcessingParameterString

任意の文字列を入力することができるパラメータ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/abf07cd7-576b-c782-5316-1b573210b548.png)


```python
self.addParameter(
            QgsProcessingParameterString(
                'String',
                self.tr('QgsProcessingParameterString'),
                optional=True
            )
        )
```

メタデータの設定により入力を制限できる（[QgsProcessingParameterEnum](https://www.notion.so/QgsProcessingParameterEnum-d5e9ec53877041ddbe2a4014a942d6a6?pvs=21) を使えばいい気がする）

![Untitled 26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/fa6cbd9d-e9aa-df8b-d70d-0c3c1e9b3078.png)


```python
self.parameterDefinition('String').setMetadata( 
            {'widget_wrapper':
                {'value_hints': ['Inkjet printer', 'Laser printer'] }
                })
```

[Class: QgsProcessingParameterString](https://qgis.org/pyqgis/master/core/QgsProcessingParameterString.html)

### QgsProcessingParameterDateTime

日付のパラメータ

![Untitled 27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/a254c21b-94b9-2f1e-a3ad-a344ebbdf610.png)


[Class: QgsProcessingParameterDateTime](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDateTime.html)

### **QgsProcessingParameterDuration**

時間量のパラメータ
![Untitled 28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/7d28081b-093d-7522-a70e-1fb9070ff3b3.png)


```python
self.addParameter(
            QgsProcessingParameterDuration(
                'Duration',
                self.tr('QgsProcessingParameterDuration'),
                optional=True
            )
        )
```

### QgsProcessingParameterColor

カラーパラメータ

![Untitled 29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/b5a4ed7f-822f-f1aa-c407-9a12077d12de.png)
![Untitled 30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/bb189aeb-42d6-3e6c-f1e4-3e24088ff938.png)

```python
self.addParameter(
            QgsProcessingParameterColor(
                'Color',
                self.tr('QgsProcessingParameterColor'),
                optional=True
            )
        )
```

- [Class: QgsProcessingParameterColor](https://qgis.org/pyqgis/master/core/QgsProcessingParameterColor.html)

## 各種設定(GIS)

### QgsProcessingParameterCrs

CRSを設定するパラメータ
![Untitled 31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/08a6d92b-c99b-7aca-a1b2-e86778eb9ce5.png)


```python
self.addParameter(
            QgsProcessingParameterCrs(
                'Crs',
                self.tr('QgsProcessingParameterCrs'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterCrs](https://qgis.org/pyqgis/master/core/QgsProcessingParameterCrs.html)

### QgsProcessingParameterPoint

特定の座標を設定するパラメータ。`•••`をクリックするとマップから指定した地点の座標を設定できる。

![Untitled 32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/449dddb1-5cc0-72f5-bb43-20362d47df76.png)

```python
self.addParameter(
            QgsProcessingParameterPoint(
                'Point',
                self.tr('QgsProcessingParameterPoint'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterPoint](https://qgis.org/pyqgis/master/core/QgsProcessingParameterPoint.html)

### QgsProcessingParameterExtent

矩形のマップ範囲を設定するパラメータ
![Untitled 33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/88422935-1b28-36f2-c806-e1642e0c40b8.png)



右のカーソルボタンをクリックすると次から範囲を設定できる。

![Untitled 34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/f4a80ea4-3c04-3d67-b523-7e6a7bcb0675.png)


```python
self.addParameter(
            QgsProcessingParameterExtent(
                'Extent',
                self.tr('QgsProcessingParameterExtent'),
                optional=True
            )
        )
```

- [Class: QgsProcessingParameterExtent](https://qgis.org/pyqgis/master/core/QgsProcessingParameterExtent.html)

### QgsProcessingParameterScale

スケールを設定するパラメータ

![Untitled 35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/21b60145-d8f3-0cd0-6152-64060311f512.png)

![Untitled 36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/70719b6b-a71d-0e07-41a9-a7633544f0ac.png)



```python
self.addParameter(
            QgsProcessingParameterScale(
                'Scale',
                self.tr('QgsProcessingParameterScale'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterScale](https://qgis.org/pyqgis/master/core/QgsProcessingParameterScale.html)

### ****QgsProcessingParameterDistance****

距離パラメータ

![Untitled 37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/e7a8ac01-9eeb-cc70-e312-1152f3cf91eb.png)


```python
self.addParameter(
            QgsProcessingParameterDistance(
                'Distance',
                self.tr('QgsProcessingParameterDistance'),
                optional=True
            )
        )
```

[Class: QgsProcessingParameterDistance](https://qgis.org/pyqgis/master/core/QgsProcessingParameterDistance.html)

### QgsProcessingParameterAggregate

属性の集計用パラメータ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670401/b651e698-e8d7-2804-b482-3d6f49a0815c.png)


```python
self.addParameter(
            QgsProcessingParameterAggregate(
                'Aggregate',
                self.tr('QgsProcessingParameterColor'),
                parentLayerParameterName='FeatureSource',
                optional=True
            )
        )
```

[Class: QgsProcessingParameterAggregate](https://qgis.org/pyqgis/master/core/QgsProcessingParameterAggregate.html)