def do_cloud_matching(self): """ Perform cloud/shadow matching and finalize mask """ logger.info('Running fcssm with dilation:\n' + 'cloud: {c}\n'.format(c=self.cloud_dilate) + 'shadow: {s}'.format(s=self.shadow_dilate) + 'snow: {sn}'.format(sn=self.snow_dilate) ) # Run Fmask FCSSM self.fmask_result.do_fcssm(self.cloud_dilate, self.shadow_dilate, self.snow_dilate) # TODO if PREVIEW RESULT button: (else keep in memory) self.fcssm_filename, _tempfile = \ pyfmask_utils.temp_raster(self.fmask_result.fmask_final, self.fmask_result.geoT, self.fmask_result.prj) self.temp_files.append(_tempfile) # Open as raster layer rlayer_name = 'Fmask (cloud probability {p})'.format(p=self.cloud_prob) self.fmask_rlayer = qgis.core.QgsRasterLayer(self.fcssm_filename, rlayer_name) # Add to QGIS qgis.core.QgsMapLayerRegistry.instance().addMapLayer( self.fmask_rlayer) # Set symbology for new raster layer pyfmask_utils.apply_symbology(self.fmask_rlayer, self.symbology, self.enable_symbology, transparent=[255]) # Refresh layer symbology self.iface.legendInterface().refreshLayerSymbology(self.fmask_rlayer) # Enable matching button self.allow_results(save=True)
def do_plcloud(self, cloud_prob=None): """ Perform cloud masking and add result to QGIS """ if cloud_prob is None: cloud_prob = self.cloud_prob # Find the Landsat spacecraft number landsat_num = int(self.mtl['SPACECRAFT_ID'][-1]) logger.info('Running plcloud with cloud probability {p}'. format(p=cloud_prob)) self.fmask_result.get_plcloud(cloud_prob) # TODO if PREVIEW RESULT button: (else keep in memory) self.plcloud_filename, _tempfile = \ pyfmask_utils.temp_raster(self.fmask_result.plcloud_mask * 4, self.fmask_result.geoT, self.fmask_result.prj) self.temp_files.append(_tempfile) # Open as raster layer rlayer_name = 'Cloud probability {p}'.format(p=cloud_prob) self.plcloud_rlayer = qgis.core.QgsRasterLayer(self.plcloud_filename, rlayer_name) # Add to QGIS qgis.core.QgsMapLayerRegistry.instance().addMapLayer( self.plcloud_rlayer) # Set symbology for new raster layer pyfmask_utils.apply_symbology(self.plcloud_rlayer, self.symbology, self.enable_symbology, transparent=[255, 0]) # Refresh layer symbology self.iface.legendInterface().refreshLayerSymbology(self.plcloud_rlayer) # Enable matching button self.allow_results(match=True)