Skip to content

Commit

Permalink
[sextante] added new modeler-only tools
Browse files Browse the repository at this point in the history
  • Loading branch information
volaya committed Feb 24, 2013
1 parent ffa56d0 commit 42672e5
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 3 deletions.
Expand Up @@ -126,6 +126,7 @@ def setParamValues(self):
self.params[paramname] = value

self.outputs[self.alg.RESULT] = None
self.dependencies = []
return True

def getSafeNameForHarcodedParameter(self, param):
Expand Down
Expand Up @@ -27,8 +27,9 @@
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from sextante.core.AlgorithmProvider import AlgorithmProvider
from sextante.modeler.CalculatorModelerAlgorithm import \
CalculatorModelerAlgorithm
from sextante.modeler.CalculatorModelerAlgorithm import CalculatorModelerAlgorithm
from sextante.modeler.RasterLayerBoundsAlgorithm import RasterLayerBoundsAlgorithm
from sextante.modeler.VectorLayerBoundsAlgorithm import VectorLayerBoundsAlgorithm

import os.path

Expand All @@ -47,6 +48,6 @@ def getIcon(self):
return QtGui.QIcon(os.path.dirname(__file__) + "/../images/model.png")

def _loadAlgorithms(self):
self.algs = [CalculatorModelerAlgorithm()]
self.algs = [CalculatorModelerAlgorithm(), RasterLayerBoundsAlgorithm(), VectorLayerBoundsAlgorithm()]
for alg in self.algs:
alg.provider = self
57 changes: 57 additions & 0 deletions python/plugins/sextante/modeler/RasterLayerBoundsAlgorithm.py
@@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-

"""
***************************************************************************
RasterLayerBoundsAlgorithm.py
---------------------
Date : January 2013
Copyright : (C) 2013 by Victor Olaya
Email : volayaf 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__ = 'Victor Olaya'
__date__ = 'January 2013'
__copyright__ = '(C) 2012, Victor Olaya'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

from sextante.core.GeoAlgorithm import GeoAlgorithm
from sextante.outputs.OutputNumber import OutputNumber
from sextante.parameters.ParameterRaster import ParameterRaster
from sextante.core.QGisLayers import QGisLayers

class RasterLayerBoundsAlgorithm(GeoAlgorithm):

LAYER = "LAYER"
XMIN = "XMIN"
XMAX = "XMAX"
YMIN = "YMIN"
YMAX = "YMAX"

def defineCharacteristics(self):
self.showInModeler = True
self.showInToolbox = False
self.name = "Raster layer bounds"
self.group = "Modeler-only tools"
self.addParameter(ParameterRaster(self.LAYER, "Layer"))
self.addOutput(OutputNumber(self.XMIN, "min X"))
self.addOutput(OutputNumber(self.XMAX, "max X"))
self.addOutput(OutputNumber(self.YMIN, "min Y"))
self.addOutput(OutputNumber(self.YMAX, "max Y"))

def processAlgorithm(self, progress):
uri = self.getParameterValue(self.LAYER)
layer = QGisLayers.getObjectFromUri(uri);
self.setOutputValue(self.XMIN, layer.extent().xMinimum())
self.setOutputValue(self.XMAX, layer.extent().xMaximum())
self.setOutputValue(self.YMIN, layer.extent().yMinimum())
self.setOutputValue(self.YMAX, layer.extent().yMaximum())

56 changes: 56 additions & 0 deletions python/plugins/sextante/modeler/VectorLayerBoundsAlgorithm.py
@@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-

"""
***************************************************************************
VectorLayerBoundsAlgorithm.py
---------------------
Date : January 2013
Copyright : (C) 2013 by Victor Olaya
Email : volayaf 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__ = 'Victor Olaya'
__date__ = 'January 2013'
__copyright__ = '(C) 2012, Victor Olaya'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

from sextante.core.GeoAlgorithm import GeoAlgorithm
from sextante.outputs.OutputNumber import OutputNumber
from sextante.core.QGisLayers import QGisLayers
from sextante.parameters.ParameterVector import ParameterVector

class VectorLayerBoundsAlgorithm(GeoAlgorithm):

LAYER = "LAYER"
XMIN = "XMIN"
XMAX = "XMAX"
YMIN = "YMIN"
YMAX = "YMAX"

def defineCharacteristics(self):
self.showInModeler = True
self.showInToolbox = False
self.name = "Raster layer bounds"
self.group = "Modeler-only tools"
self.addParameter(ParameterVector(self.LAYER, "Layer"))
self.addOutput(OutputNumber(self.XMIN, "min X"))
self.addOutput(OutputNumber(self.XMAX, "max X"))
self.addOutput(OutputNumber(self.YMIN, "min Y"))
self.addOutput(OutputNumber(self.YMAX, "max Y"))

def processAlgorithm(self, progress):
uri = self.getParameterValue(self.LAYER)
layer = QGisLayers.getObjectFromUri(uri);
self.setOutputValue(self.XMIN, layer.extent().xMinimum())
self.setOutputValue(self.XMAX, layer.extent().xMaximum())
self.setOutputValue(self.YMIN, layer.extent().yMinimum())
self.setOutputValue(self.YMAX, layer.extent().yMaximum())

0 comments on commit 42672e5

Please sign in to comment.