123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- """
- ***************************************************************************
- 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'
- import os
- from PyQt5.QtGui import QIcon
- from osgeo import gdal
- from processing.core.ProcessingConfig import ProcessingConfig, Setting
- from qgis.PyQt.QtCore import QCoreApplication
- from qgis.core import (QgsApplication,
- QgsProcessingProvider,
- QgsRuntimeProfiler)
- from .AssignProjection import AssignProjection
- from .Buffer import Buffer
- from .ClipRasterByExtent import ClipRasterByExtent
- from .ClipRasterByMask import ClipRasterByMask
- from .ClipVectorByExtent import ClipVectorByExtent
- from .ClipVectorByMask import ClipVectorByMask
- from .ColorRelief import ColorRelief
- from .Datasources2Vrt import Datasources2Vrt
- from .Dissolve import Dissolve
- from .ExecuteSql import ExecuteSql
- from .ExportRasterByMask import ExportRasterByMask
- from .ExportVectorByMask import ExportVectorByMask
- from .GdalUtils import GdalUtils
- from .GridAverage import GridAverage
- from .GridDataMetrics import GridDataMetrics
- from .GridInverseDistance import GridInverseDistance
- from .GridInverseDistanceNearestNeighbor import GridInverseDistanceNearestNeighbor
- from .GridLinear import GridLinear
- from .GridNearestNeighbor import GridNearestNeighbor
- from .LicenseMake import LicenseMake
- from .OffsetCurve import OffsetCurve
- from .OgrToPostGis import OgrToPostGis
- from .OneSideBuffer import OneSideBuffer
- # from .spotfileupload import SpotfileUpload
- # from .spotfiledownload import SpotfileDownload
- # from .spotfiledelete import SpotfileDelete
- from .PointsAlongLines import PointsAlongLines
- from .Topology.A00 import A00
- from .Topology.A01 import A01
- from .Topology.A02 import A02
- from .Topology.A03 import A03
- from .Topology.A04 import A04
- from .Topology.A05 import A05
- from .Topology.AA01 import AA01
- from .Topology.AA02 import AA02
- from .Topology.AA03 import AA03
- from .Topology.AA04 import AA04
- from .Topology.AA05 import AA05
- from .Topology.AL01 import AL01
- from .Topology.AP01 import AP01
- from .Topology.AP02 import AP02
- from .Topology.L00 import L00
- from .Topology.L01 import L01
- from .Topology.L02 import L02
- from .Topology.L03 import L03
- from .Topology.L04 import L04
- from .Topology.L05 import L05
- from .Topology.L06 import L06
- from .Topology.L07 import L07
- from .Topology.L08 import L08
- from .Topology.L09 import L09
- from .Topology.L10 import L10
- from .Topology.LA01 import LA01
- from .Topology.LA02 import LA02
- from .Topology.LA03 import LA03
- from .Topology.LL01 import LL01
- from .Topology.LL02 import LL02
- from .Topology.LL03 import LL03
- from .Topology.LL04 import LL04
- from .Topology.LP01 import LP01
- from .Topology.P00 import P00
- from .Topology.P01 import P01
- from .Topology.PA01 import PA01
- from .Topology.PA02 import PA02
- from .Topology.PA03 import PA03
- from .Topology.PL01 import PL01
- from .Topology.PL02 import PL02
- from .Topology.PP01 import PP01
- from .Topology.PP02 import PP02
- from .VectorProject import VectorProject
- from .aspect import aspect
- from .buildvrt import buildvrt
- from .contour import contour, contour_polygon
- from .extractprojection import ExtractProjection
- from .fillnodata import fillnodata
- from .gdal2tiles import gdal2tiles
- from .gdal2xyz import gdal2xyz
- from .gdaladdo import gdaladdo
- from .gdalcalc import gdalcalc
- from .gdalinfo import gdalinfo
- from .gdaltindex import gdaltindex
- from .gdbtopostgislist import GdbToPostGisList
- from .hillshade import hillshade
- from .merge import merge
- from .nearblack import nearblack
- from .ogr2ogr import ogr2ogr
- from .ogr2ogrtopostgislist import Ogr2OgrToPostGisList
- from .ogrinfo import ogrinfo
- from .pansharp import pansharp
- from .pct2rgb import pct2rgb
- from .polygonize import polygonize
- from .postgisrestore import Postgisrestore
- from .postgistogeoserver import Postgistogeoserver
- from .postgisupdate import Postgisupdate
- from .proximity import proximity
- from .rasterize import rasterize
- from .rasterize_over import rasterize_over
- from .rasterize_over_fixed_value import rasterize_over_fixed_value
- from .rastertopostgislist import Ogr2PostGisList
- from .rearrange_bands import rearrange_bands
- from .retile import retile
- from .rgb2pct import rgb2pct
- from .roughness import roughness
- from .sieve import sieve
- from .slope import slope
- from .tpi import tpi
- from .translate import translate
- from .tri import tri
- from .viewshed import viewshed
- from .warp import warp
- # from .ogr2ogrtabletopostgislist import Ogr2OgrTableToPostGisList
- pluginPath = os.path.normpath(os.path.join(
- os.path.split(os.path.dirname(__file__))[0], os.pardir))
- class GdalAlgorithmProvider(QgsProcessingProvider):
- def __init__(self):
- super().__init__()
- self.algs = []
- QgsApplication.processingRegistry().addAlgorithmAlias('qgis:buildvirtualvector', 'gdal:buildvirtualvector')
- def load(self):
- with QgsRuntimeProfiler.profile('GDAL Provider'):
- ProcessingConfig.settingIcons[self.name()] = self.icon()
- ProcessingConfig.addSetting(Setting(self.name(), 'ACTIVATE_GDAL',
- self.tr('Activate'), True))
- ProcessingConfig.readSettings()
- self.refreshAlgorithms()
- return True
- def unload(self):
- ProcessingConfig.removeSetting('ACTIVATE_GDAL')
- def isActive(self):
- return ProcessingConfig.getSetting('ACTIVATE_GDAL')
- def setActive(self, active):
- ProcessingConfig.setSettingValue('ACTIVATE_GDAL', active)
- def name(self):
- return '数管工具集'
- def longName(self):
- version = GdalUtils.readableVersion()
- return f'数管工具集 ({version})'
- def id(self):
- return 'gdal'
- def helpId(self):
- return 'gdal'
- def icon(self):
- return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'tools.png'))
- # return QgsApplication.getThemeIcon("/providerGdal.svg")
- def svgIconPath(self):
- return os.path.join(pluginPath, 'images', 'dbms', 'tools.png')
- # return QgsApplication.iconPath("providerGdal.svg")
- def loadAlgorithms(self):
- self.algs = [
- AssignProjection(),
- aspect(),
- buildvrt(),
- ClipRasterByExtent(),
- ClipRasterByMask(),
- ColorRelief(),
- contour(),
- contour_polygon(),
- Datasources2Vrt(),
- fillnodata(),
- gdalinfo(),
- gdal2tiles(),
- gdal2xyz(),
- gdaladdo(),
- gdalcalc(),
- gdaltindex(),
- GridAverage(),
- GridDataMetrics(),
- GridInverseDistance(),
- GridInverseDistanceNearestNeighbor(),
- GridLinear(),
- GridNearestNeighbor(),
- hillshade(),
- merge(),
- nearblack(),
- pct2rgb(),
- polygonize(),
- proximity(),
- rasterize(),
- rearrange_bands(),
- retile(),
- rgb2pct(),
- roughness(),
- sieve(),
- slope(),
- translate(),
- tpi(),
- tri(),
- warp(),
- pansharp(),
- # rasterize(),
- ExtractProjection(),
- rasterize_over(),
- rasterize_over_fixed_value(),
- # ----- OGR tools -----
- Buffer(),
- ClipVectorByExtent(),
- ClipVectorByMask(),
- Dissolve(),
- ExecuteSql(),
- OffsetCurve(),
- ogr2ogr(),
- ogrinfo(),
- OgrToPostGis(),
- Ogr2OgrToPostGisList(),
- Ogr2PostGisList(),
- Postgistogeoserver(),
- OneSideBuffer(),
- PointsAlongLines(),
- Postgisupdate(),
- Postgisrestore(),
- # SpotfileUpload(),
- # SpotfileDownload(),
- # SpotfileDelete(),
- ExportVectorByMask(),
- GdbToPostGisList(),
- ExportRasterByMask(),
- VectorProject(),
- LicenseMake(),
- # TopologyCheck(),
- A00(),
- A01(),
- A02(),
- A03(),
- A04(),
- A05(),
- P00(),
- P01(),
- L00(),
- L01(),
- L02(),
- L03(),
- L04(),
- L05(),
- L06(),
- L07(),
- L08(),
- L09(),
- L10(),
- PP01(),
- PP02(),
- PL01(),
- PL02(),
- PA01(),
- PA02(),
- PA03(),
- LP01(),
- LL01(),
- LL02(),
- LL03(),
- LL04(),
- LA01(),
- LA02(),
- LA03(),
- AP01(),
- AP02(),
- AL01(),
- AA01(),
- AA02(),
- AA03(),
- AA04(),
- AA05()
- # Ogr2OgrTableToPostGisList(),
- ]
- if int(gdal.VersionInfo()) > 3010000:
- self.algs.append(viewshed())
- for a in self.algs:
- self.addAlgorithm(a)
- def supportedOutputRasterLayerExtensions(self):
- return GdalUtils.getSupportedOutputRasterExtensions()
- def supportsNonFileBasedOutput(self):
- """
- GDAL Provider doesn't support non file based outputs
- """
- return False
- def tr(self, string, context=''):
- if context == '':
- context = 'GdalAlgorithmProvider'
- return QCoreApplication.translate(context, string)
|