コード例 #1
0
 def test_check_period(self):
     dat = datetime(2014, 11, 20)
     assert check_period('dekad', dat) == datetime(2014, 11, 20, 0, 0)
     assert check_period('week', dat) == datetime(2014, 11, 23, 0, 0)
     assert check_period('monthly', dat) == datetime(2014, 11, 30, 0, 0)
コード例 #2
0
ファイル: source_base.py プロジェクト: kamalberahal/poets
    def read_img(self, date, region=None, variable=None, scaled=True):
        """Gets images from netCDF file for certain date

        Parameters
        ----------
        date : datetime
            Date of the image.
        region : str, optional
            Region of interest, set to first defined region if not set.
        variable : str, optional
            Variable to display, selects first available variables if None.
        scaled : bool, optional
            If true, data will be scaled to a predefined range; if false, data
            will be shown as given in rawdata file; defaults to True.

        Returns
        -------
        img : numpy.ndarray
            Image of selected date.
        lon : numpy.array
            Array with longitudes.
        lat : numpy.array
            Array with latitudes.
        metadata : dict
            Dictionary containing metadata of the variable.
        """

        if region is None:
            region = self.dest_regions[0]

        if variable is None:
            variable = self.get_variables()[0]
        else:
            # Renames variable name to SOURCE_variable
            variable = self.check_variable(variable)

        source_file = self.src_file[region]

        # get dekad of date:
        date = dt.check_period(self.dest_temp_res, date)

        with Dataset(source_file, 'r', format='NETCDF4') as nc:
            time = nc.variables['time']

            datenum = date2num(date, units=time.units, calendar=time.calendar)

            position = np.where(time[:] == datenum)[0][0]

            var = nc.variables[variable]
            img = var[position]
            lon = nc.variables['lon'][:]
            lat = nc.variables['lat'][:]

            metadata = {}

            for attr in var.ncattrs():
                if attr[0] != '_' and attr != 'scale_factor':
                    metadata[attr] = var.getncattr(attr)

            if not metadata:
                metadata = None

            if 'scaling_factor' in var.ncattrs():
                if metadata['scaling_factor'] < 0:
                    img = img * float(metadata['scaling_factor'])
                else:
                    img = img / float(metadata['scaling_factor'])

        if scaled:
            if self.valid_range is not None:
                if self.data_range is not None:
                    img = self._scale_values(img)

        return img, lon, lat, metadata
コード例 #3
0
ファイル: source_base.py プロジェクト: ritviksahajpal/poets
    def read_img(self, date, region=None, variable=None, scaled=True):
        """Gets images from netCDF file for certain date

        Parameters
        ----------
        date : datetime
            Date of the image.
        region : str, optional
            Region of interest, set to first defined region if not set.
        variable : str, optional
            Variable to display, selects first available variables if None.
        scaled : bool, optional
            If true, data will be scaled to a predefined range; if false, data
            will be shown as given in rawdata file; defaults to True.

        Returns
        -------
        img : numpy.ndarray
            Image of selected date.
        lon : numpy.array
            Array with longitudes.
        lat : numpy.array
            Array with latitudes.
        metadata : dict
            Dictionary containing metadata of the variable.
        """

        if region is None:
            region = self.valid_regions[0]

        if variable is None:
            variable = self.get_variables()[0]
        else:
            # Renames variable name to SOURCE_variable
            variable = self.check_variable(variable)

        source_file = self.src_file[region]

        # get dekad of date:
        date = dt.check_period(self.dest_temp_res, date)

        with Dataset(source_file, 'r', format='NETCDF4') as nc:
            time = nc.variables['time']

            datenum = date2num(date, units=time.units, calendar=time.calendar)

            position = np.where(time[:] == datenum)[0][0]

            var = nc.variables[variable]
            img = var[position]
            lon = nc.variables['lon'][:]
            lat = nc.variables['lat'][:]

            metadata = {}

            for attr in var.ncattrs():
                if attr[0] != '_' and attr != 'scale_factor':
                    metadata[attr] = var.getncattr(attr)

            if not metadata:
                metadata = None

            if 'scaling_factor' in var.ncattrs():
                if metadata['scaling_factor'] < 0:
                    img = img * float(metadata['scaling_factor'])
                else:
                    img = img / float(metadata['scaling_factor'])

        if scaled:
            if self.valid_range is not None:
                if self.data_range is not None:
                    img = self._scale_values(img)

        return img, lon, lat, metadata