Skip to content

Instantly share code, notes, and snippets.

@tohka
Created November 3, 2020 03:35
Show Gist options
  • Save tohka/604008af548d88a78ec235bf22cc51be to your computer and use it in GitHub Desktop.
Save tohka/604008af548d88a78ec235bf22cc51be to your computer and use it in GitHub Desktop.
QGIS の QgsProcessingParameter* がどのようなインタフェースで表示されるか確認するやつ
# -*- coding: utf-8 -*-
"""
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
"""
プロセシングで設定できるパラメータが、どのようなインタフェースで
表示されるかを確認するためのスクリプト。
プロセシングツールの「ツールボックスにスクリプトを追加...」で
このスクリプトを追加することができます。
手元の開発環境が QGIS 3.8 なので、最近追加されたものは除外して
います。また QgsProcessingParameterMatrix は addParameter すると
QGIS がクラッシュしてしまったため除外しています。
各パラメータの設定は最小限しか行っていません。
addParameter 時に設定するオプションや setMetadata で設定できる
項目などもありますので、ドキュメントやソースを確認してください。
https://github.com/qgis/QGIS/tree/master/python/plugins/processing/algs/qgis
"""
from qgis.PyQt.QtCore import QCoreApplication
from qgis.core import (QgsProcessing,
QgsFeatureSink,
QgsProcessingException,
QgsProcessingAlgorithm,
QgsProcessingParameterFeatureSource,
QgsProcessingParameterField,
QgsProcessingParameterBand,
QgsProcessingParameterFile,
QgsProcessingParameterMapLayer,
QgsProcessingParameterMeshLayer,
QgsProcessingParameterMultipleLayers,
QgsProcessingParameterRasterLayer,
QgsProcessingParameterVectorLayer,
QgsProcessingParameterFeatureSink,
QgsProcessingParameterFileDestination,
QgsProcessingParameterFolderDestination,
QgsProcessingParameterRasterDestination,
QgsProcessingParameterVectorDestination,
QgsProcessingParameterAuthConfig,
QgsProcessingParameterBoolean,
QgsProcessingParameterCrs,
QgsProcessingParameterEnum,
QgsProcessingParameterExpression,
QgsProcessingParameterExtent,
QgsProcessingParameterLayout,
QgsProcessingParameterLayoutItem,
QgsProcessingParameterNumber,
QgsProcessingParameterDistance,
QgsProcessingParameterScale,
QgsProcessingParameterPoint,
QgsProcessingParameterRange,
QgsProcessingParameterString,
QgsUnitTypes)
class CheckWidgetAlgorithm(QgsProcessingAlgorithm):
def tr(self, string):
return QCoreApplication.translate('Processing', string)
def createInstance(self):
return CheckWidgetAlgorithm()
def name(self):
return 'checkwidget'
def displayName(self):
return self.tr('Check widget')
def initAlgorithm(self, config=None):
# 入力レイヤ関係
self.addParameter(
QgsProcessingParameterMapLayer(
'MapLayer',
self.tr('QgsProcessingParameterMapLayer (レイヤタイプを問わず)'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterFeatureSource(
'FeatureSource',
self.tr('QgsProcessingParameterFeatureSource (ベクタのみ)'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterVectorLayer(
'VectorLayer',
self.tr('QgsProcessingParameterVectorLayer (ベクタのみ。 FeatureSource の方がおすすめ)'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterMultipleLayers(
'MultipleLayers',
self.tr('QgsProcessingParameterMultipleLayers (ベクタのみ?)'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterRasterLayer(
'RasterLayer',
self.tr('QgsProcessingParameterRasterLayer (ラスタのみ)'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterMeshLayer(
'MeshLayer',
self.tr('QgsProcessingParameterMeshLayer (メッシュのみ)'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterField(
'Field',
self.tr('QgsProcessingParameterField'),
parentLayerParameterName='FeatureSource',
optional=True
)
)
self.addParameter(
QgsProcessingParameterBand(
'Band',
self.tr('QgsProcessingParameterBand'),
parentLayerParameterName='RasterLayer',
optional=True
)
)
# プリミティブなタイプ
self.addParameter(
QgsProcessingParameterNumber(
'Number',
self.tr('QgsProcessingParameterNumber'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterRange(
'Range',
self.tr('QgsProcessingParameterRange'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterString(
'String',
self.tr('QgsProcessingParameterString'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterBoolean(
'Boolean',
self.tr('QgsProcessingParameterBoolean'),
optional=True
)
)
self.modes = [self.tr('A'), self.tr('B'), self.tr('C')]
self.addParameter(
QgsProcessingParameterEnum(
'Enum',
self.tr('QgsProcessingParameterEnum'),
options=self.modes,
defaultValue=0,
optional=True
)
)
self.addParameter(
QgsProcessingParameterEnum(
'EnumBox',
self.tr('QgsProcessingParameterEnum [widget_wrapper: checkboxes]'),
options=self.modes,
defaultValue=1,
optional=True
)
)
self.parameterDefinition('EnumBox').setMetadata(
{
'widget_wrapper': {
'useCheckBoxes': True,
'columns': 3
}
}
)
self.addParameter(
QgsProcessingParameterFile(
'File',
self.tr('QgsProcessingParameterFile'),
optional=True
)
)
# GIS 的なデータ
self.addParameter(
QgsProcessingParameterExpression(
'Expression',
self.tr('QgsProcessingParameterExpression'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterDistance(
'Distance',
self.tr('QgsProcessingParameterDistance'),
optional=True
)
)
self.parameterDefinition('Distance').setDefaultUnit(
QgsUnitTypes.DistanceKilometers)
self.addParameter(
QgsProcessingParameterScale(
'Scale',
self.tr('QgsProcessingParameterScale'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterCrs(
'Crs',
self.tr('QgsProcessingParameterCrs'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterPoint(
'Point',
self.tr('QgsProcessingParameterPoint'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterExtent(
'Extent',
self.tr('QgsProcessingParameterExtent'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterLayout(
'Layout',
self.tr('QgsProcessingParameterLayout'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterLayoutItem(
'LayoutItem',
self.tr('QgsProcessingParameterLayoutItem'),
parentLayoutParameterName='Layout',
optional=True
)
)
self.addParameter(
QgsProcessingParameterAuthConfig(
'AuthConfig',
self.tr('QgsProcessingParameterAuthConfig'),
optional=True
)
)
# 出力レイヤ関係
self.addParameter(
QgsProcessingParameterFeatureSink(
'FeatureSink',
self.tr('QgsProcessingParameterFeatureSink'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterVectorDestination(
'VectorDestination',
self.tr('QgsProcessingParameterVectorDestination'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterRasterDestination(
'RasterDestination',
self.tr('QgsProcessingParameterRasterDestination'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterFileDestination(
'FileDestination',
self.tr('QgsProcessingParameterFileDestination'),
optional=True
)
)
self.addParameter(
QgsProcessingParameterFolderDestination(
'FolderDestination',
self.tr('QgsProcessingParameterFolderDestination'),
optional=True
)
)
def processAlgorithm(self, parameters, context, feedback):
return {}
@tohka
Copy link
Author

tohka commented Nov 3, 2020

スクリーンショット 2020-11-03 12 36 16

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment