Skip to content

Commit

Permalink
[processing] improve some gdal algoruthms
Browse files Browse the repository at this point in the history
update resources_rc.py
  • Loading branch information
alexbruy committed Sep 15, 2013
1 parent 223b665 commit 394f1ed
Show file tree
Hide file tree
Showing 6 changed files with 650 additions and 158 deletions.
5 changes: 4 additions & 1 deletion python/plugins/processing/gdal/GdalOgrAlgorithmProvider.py
Expand Up @@ -48,6 +48,8 @@
from processing.gdal.contour import contour
from processing.gdal.rasterize import rasterize
from processing.gdal.proximity import proximity
from processing.gdal.sieve import sieve
from processing.gdal.fillnodata import fillnodata

from processing.gdal.ogr2ogr import Ogr2Ogr
from processing.gdal.ogrinfo import OgrInfo
Expand Down Expand Up @@ -97,7 +99,8 @@ def createAlgsList(self):
self.preloadedAlgs = [nearblack(), information(), warp(), translate(),
rgb2pct(), pct2rgb(), merge(), polygonize(),
gdaladdo(), ClipByExtent(), ClipByMask(),
contour(), rasterize(), proximity(),
contour(), rasterize(), proximity(), sieve(),
fillnodata(),
OgrInfo(), Ogr2Ogr(), OgrSql()]

#And then we add those that are created as python scripts
Expand Down
101 changes: 101 additions & 0 deletions python/plugins/processing/gdal/fillnodata.py
@@ -0,0 +1,101 @@
# -*- coding: utf-8 -*-

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


import os
from PyQt4 import QtGui, QtCore

from processing.core.GeoAlgorithm import GeoAlgorithm

from processing.parameters.ParameterRaster import ParameterRaster
from processing.parameters.ParameterNumber import ParameterNumber
from processing.parameters.ParameterBoolean import ParameterBoolean
from processing.outputs.OutputRaster import OutputRaster

from processing.tools.system import *

from processing.gdal.GdalUtils import GdalUtils

class fillnodata(GeoAlgorithm):

INPUT = "INPUT"
DISTANCE = "DISTANCE"
ITERATIONS = "ITERATIONS"
BAND = "BAND"
MASK = "MASK"
NO_DEFAULT_MASK = "NO_DEFAULT_MASK"
OUTPUT = "OUTPUT"

def getIcon(self):
filepath = os.path.dirname(__file__) + "/icons/fillnodata.png"
return QtGui.QIcon(filepath)

def defineCharacteristics(self):
self.name = "Fill nodata"
self.group = "[GDAL] Analysis"
self.addParameter(ParameterRaster(self.INPUT, "Input layer", False))
self.addParameter(ParameterNumber(self.DISTANCE, "Search distance", 0, 9999, 100))
self.addParameter(ParameterNumber(self.ITERATIONS, "Smooth iterations", 0, 9999, 0))
self.addParameter(ParameterNumber(self.BAND, "Band to operate on", 1, 9999, 1))
self.addParameter(ParameterRaster(self.MASK, "Validity mask", True))
self.addParameter(ParameterBoolean(self.NO_DEFAULT_MASK, "Do not use default validity mask", False))

self.addOutput(OutputRaster(self.OUTPUT, "Output layer"))

def processAlgorithm(self, progress):
output = self.getOutputValue(self.OUTPUT)

arguments = []
arguments.append("-md")
arguments.append(str(self.getParameterValue(self.DISTANCE)))

if self.getParameterValue(self.ITERATIONS) != 0:
arguments.append("-si")
arguments.append(str(self.getParameterValue(self.ITERATIONS)))

arguments.append("-b")
arguments.append(str(self.getParameterValue(self.BAND)))

mask = self.getParameterValue(self.MASK)
if mask is not None:
arguments.append("-mask")
arguments.append(mask)

if self.getParameterValue(self.NO_DEFAULT_MASK):
arguments.append("-nomask")

arguments.append("-of")
arguments.append(GdalUtils.getFormatShortNameFromFilename(output))

arguments.append(self.getParameterValue(self.INPUT))
arguments.append(output)

commands = []
if isWindows():
commands = ["cmd.exe", "/C ", "gdal_fillnodata.bat", GdalUtils.escapeAndJoin(arguments)]
else:
commands = ["gdal_fillnodata.py", GdalUtils.escapeAndJoin(arguments)]

GdalUtils.runGdal(commands, progress)
71 changes: 0 additions & 71 deletions python/plugins/processing/gdal/scripts/fillnodata.py

This file was deleted.

67 changes: 0 additions & 67 deletions python/plugins/processing/gdal/scripts/sieve.py

This file was deleted.

83 changes: 83 additions & 0 deletions python/plugins/processing/gdal/sieve.py
@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-

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

import os
from PyQt4 import QtGui, QtCore

from processing.core.GeoAlgorithm import GeoAlgorithm

from processing.parameters.ParameterRaster import ParameterRaster
from processing.parameters.ParameterSelection import ParameterSelection
from processing.parameters.ParameterNumber import ParameterNumber
from processing.outputs.OutputRaster import OutputRaster

from processing.tools.system import *

from processing.gdal.GdalUtils import GdalUtils

class sieve(GeoAlgorithm):

INPUT = "INPUT"
THRESHOLD = "THRESHOLD"
CONNECTIONS = "CONNECTIONS"
OUTPUT = "OUTPUT"

PIXEL_CONNECTIONS = ["4", "8"]

def getIcon(self):
filepath = os.path.dirname(__file__) + "/icons/sieve.png"
return QtGui.QIcon(filepath)

def defineCharacteristics(self):
self.name = "Sieve"
self.group = "[GDAL] Analysis"
self.addParameter(ParameterRaster(self.INPUT, "Input layer", False))
self.addParameter(ParameterNumber(self.THRESHOLD, "Threshold", 0, 9999, 2))
self.addParameter(ParameterSelection(self.CONNECTIONS, "Pixel connection", self.PIXEL_CONNECTIONS, 0))

self.addOutput(OutputRaster(self.OUTPUT, "Output layer"))

def processAlgorithm(self, progress):
output = self.getOutputValue(self.OUTPUT)

arguments = []
arguments.append("-st")
arguments.append(str(self.getParameterValue(self.THRESHOLD)))

arguments.append("-" + self.PIXEL_CONNECTIONS[self.getParameterValue(self.CONNECTIONS)])

arguments.append("-of")
arguments.append(GdalUtils.getFormatShortNameFromFilename(output))

arguments.append(self.getParameterValue(self.INPUT))
arguments.append(output)

commands = []
if isWindows():
commands = ["cmd.exe", "/C ", "gdal_sieve.bat", GdalUtils.escapeAndJoin(arguments)]
else:
commands = ["gdal_sieve.py", GdalUtils.escapeAndJoin(arguments)]

GdalUtils.runGdal(commands, progress)

0 comments on commit 394f1ed

Please sign in to comment.