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
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
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)