DbmsAlgorithmProvider.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. """
  2. ***************************************************************************
  3. DbmsAlgorithmProvider.py
  4. ---------------------
  5. Date : August 2012
  6. Copyright : (C) 2012 by Victor Olaya
  7. Email : volayaf at gmail dot com
  8. ***************************************************************************
  9. * *
  10. * This program is free software; you can redistribute it and/or modify *
  11. * it under the terms of the GNU General Public License as published by *
  12. * the Free Software Foundation; either version 2 of the License, or *
  13. * (at your option) any later version. *
  14. * *
  15. ***************************************************************************
  16. """
  17. __author__ = 'Victor Olaya'
  18. __date__ = 'August 2012'
  19. __copyright__ = '(C) 2012, Victor Olaya'
  20. import os
  21. from osgeo import gdal
  22. from qgis.PyQt.QtCore import QCoreApplication
  23. from qgis.core import (QgsApplication,
  24. QgsProcessingProvider,
  25. QgsRuntimeProfiler)
  26. from processing.core.ProcessingConfig import ProcessingConfig, Setting
  27. from .GdalUtils import GdalUtils
  28. from .AssignProjection import AssignProjection
  29. from .aspect import aspect
  30. from .buildvrt import buildvrt
  31. from .ClipRasterByExtent import ClipRasterByExtent
  32. from .ClipRasterByMask import ClipRasterByMask
  33. from .ColorRelief import ColorRelief
  34. from .contour import contour, contour_polygon
  35. from .Datasources2Vrt import Datasources2Vrt
  36. from .fillnodata import fillnodata
  37. from .gdalinfo import gdalinfo
  38. from .gdal2tiles import gdal2tiles
  39. from .gdal2xyz import gdal2xyz
  40. from .gdaladdo import gdaladdo
  41. from .gdalcalc import gdalcalc
  42. from .gdaltindex import gdaltindex
  43. from .GridAverage import GridAverage
  44. from .GridDataMetrics import GridDataMetrics
  45. from .GridInverseDistance import GridInverseDistance
  46. from .GridInverseDistanceNearestNeighbor import GridInverseDistanceNearestNeighbor
  47. from .GridLinear import GridLinear
  48. from .GridNearestNeighbor import GridNearestNeighbor
  49. from .hillshade import hillshade
  50. from .merge import merge
  51. from .nearblack import nearblack
  52. from .pct2rgb import pct2rgb
  53. from .polygonize import polygonize
  54. from .proximity import proximity
  55. from .rasterize import rasterize
  56. from .rearrange_bands import rearrange_bands
  57. from .retile import retile
  58. from .rgb2pct import rgb2pct
  59. from .roughness import roughness
  60. from .sieve import sieve
  61. from .slope import slope
  62. from .translate import translate
  63. from .tpi import tpi
  64. from .tri import tri
  65. from .warp import warp
  66. from .pansharp import pansharp
  67. from .rasterize_over_fixed_value import rasterize_over_fixed_value
  68. from .viewshed import viewshed
  69. from .extractprojection import ExtractProjection
  70. from .rasterize_over import rasterize_over
  71. from .Buffer import Buffer
  72. from .ClipVectorByExtent import ClipVectorByExtent
  73. from .ClipVectorByMask import ClipVectorByMask
  74. from .Dissolve import Dissolve
  75. from .ExecuteSql import ExecuteSql
  76. from .OffsetCurve import OffsetCurve
  77. from .ogr2ogr import ogr2ogr
  78. from .ogrinfo import ogrinfo
  79. from .OgrToPostGis import OgrToPostGis
  80. from .ogr2ogrtopostgislist import Ogr2OgrToPostGisList
  81. from .rastertopostgislist import Ogr2PostGisList
  82. from .postgistogeoserver import Postgistogeoserver
  83. from .OneSideBuffer import OneSideBuffer
  84. from .PointsAlongLines import PointsAlongLines
  85. pluginPath = os.path.normpath(os.path.join(
  86. os.path.split(os.path.dirname(__file__))[0], os.pardir))
  87. class DbmsAlgorithmProvider(QgsProcessingProvider):
  88. def __init__(self):
  89. super().__init__()
  90. self.algs = []
  91. QgsApplication.processingRegistry().addAlgorithmAlias('qgis:buildvirtualvector', 'gdal:buildvirtualvector')
  92. def load(self):
  93. with QgsRuntimeProfiler.profile('Dbms Provider'):
  94. ProcessingConfig.settingIcons[self.name()] = self.icon()
  95. ProcessingConfig.addSetting(Setting(self.name(), 'ACTIVATE_GDAL',
  96. self.tr('Activate'), True))
  97. ProcessingConfig.readSettings()
  98. self.refreshAlgorithms()
  99. return True
  100. def unload(self):
  101. ProcessingConfig.removeSetting('ACTIVATE_GDAL')
  102. def isActive(self):
  103. return ProcessingConfig.getSetting('ACTIVATE_GDAL')
  104. def setActive(self, active):
  105. ProcessingConfig.setSettingValue('ACTIVATE_GDAL', active)
  106. def name(self):
  107. return '数据库管理工具'
  108. def longName(self):
  109. version = GdalUtils.readableVersion()
  110. return f'数据库管理工具 ({version})'
  111. def id(self):
  112. return 'Dbms'
  113. def helpId(self):
  114. return 'Dbms'
  115. def icon(self):
  116. return QgsApplication.getThemeIcon("/providerGdal.svg")
  117. def svgIconPath(self):
  118. return QgsApplication.iconPath("providerGdal.svg")
  119. def loadAlgorithms(self):
  120. self.algs = [
  121. Ogr2OgrToPostGisList(),
  122. Ogr2PostGisList(),
  123. Postgistogeoserver(),
  124. ]
  125. # if int(gdal.VersionInfo()) > 3010000:
  126. # self.algs.append(viewshed())
  127. for a in self.algs:
  128. self.addAlgorithm(a)
  129. def supportedOutputRasterLayerExtensions(self):
  130. return GdalUtils.getSupportedOutputRasterExtensions()
  131. def supportsNonFileBasedOutput(self):
  132. """
  133. GDAL Provider doesn't support non file based outputs
  134. """
  135. return False
  136. def tr(self, string, context=''):
  137. if context == '':
  138. context = 'DbmsAlgorithmProvider'
  139. return QCoreApplication.translate(context, string)