예제 #1
0
파일: eps_l1b.py 프로젝트: ziaridoy20/satpy
    def _get_full_angles(self):
        solar_zenith = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [0]],
                                  self["ANGULAR_RELATIONS"][:, :, 0],
                                  self["ANGULAR_RELATIONS_LAST"][:, [0]]))

        sat_zenith = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [1]],
                                self["ANGULAR_RELATIONS"][:, :, 1],
                                self["ANGULAR_RELATIONS_LAST"][:, [1]]))

        solar_azimuth = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [2]],
                                   self["ANGULAR_RELATIONS"][:, :, 2],
                                   self["ANGULAR_RELATIONS_LAST"][:, [2]]))
        sat_azimuth = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [3]],
                                 self["ANGULAR_RELATIONS"][:, :, 3],
                                 self["ANGULAR_RELATIONS_LAST"][:, [3]]))

        nav_sample_rate = self["NAV_SAMPLE_RATE"]
        earth_views_per_scanline = self["EARTH_VIEWS_PER_SCANLINE"]
        if nav_sample_rate == 20 and earth_views_per_scanline == 2048:
            from geotiepoints import metop20kmto1km
            # Note: interpolation asumes lat values values between -90 and 90
            # Solar and satellite zenith is between 0 and 180.
            solar_zenith -= 90
            sun_azi, sun_zen = metop20kmto1km(solar_azimuth, solar_zenith)
            sun_zen += 90
            sat_zenith -= 90
            sat_azi, sat_zen = metop20kmto1km(sat_azimuth, sat_zenith)
            sat_zen += 90
            return sun_azi, sun_zen, sat_azi, sat_zen
        else:
            raise NotImplementedError("Angles expansion not implemented for " +
                                      "sample rate = " + str(nav_sample_rate) +
                                      " and earth views = " +
                                      str(earth_views_per_scanline))
예제 #2
0
    def get_full_lonlats(self):
        """Get the interpolated lons/lats.
        """
        if self.lons is not None and self.lats is not None:
            return self.lons, self.lats

        lats = np.hstack((self["EARTH_LOCATION_FIRST"][:, [0]],
                          self["EARTH_LOCATIONS"][:, :, 0],
                          self["EARTH_LOCATION_LAST"][:, [0]]))

        lons = np.hstack((self["EARTH_LOCATION_FIRST"][:, [1]],
                          self["EARTH_LOCATIONS"][:, :, 1],
                          self["EARTH_LOCATION_LAST"][:, [1]]))

        nav_sample_rate = self["NAV_SAMPLE_RATE"]
        earth_views_per_scanline = self["EARTH_VIEWS_PER_SCANLINE"]
        if nav_sample_rate == 20 and earth_views_per_scanline == 2048:
            from geotiepoints import metop20kmto1km
            self.lons, self.lats = metop20kmto1km(lons, lats)
        else:
            raise NotImplementedError("Lon/lat expansion not implemented for " +
                                      "sample rate = " + str(nav_sample_rate) +
                                      " and earth views = " +
                                      str(earth_views_per_scanline))
        return self.lons, self.lats
예제 #3
0
파일: eps_l1b.py 프로젝트: douyoujun/satpy
    def get_full_lonlats(self):
        """Get the interpolated lons/lats.
        """
        if self.lons is not None and self.lats is not None:
            return self.lons, self.lats

        lats = np.hstack(
            (self["EARTH_LOCATION_FIRST"][:, [0]],
             self["EARTH_LOCATIONS"][:, :,
                                     0], self["EARTH_LOCATION_LAST"][:, [0]]))

        lons = np.hstack(
            (self["EARTH_LOCATION_FIRST"][:, [1]],
             self["EARTH_LOCATIONS"][:, :,
                                     1], self["EARTH_LOCATION_LAST"][:, [1]]))

        nav_sample_rate = self["NAV_SAMPLE_RATE"]
        earth_views_per_scanline = self["EARTH_VIEWS_PER_SCANLINE"]
        if nav_sample_rate == 20 and earth_views_per_scanline == 2048:
            from geotiepoints import metop20kmto1km
            self.lons, self.lats = metop20kmto1km(lons, lats)
        else:
            raise NotImplementedError(
                "Lon/lat expansion not implemented for " + "sample rate = " +
                str(nav_sample_rate) + " and earth views = " +
                str(earth_views_per_scanline))
        return self.lons, self.lats
예제 #4
0
파일: eps_l1b.py 프로젝트: zhuwenjian/satpy
    def _get_full_angles(self, solar_zenith, sat_zenith, solar_azimuth,
                         sat_azimuth):

        nav_sample_rate = self["NAV_SAMPLE_RATE"]
        if nav_sample_rate == 20 and self.pixels == 2048:
            from geotiepoints import metop20kmto1km
            # Note: interpolation asumes lat values values between -90 and 90
            # Solar and satellite zenith is between 0 and 180.
            # Note: delayed will cast input dask-arrays to numpy arrays (needed by metop20kmto1km).
            sun_azi, sun_zen = metop20kmto1km(solar_azimuth, solar_zenith - 90)
            sun_zen += 90
            sat_azi, sat_zen = metop20kmto1km(sat_azimuth, sat_zenith - 90)
            sat_zen += 90
            return sun_azi, sun_zen, sat_azi, sat_zen
        else:
            raise NotImplementedError("Angles expansion not implemented for " +
                                      "sample rate = " + str(nav_sample_rate) +
                                      " and earth views = " + str(self.pixels))
예제 #5
0
파일: eps_l1b.py 프로젝트: zhuwenjian/satpy
 def _get_full_lonlats(self, lons, lats):
     nav_sample_rate = self["NAV_SAMPLE_RATE"]
     if nav_sample_rate == 20 and self.pixels == 2048:
         from geotiepoints import metop20kmto1km
         return metop20kmto1km(lons, lats)
     else:
         raise NotImplementedError(
             "Lon/lat expansion not implemented for " + "sample rate = " +
             str(nav_sample_rate) + " and earth views = " +
             str(self.pixels))
예제 #6
0
    def get_full_angles(self):
        """Get the interpolated lons/lats.
        """
        if (self.sun_azi is not None and self.sun_zen is not None and
                self.sat_azi is not None and self.sat_zen is not None):
            return self.sun_azi, self.sun_zen, self.sat_azi, self.sat_zen

        solar_zenith = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [0]],
                                  self["ANGULAR_RELATIONS"][:, :, 0],
                                  self["ANGULAR_RELATIONS_LAST"][:, [0]]))

        sat_zenith = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [1]],
                                self["ANGULAR_RELATIONS"][:, :, 1],
                                self["ANGULAR_RELATIONS_LAST"][:, [1]]))

        solar_azimuth = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [2]],
                                   self["ANGULAR_RELATIONS"][:, :, 2],
                                   self["ANGULAR_RELATIONS_LAST"][:, [2]]))

        sat_azimuth = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [3]],
                                 self["ANGULAR_RELATIONS"][:, :, 3],
                                 self["ANGULAR_RELATIONS_LAST"][:, [3]]))

        nav_sample_rate = self["NAV_SAMPLE_RATE"]
        earth_views_per_scanline = self["EARTH_VIEWS_PER_SCANLINE"]
        if nav_sample_rate == 20 and earth_views_per_scanline == 2048:
            from geotiepoints import metop20kmto1km
            self.sun_azi, self.sun_zen = metop20kmto1km(
                solar_azimuth, solar_zenith)
            self.sat_azi, self.sat_zen = metop20kmto1km(
                sat_azimuth, sat_zenith)
        else:
            raise NotImplementedError("Angles expansion not implemented for " +
                                      "sample rate = " + str(nav_sample_rate) +
                                      " and earth views = " +
                                      str(earth_views_per_scanline))
        return self.sun_azi, self.sun_zen, self.sat_azi, self.sat_zen
예제 #7
0
    def get_full_angles(self):
        """Get the interpolated lons/lats.
        """
        if (self.sun_azi is not None and self.sun_zen is not None and
                self.sat_azi is not None and self.sat_zen is not None):
            return self.sun_azi, self.sun_zen, self.sat_azi, self.sat_zen

        solar_zenith = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [0]],
                                  self["ANGULAR_RELATIONS"][:, :, 0],
                                  self["ANGULAR_RELATIONS_LAST"][:, [0]]))

        sat_zenith = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [1]],
                                self["ANGULAR_RELATIONS"][:, :, 1],
                                self["ANGULAR_RELATIONS_LAST"][:, [1]]))

        solar_azimuth = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [2]],
                                   self["ANGULAR_RELATIONS"][:, :, 2],
                                   self["ANGULAR_RELATIONS_LAST"][:, [2]]))

        sat_azimuth = np.hstack((self["ANGULAR_RELATIONS_FIRST"][:, [3]],
                                 self["ANGULAR_RELATIONS"][:, :, 3],
                                 self["ANGULAR_RELATIONS_LAST"][:, [3]]))

        nav_sample_rate = self["NAV_SAMPLE_RATE"]
        earth_views_per_scanline = self["EARTH_VIEWS_PER_SCANLINE"]
        if nav_sample_rate == 20 and earth_views_per_scanline == 2048:
            from geotiepoints import metop20kmto1km
            self.sun_azi, self.sun_zen = metop20kmto1km(
                solar_azimuth, solar_zenith)
            self.sat_azi, self.sat_zen = metop20kmto1km(
                sat_azimuth, sat_zenith)
        else:
            raise NotImplementedError("Angles expansion not implemented for " +
                                      "sample rate = " + str(nav_sample_rate) +
                                      " and earth views = " +
                                      str(earth_views_per_scanline))
        return self.sun_azi, self.sun_zen, self.sat_azi, self.sat_zen
예제 #8
0
 def _interpolate_20km_to_1km(self, lons, lats):
     # Note: delayed will cast input dask-arrays to numpy arrays (needed by metop20kmto1km).
     from geotiepoints import metop20kmto1km
     return metop20kmto1km(lons, lats)