Esempio n. 1
0
    def find_local_lane_polygons(self, query_bbox: Tuple[float, float, float,
                                                         float],
                                 city_name: str) -> np.ndarray:
        """
        Find land polygons within specified area

        Args:
            query_bbox: An array of shape (4,) representing a 2d axis-aligned bounding box, with order
                        [xmin,xmax,ymin,ymax]
            city_name: either 'MIA' for Miami or 'PIT' for Pittsburgh

        Returns
            local_lane_polygons: Array of arrays, representing local hallucinated lane polygons
        """
        lane_polygons = self.city_to_lane_polygons_dict[city_name]
        lane_bboxes = self.city_to_lane_bboxes_dict[city_name]
        xmin, xmax, ymin, ymax = query_bbox
        local_lane_polygons, _ = find_local_polygons(
            copy.deepcopy(lane_polygons),
            copy.deepcopy(lane_bboxes),
            xmin,
            xmax,
            ymin,
            ymax,
        )
        return local_lane_polygons
Esempio n. 2
0
    def find_local_driveable_areas(self, query_bbox: Tuple[float, float, float,
                                                           float],
                                   city_name: str) -> np.ndarray:
        """
        Find local driveable areas within specified area

        Args:
            query_bbox: An array of shape (4,) representing a 2d axis-aligned bounding box, with order
                        [xmin,xmax,ymin,ymax]
            city_name: either 'MIA' for Miami or 'PIT' for Pittsburgh

        Returns
            local_das: Array of arrays, representing local driveable area polygons
        """
        driveable_areas = self.city_to_driveable_areas_dict[city_name]
        da_bboxes = self.city_to_da_bboxes_dict[city_name]
        xmin, xmax, ymin, ymax = query_bbox
        local_das, _ = find_local_polygons(
            copy.deepcopy(driveable_areas),
            copy.deepcopy(da_bboxes),
            xmin,
            xmax,
            ymin,
            ymax,
        )
        return local_das
Esempio n. 3
0
def test_find_local_polygons(polygons_and_gt_bboxes):
    """Test for correctness of find_local_polygons."""
    polygons = np.array(polygons_and_gt_bboxes[0])
    poly_bboxes = np.array(polygons_and_gt_bboxes[1])
    query_bbox = np.array([-1.5, 0.5, 1.5, 1.5])

    query_min_x, query_min_y, query_max_x, query_max_y = query_bbox
    local_polygons, overlap_indxs = find_local_polygons(
        polygons.copy(), poly_bboxes, query_min_x, query_max_x, query_min_y,
        query_max_y)

    gt_overlap_bool = np.array([True, True, False, True, True])
    gt_overlap_indxs = np.where(gt_overlap_bool)[0]

    assert np.allclose(overlap_indxs, gt_overlap_indxs)
    assert_np_obj_arrs_eq(polygons[gt_overlap_bool], local_polygons)