30
30
31
31
from processing .core .GeoAlgorithm import GeoAlgorithm
32
32
from processing .parameters .ParameterRaster import ParameterRaster
33
+ from processing .parameters .ParameterBoolean import ParameterBoolean
34
+ from processing .parameters .ParameterSelection import ParameterSelection
33
35
from processing .outputs .OutputRaster import OutputRaster
34
36
35
37
from processing .gdal .GdalUtils import GdalUtils
@@ -38,8 +40,19 @@ class gdaladdo(GeoAlgorithm):
38
40
39
41
INPUT = "INPUT"
40
42
LEVELS = "LEVELS"
43
+ CLEAN = "CLEAN"
44
+ RESAMPLING_METHOD = "RESAMPLING_METHOD"
45
+ FORMAT = "FORMAT"
41
46
OUTPUT = "OUTPUT"
42
47
48
+ METHODS = ["nearest" , "average" , "gauss" , "cubic" , "average_mp" ,
49
+ "average_magphase" , "mode"
50
+ ]
51
+
52
+ FORMATS = ["Internal (if possible)" ,
53
+ "External (GTiff .ovr)" ,
54
+ "External (ERDAS Imagine .aux)"
55
+ ]
43
56
44
57
def getIcon (self ):
45
58
filepath = os .path .dirname (__file__ ) + "/icons/raster-overview.png"
@@ -48,15 +61,33 @@ def getIcon(self):
48
61
def defineCharacteristics (self ):
49
62
self .name = "Build pyramids (overviews)"
50
63
self .group = "[GDAL] Miscellaneous"
51
- self .addParameter (ParameterRaster (gdaladdo .INPUT , "Input layer" , False ))
52
- self .addParameter (ParameterString (gdaladdo .LEVELS , "Overview levels" , "2 4 8 16" ))
53
- self .addOutput (OutputRaster (gdaladdo .OUTPUT , "Output layer" , True ))
64
+ self .addParameter (ParameterRaster (self .INPUT , "Input layer" , False ))
65
+ self .addParameter (ParameterString (self .LEVELS , "Overview levels" , "2 4 8 16" ))
66
+ self .addParameter (ParameterBoolean (self .CLEAN , "Remove all existing overviews" , False ))
67
+ self .addParameter (ParameterSelection (self .RESAMPLING_METHOD , "Resampling method" , self .METHODS , 0 ))
68
+ self .addParameter (ParameterSelection (self .FORMAT , "Overview format" , self .FORMATS , 0 ))
69
+ self .addOutput (OutputRaster (self .OUTPUT , "Output layer" , True ))
54
70
55
71
def processAlgorithm (self , progress ):
72
+ inFile = self .getParameterValue (self .INPUT )
73
+ clearOverviews = self .getParameterValue (self .CLEAN )
74
+ ovrFormat = self .getParameterValue (self .FORMAT )
75
+
56
76
arguments = []
57
- inFile = self .getParameterValue (gdaladdo .INPUT )
58
77
arguments .append (inFile )
59
- arguments .extend (self .getParameterValue (gdaladdo .LEVELS ).split (" " ))
60
- self .setOutputValue (gdaladdo .OUTPUT , inFile )
78
+ if clearOverviews :
79
+ arguments .append ("-clean" )
80
+ arguments .append ("-r" )
81
+ arguments .append (self .METHODS [self .getParameterValue (self .RESAMPLING_METHOD )])
82
+
83
+ if ovrFormat == 1 :
84
+ # external .ovr
85
+ arguments .append ("-ro" )
86
+ elif ovrFormat == 2 :
87
+ # external .aux
88
+ arguments .extend ("--config USE_RRD YES" .split (" " ))
89
+
90
+ arguments .extend (self .getParameterValue (self .LEVELS ).split (" " ))
91
+ self .setOutputValue (self .OUTPUT , inFile )
61
92
62
93
GdalUtils .runGdal (["gdaladdo" , GdalUtils .escapeAndJoin (arguments )], progress )
0 commit comments