mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
[processing] introduce OutputCrs output and add algorithms to get layer CRS in modeler
This commit is contained in:
parent
40de15cc56
commit
4c39bd12e8
@ -115,6 +115,15 @@ class OutputExtent(Output):
|
||||
return False
|
||||
|
||||
|
||||
class OutputCrs(Output):
|
||||
|
||||
def __init__(self, name='', description=''):
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.value = None
|
||||
self.hidden = True
|
||||
|
||||
|
||||
class OutputFile(Output):
|
||||
|
||||
def __init__(self, name='', description='', ext=None):
|
||||
|
@ -31,6 +31,8 @@ from processing.core.AlgorithmProvider import AlgorithmProvider
|
||||
from processing.modeler.CalculatorModelerAlgorithm import CalculatorModelerAlgorithm
|
||||
from processing.modeler.RasterLayerBoundsAlgorithm import RasterLayerBoundsAlgorithm
|
||||
from processing.modeler.VectorLayerBoundsAlgorithm import VectorLayerBoundsAlgorithm
|
||||
from processing.modeler.RasterLayerCrsAlgorithm import RasterLayerCrsAlgorithm
|
||||
from processing.modeler.VectorLayerCrsAlgorithm import VectorLayerCrsAlgorithm
|
||||
|
||||
pluginPath = os.path.split(os.path.dirname(__file__))[0]
|
||||
|
||||
@ -52,6 +54,8 @@ class ModelerOnlyAlgorithmProvider(AlgorithmProvider):
|
||||
def _loadAlgorithms(self):
|
||||
self.algs = [CalculatorModelerAlgorithm(),
|
||||
RasterLayerBoundsAlgorithm(),
|
||||
VectorLayerBoundsAlgorithm()]
|
||||
VectorLayerBoundsAlgorithm(),
|
||||
RasterLayerCrsAlgorithm(),
|
||||
VectorLayerCrsAlgorithm()]
|
||||
for alg in self.algs:
|
||||
alg.provider = self
|
||||
|
@ -69,7 +69,8 @@ from processing.core.outputs import (OutputRaster,
|
||||
OutputDirectory,
|
||||
OutputNumber,
|
||||
OutputString,
|
||||
OutputExtent)
|
||||
OutputExtent,
|
||||
OutputCrs)
|
||||
|
||||
from processing.modeler.ModelerAlgorithm import (ValueFromInput,
|
||||
ValueFromOutput,
|
||||
@ -384,7 +385,7 @@ class ModelerParametersDialog(QDialog):
|
||||
item.setEditText(unicode(param.default))
|
||||
elif isinstance(param, ParameterCrs):
|
||||
item = QComboBox()
|
||||
values = self.getAvailableValuesOfType(ParameterCrs)
|
||||
values = self.getAvailableValuesOfType(ParameterCrs, OutputCrs)
|
||||
for v in values:
|
||||
item.addItem(self.resolveValueDescription(v), v)
|
||||
elif isinstance(param, ParameterExtent):
|
||||
|
@ -28,8 +28,8 @@ __revision__ = '$Format:%H$'
|
||||
from processing.core.GeoAlgorithm import GeoAlgorithm
|
||||
from processing.core.parameters import ParameterRaster
|
||||
from processing.core.outputs import OutputNumber
|
||||
from processing.tools import dataobjects
|
||||
from processing.core.outputs import OutputExtent
|
||||
from processing.tools import dataobjects
|
||||
|
||||
|
||||
class RasterLayerBoundsAlgorithm(GeoAlgorithm):
|
||||
|
51
python/plugins/processing/modeler/RasterLayerCrsAlgorithm.py
Normal file
51
python/plugins/processing/modeler/RasterLayerCrsAlgorithm.py
Normal file
@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
***************************************************************************
|
||||
RasterLayerCrsAlgorithm.py
|
||||
---------------------
|
||||
Date : August 2016
|
||||
Copyright : (C) 2016 by Alexander Bruy
|
||||
Email : alexander dot bruy at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* 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. *
|
||||
* *
|
||||
***************************************************************************
|
||||
"""
|
||||
|
||||
__author__ = 'Alexander Bruy'
|
||||
__date__ = 'August 2016'
|
||||
__copyright__ = '(C) 2016, Alexander Bruy'
|
||||
|
||||
# This will get replaced with a git SHA1 when you do a git archive
|
||||
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from processing.core.GeoAlgorithm import GeoAlgorithm
|
||||
from processing.core.parameters import ParameterRaster
|
||||
from processing.core.outputs import OutputCrs
|
||||
from processing.tools import dataobjects
|
||||
|
||||
|
||||
class RasterLayerCrsAlgorithm(GeoAlgorithm):
|
||||
|
||||
LAYER = 'LAYER'
|
||||
CRS = 'CRS'
|
||||
|
||||
def defineCharacteristics(self):
|
||||
self.showInModeler = True
|
||||
self.showInToolbox = False
|
||||
|
||||
self.name = self.tr('Raster layer CRS', 'RasterLayerCrsAlgorithm')
|
||||
self.group = self.tr('Modeler-only tools', 'RasterLayerCrsAlgorithm')
|
||||
|
||||
self.addParameter(ParameterRaster(self.LAYER, self.tr('Layer', 'RasterLayerCrsAlgorithm')))
|
||||
self.addOutput(OutputCrs(self.CRS, self.tr('CRS', 'RasterLayerCrsAlgorithm')))
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.LAYER))
|
||||
self.setOutputValue(self.CRS, layer.crs().authid())
|
51
python/plugins/processing/modeler/VectorLayerCrsAlgorithm.py
Normal file
51
python/plugins/processing/modeler/VectorLayerCrsAlgorithm.py
Normal file
@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
***************************************************************************
|
||||
VectorLayerCrsAlgorithm.py
|
||||
---------------------
|
||||
Date : August 2016
|
||||
Copyright : (C) 2016 by Alexander Bruy
|
||||
Email : alexander dot bruy at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* 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. *
|
||||
* *
|
||||
***************************************************************************
|
||||
"""
|
||||
|
||||
__author__ = 'Alexander Bruy'
|
||||
__date__ = 'August 2016'
|
||||
__copyright__ = '(C) 2016, Alexander Bruy'
|
||||
|
||||
# This will get replaced with a git SHA1 when you do a git archive
|
||||
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from processing.core.GeoAlgorithm import GeoAlgorithm
|
||||
from processing.core.parameters import ParameterVector
|
||||
from processing.core.outputs import OutputCrs
|
||||
from processing.tools import dataobjects
|
||||
|
||||
|
||||
class VectorLayerCrsAlgorithm(GeoAlgorithm):
|
||||
|
||||
LAYER = 'LAYER'
|
||||
CRS = 'CRS'
|
||||
|
||||
def defineCharacteristics(self):
|
||||
self.showInModeler = True
|
||||
self.showInToolbox = False
|
||||
|
||||
self.name = self.tr('Vector layer CRS', 'VectorLayerCrsAlgorithm')
|
||||
self.group = self.tr('Modeler-only tools', 'VectorLayerCrsAlgorithm')
|
||||
|
||||
self.addParameter(ParameterVector(self.LAYER, self.tr('Layer', 'VectorLayerCrsAlgorithm'), ))
|
||||
self.addOutput(OutputCrs(self.CRS, self.tr('CRS', 'VectorLayerCrsAlgorithm')))
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.LAYER))
|
||||
self.setOutputValue(self.CRS, layer.crs().authid())
|
Loading…
x
Reference in New Issue
Block a user