Example #1
0
    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)
Example #2
0
    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)