def _get_sunlight_coverage(area_def, start_time, overpass=None): """Get the sunlight coverage of *area_def* at *start_time* as a value between 0 and 1.""" adp = AreaDefBoundary(area_def, frequency=100).contour_poly poly = get_twilight_poly(start_time) if overpass is not None: ovp = overpass.boundary.contour_poly cut_area_poly = adp.intersection(ovp) else: cut_area_poly = adp if cut_area_poly is None: if not adp._is_inside(ovp): return 0.0 else: # Should already have been taken care of in pyresample.spherical.intersection cut_area_poly = adp daylight = cut_area_poly.intersection(poly) if daylight is None: if sun_zenith_angle(start_time, *area_def.get_lonlat(0, 0)) < 90: return 1.0 else: return 0.0 else: daylight_area = daylight.area() total_area = adp.area() return daylight_area / total_area
def area_coverage(self, area_of_interest): """Get the ratio of coverage (between 0 and 1) of the pass with the area of interest. """ try: area_boundary = area_of_interest.poly except AttributeError: area_boundary = AreaDefBoundary(area_of_interest, frequency=100) area_boundary = area_boundary.contour_poly inter = self.boundary.contour_poly.intersection(area_boundary) if inter is None: return 0 return inter.area() / area_boundary.area()
def area_coverage(self, area_of_interest): """Get the ratio of coverage (between 0 and 1) of the pass with the area of interest. """ try: area_boundary = area_of_interest.poly except AttributeError: area_boundary = AreaDefBoundary(area_of_interest, frequency=100) area_boundary = area_boundary.contour_poly inter = self.boundary.contour_poly.intersection(area_boundary) if inter is None: return 0 return inter.area() / area_boundary.area()