Exemple #1
0
    def __init__(self,
                 filename=None,
                 time_slot=None,
                 satellite=None,
                 instrument=None):

        # Setting up a granule from metadata

        if filename is None:
            SatelliteInstrumentScene.__init__(self,
                                              time_slot=time_slot,
                                              satellite=(satellite.satname,
                                                         satellite.number,
                                                         satellite.variant),
                                              instrument=instrument)
            conf = ConfigParser()
            conf.read(os.path.join(CONFIG_PATH, self.fullname + ".cfg"))
            self.file_template = str(
                conf.get(instrument + "-granules", "filename", raw=True))
            self.directory = str(
                conf.get(instrument + "-granules", "dir", raw=True))

            self.file_name = time_slot.strftime(self.file_template)
            self.directory = time_slot.strftime(self.directory)
            self.file_type = conf.get(instrument + "-granules", "type")
            self.granularity = datetime.timedelta(
                seconds=int(conf.get(instrument + "-granules", "granularity")))
            self.span = float(
                conf.get(instrument + "-granules", "full_scan_period"))
            self.scan_width = int(
                conf.get(instrument + "-granules", "scan_width"))
            return

        # Setting up a granule from a filename

        filelist = glob.glob(os.path.join(CONFIG_PATH, "*.cfg"))

        the_directory, the_name = os.path.split(filename)

        self.satname = None

        for fil in filelist:
            conf = ConfigParser()
            conf.read(fil)
            try:
                instruments = eval(conf.get("satellite", "instruments"))
                for instrument in instruments:
                    directory = str(conf.get(instrument + "-granules", "dir"))
                    file_template = str(
                        conf.get(instrument + "-granules",
                                 "filename",
                                 raw=True))
                    file_glob = globify(file_template)

                    if (os.path.samefile(the_directory, directory)
                            and fnmatch(the_name, file_glob)):
                        try:
                            self.file_template = file_template
                            self.file_name = the_name

                            pos1, pos2 = beginning(self.file_template)
                            time_slot = strptime(self.file_name[:pos2],
                                                 self.file_template[:pos1])

                            SatelliteInstrumentScene.__init__(
                                self,
                                time_slot=time_slot,
                                satellite=(conf.get("satellite", "satname"),
                                           conf.get("satellite", "number"),
                                           conf.get("satellite", "variant")),
                                instrument=instrument)

                            self.file_type = conf.get(instrument + "-granules",
                                                      "type")
                            self.directory = the_directory
                            self.granularity = datetime.timedelta(seconds=int(
                                conf.get(instrument +
                                         "-granules", "granularity")))
                            self.span = float(
                                conf.get(instrument + "-granules",
                                         "full_scan_period"))
                            self.scan_width = int(
                                conf.get(instrument + "-granules",
                                         "scan_width"))
                        except (NoSectionError, NoOptionError):
                            raise IOError("Inconsistency detected in " + fil)
                        break

                if self.satname is not None:
                    break

            except (NoSectionError, NoOptionError):
                pass

        if not self.satname:
            raise ValueError("Can't find any matching satellite for " +
                             filename)
Exemple #2
0
    def __init__(self, filename=None, time_slot=None,
                 satellite=None, instrument=None):

        # Setting up a granule from metadata

        if filename is None:
            SatelliteInstrumentScene.__init__(self, time_slot=time_slot,
                                              satellite=(satellite.satname,
                                                         satellite.number,
                                                         satellite.variant),
                                              instrument=instrument)
            conf = ConfigParser()
            conf.read(os.path.join(CONFIG_PATH, self.fullname + ".cfg"))
            self.file_template = str(conf.get(instrument+"-granules",
                                              "filename", raw=True))
            self.directory = str(conf.get(instrument+"-granules",
                                          "dir", raw=True))
            
            self.file_name = time_slot.strftime(self.file_template)
            self.directory = time_slot.strftime(self.directory)
            self.file_type = conf.get(instrument + "-granules", "type")
            self.granularity = datetime.timedelta(
                seconds=int(conf.get(instrument + "-granules", "granularity")))
            self.span = float(conf.get(instrument + "-granules",
                                       "full_scan_period"))
            self.scan_width = int(conf.get(instrument + "-granules",
                                           "scan_width"))
            return

        # Setting up a granule from a filename
        
        filelist = glob.glob(os.path.join(CONFIG_PATH, "*.cfg"))

        the_directory, the_name = os.path.split(filename)

        self.satname = None
        
        for fil in filelist:
            conf = ConfigParser()
            conf.read(fil)
            try:
                instruments = eval(conf.get("satellite", "instruments"))
                for instrument in instruments:
                    directory = str(conf.get(instrument+"-granules", "dir"))
                    file_template = str(conf.get(instrument+"-granules",
                                                 "filename", raw=True))
                    file_glob = globify(file_template)

                    if(os.path.samefile(the_directory, directory) and
                       fnmatch(the_name, file_glob)):
                        try:
                            self.file_template = file_template
                            self.file_name = the_name

                            pos1, pos2 = beginning(self.file_template)
                            time_slot = strptime(self.file_name[:pos2],
                                                 self.file_template[:pos1])
        
                            SatelliteInstrumentScene.__init__(
                                self,
                                time_slot=time_slot,
                                satellite=(conf.get("satellite", "satname"),
                                           conf.get("satellite", "number"),
                                           conf.get("satellite", "variant")),
                                instrument=instrument)

                            self.file_type = conf.get(instrument +
                                                      "-granules", "type")
                            self.directory = the_directory
                            self.granularity = datetime.timedelta(
                                seconds=int(conf.get(instrument + "-granules",
                                                     "granularity")))
                            self.span = float(conf.get(instrument +
                                                       "-granules",
                                                       "full_scan_period"))
                            self.scan_width = int(conf.get(instrument +
                                                           "-granules",
                                                           "scan_width"))
                        except (NoSectionError, NoOptionError):
                            raise IOError("Inconsistency detected in " + fil)
                        break

                if self.satname is not None:
                    break
                    
            except (NoSectionError, NoOptionError):
                pass

            
        if not self.satname:
            raise ValueError("Can't find any matching satellite for "+filename)