Ejemplo n.º 1
0
    def __contains__(self, point):
        """Is a point inside the 4 corners of the current area? This uses
        great circle arcs as area boundaries.
        """
        from pyresample.spherical_geometry import point_inside, Coordinate
        corners = self.corners

        if isinstance(point, tuple):
            return point_inside(Coordinate(*point), corners)
        else:
            return point_inside(point, corners)
Ejemplo n.º 2
0
    def __contains__(self, point):
        """Is a point inside the 4 corners of the current area? This uses
        great circle arcs as area boundaries.
        """
        from pyresample.spherical_geometry import point_inside, Coordinate
        corners = self.corners

        if isinstance(point, tuple):
            return point_inside(Coordinate(*point), corners)
        else:
            return point_inside(point, corners)
Ejemplo n.º 3
0
def geo_filter(pdf, outside=True, areaid='euron1'):
    """
    Filter data according to position. All data inside area are ignored
    """
    from pyresample import spherical_geometry, utils

    area = utils.load_area(
        '/local_disk/src/mpop-devel/mpop-smhi/etc/areas.def', areaid)

    # lons = np.array([ pdf['lon'][i] for i in pdf.index ])
    # lats = np.array([ pdf['lat'][i] for i in pdf.index ])

    idx_selected = []
    for idx in pdf.index:
        try:
            loc = spherical_geometry.Coordinate(pdf['lon'][idx],
                                                pdf['lat'][idx])
        except ValueError:
            import pdb
            pdb.set_trace()

        is_inside = spherical_geometry.point_inside(loc, area.corners)
        if ((outside and not is_inside) or (not outside and is_inside)):
            idx_selected.append(idx)

    return pdf.loc[idx_selected, :]
Ejemplo n.º 4
0
def geo_filter(pdf, outside=True, areaid='euron1'):
    """
    Filter data according to position. All data inside area are ignored
    """
    from pyresample import spherical_geometry, utils

    area = utils.load_area(
        '/local_disk/src/mpop-devel/mpop-smhi/etc/areas.def', areaid)

    # lons = np.array([ pdf['lon'][i] for i in pdf.index ])
    # lats = np.array([ pdf['lat'][i] for i in pdf.index ])

    idx_selected = []
    for idx in pdf.index:
        try:
            loc = spherical_geometry.Coordinate(
                pdf['lon'][idx], pdf['lat'][idx])
        except ValueError:
            import pdb
            pdb.set_trace()

        is_inside = spherical_geometry.point_inside(loc, area.corners)
        if ((outside and not is_inside) or
                (not outside and is_inside)):
            idx_selected.append(idx)

    return pdf.loc[idx_selected, :]
Ejemplo n.º 5
0
def granule_inside_area(start_time, end_time, platform_name, area_def):
    """Check if the IASI granule is over area interest, using the times from the
    filename

    """

    metop = orbital.Orbital(PLATFORMS.get(platform_name, platform_name))
    corners = area_def.corners

    is_inside = False
    for dtobj in [start_time, end_time]:
        lon, lat, dummy = metop.get_lonlatalt(dtobj)
        point = Coordinate(lon, lat)
        if point_inside(point, corners):
            is_inside = True
            break

    return is_inside
Ejemplo n.º 6
0
    def get_row_col(self, lon, lat, corners, kd_tree, satdata_shape, dtobj):

        obs_loc = spherical_geometry.Coordinate(lon, lat)

        is_inside = True
        try:
            is_inside = spherical_geometry.point_inside(obs_loc, corners)
        except ZeroDivisionError:
            print("date, station, lon,lat: %r (%f,%f)" %
                  (dtobj.strftime('%Y-%m-%d %H:%M'), lon, lat))
            raise

        if not is_inside:
            print("Outside...")
            return False

        # Find the index of the closest pixel in the satellite data:
        req_point = np.array([[np.rad2deg(obs_loc.lon),
                               np.rad2deg(obs_loc.lat)]])
        dist, kidx = kd_tree.query(req_point, k=1)
        if dist > 0.1:
            print("Point too far away from swath...")
            return False

        row, col = np.unravel_index(kidx[0], satdata_shape)
        # Now that we have the pixel position in swath, we can calculate the
        # actual observation time for that pixel, assuming the observation time
        # at hand applies to the first line:
        pixel_time = self.obstime + row * LINE_TIME[self.data_type]
        t1_ = pixel_time - time_thr
        t2_ = pixel_time + time_thr
        if dtobj < t1_ or dtobj > t2_:
            print("Pixel time outside window: " +
                  str(pixel_time) + " " + str(self.obstime))
            return False

        tdelta = pixel_time - dtobj

        return row, col, tdelta