# -*- coding: utf-8 -*- """ *************************************************************************** GdalAlgorithmProvider.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 qgis.PyQt.QtCore import QCoreApplication from qgis.core import (QgsApplication, QgsProcessingProvider) from processing.core.ProcessingConfig import ProcessingConfig, Setting from .GdalUtils import GdalUtils from .nearblack import nearblack from .information import information from .warp import warp from .rgb2pct import rgb2pct from .translate import translate from .pct2rgb import pct2rgb from .merge import merge from .buildvrt import buildvrt from .polygonize import polygonize from .gdaladdo import gdaladdo from .ClipByExtent import ClipByExtent from .ClipByMask import ClipByMask from .contour import contour from .rasterize import rasterize from .proximity import proximity from .sieve import sieve from .fillnodata import fillnodata from .extractprojection import ExtractProjection from .gdal2xyz import gdal2xyz from .hillshade import hillshade from .slope import slope from .aspect import aspect from .tri import tri from .tpi import tpi from .roughness import roughness from .ColorRelief import ColorRelief from .GridInvDist import GridInvDist from .GridAverage import GridAverage from .GridNearest import GridNearest from .GridDataMetrics import GridDataMetrics from .gdaltindex import gdaltindex from .gdalcalc import gdalcalc from .rasterize_over import rasterize_over from .retile import retile from .gdal2tiles import gdal2tiles from .AssignProjection import AssignProjection from .ogr2ogr import Ogr2Ogr from .ogr2ogrclip import Ogr2OgrClip from .ogr2ogrclipextent import Ogr2OgrClipExtent from .ogr2ogrtopostgis import Ogr2OgrToPostGis from .ogr2ogrtopostgislist import Ogr2OgrToPostGisList from .ogr2ogrpointsonlines import Ogr2OgrPointsOnLines from .ogr2ogrbuffer import Ogr2OgrBuffer from .ogr2ogrdissolve import Ogr2OgrDissolve from .onesidebuffer import OneSideBuffer from .offsetcurve import OffsetCurve from .ogr2ogrtabletopostgislist import Ogr2OgrTableToPostGisList from .ogrinfo import OgrInfo from .ogrsql import OgrSql pluginPath = os.path.normpath(os.path.join( os.path.split(os.path.dirname(__file__))[0], os.pardir)) class GdalAlgorithmProvider(QgsProcessingProvider): """This provider incorporates GDAL-based algorithms into the Processing framework. Algorithms are called directly using the command line interface. They implemented individually extending GeoAlgorithm class. """ def __init__(self): super().__init__() self.algs = [] def load(self): ProcessingConfig.settingIcons[self.name()] = self.icon() ProcessingConfig.addSetting(Setting(self.name(), 'ACTIVATE_GDAL', self.tr('Activate'), True)) ProcessingConfig.addSetting(Setting( self.name(), GdalUtils.GDAL_HELP_PATH, self.tr('Location of GDAL docs'), GdalUtils.gdalHelpPath())) ProcessingConfig.readSettings() self.refreshAlgorithms() return True def unload(self): ProcessingConfig.removeSetting('ACTIVATE_GDAL') ProcessingConfig.removeSetting(GdalUtils.GDAL_HELP_PATH) def isActive(self): return ProcessingConfig.getSetting('ACTIVATE_GDAL') def setActive(self, active): ProcessingConfig.setSettingValue('ACTIVATE_GDAL', active) def name(self): version = GdalUtils.readableVersion() return 'GDAL ({})'.format(version) def id(self): return 'gdal' def icon(self): return QgsApplication.getThemeIcon("/providerGdal.svg") def svgIconPath(self): return QgsApplication.iconPath("providerGdal.svg") def loadAlgorithms(self): self.algs = [nearblack(), information(), warp(), translate(), rgb2pct(), pct2rgb(), merge(), buildvrt(), polygonize(), gdaladdo(), ClipByExtent(), ClipByMask(), contour(), rasterize(), proximity(), sieve(), fillnodata(), ExtractProjection(), gdal2xyz(), hillshade(), slope(), aspect(), tri(), tpi(), roughness(), ColorRelief(), GridInvDist(), GridAverage(), GridNearest(), GridDataMetrics(), gdaltindex(), gdalcalc(), rasterize_over(), retile(), gdal2tiles(), AssignProjection(), # ----- OGR tools ----- OgrInfo(), Ogr2Ogr(), Ogr2OgrClip(), Ogr2OgrClipExtent(), Ogr2OgrToPostGis(), Ogr2OgrToPostGisList(), Ogr2OgrPointsOnLines(), Ogr2OgrBuffer(), Ogr2OgrDissolve(), OneSideBuffer(), OffsetCurve(), Ogr2OgrTableToPostGisList(), OgrSql(), ] for a in self.algs: self.addAlgorithm(a) def supportedOutputRasterLayerExtensions(self): return GdalUtils.getSupportedRasterExtensions() def tr(self, string, context=''): if context == '': context = 'GdalAlgorithmProvider' return QCoreApplication.translate(context, string)