@@ -89,6 +89,12 @@ def processAlgorithm(self, progress):
89
89
geoTransform = rasterDS .GetGeoTransform ()
90
90
rasterBand = rasterDS .GetRasterBand (bandNumber )
91
91
noData = rasterBand .GetNoDataValue ()
92
+ scale = rasterBand .GetScale ()
93
+ if scale is None :
94
+ scale = 1.0
95
+ offset = rasterBand .GetOffset ()
96
+ if offset is None :
97
+ offset = 0.0
92
98
93
99
cellXSize = abs (geoTransform [1 ])
94
100
cellYSize = abs (geoTransform [5 ])
@@ -118,7 +124,7 @@ def processAlgorithm(self, progress):
118
124
119
125
srcOffset = (startColumn , startRow , width , height )
120
126
srcArray = rasterBand .ReadAsArray (* srcOffset )
121
- srcArray = srcArray * rasterBand . GetScale () + rasterBand . GetOffset ()
127
+ srcArray = srcArray * scale + offset
122
128
123
129
newGeoTransform = (
124
130
geoTransform [0 ] + srcOffset [0 ] * geoTransform [1 ],
@@ -192,7 +198,7 @@ def processAlgorithm(self, progress):
192
198
193
199
srcOffset = (startColumn , startRow , width , height )
194
200
srcArray = rasterBand .ReadAsArray (* srcOffset )
195
- srcArray = srcArray * rasterBand . GetScale () + rasterBand . GetOffset ()
201
+ srcArray = srcArray * scale + offset
196
202
197
203
newGeoTransform = (
198
204
geoTransform [0 ] + srcOffset [0 ] * geoTransform [1 ],
@@ -219,10 +225,11 @@ def processAlgorithm(self, progress):
219
225
gdal .RasterizeLayer (rasterizedDS , [1 ], memLayer , burn_values = [1 ])
220
226
rasterizedArray = rasterizedDS .ReadAsArray ()
221
227
222
- srcArray = numpy .nan_to_num (srcArray )
223
228
masked = numpy .ma .MaskedArray (srcArray ,
224
- mask = numpy .logical_or (srcArray == noData ,
225
- numpy .logical_not (rasterizedArray )))
229
+ mask = numpy .logical_or .reduce ((
230
+ srcArray == noData ,
231
+ numpy .logical_not (rasterizedArray ),
232
+ numpy .isnan (srcArray ))))
226
233
227
234
outFeat .setGeometry (geom )
228
235
0 commit comments