def __init__(self, lane_id: int, map_data: dict, need_lane_localization):
        """
        Extract the lane information of one lane, and do coordinate shift if required
        """
        center_line_points = np.asarray(map_data[lane_id][ScenarioDescription.POLYLINE])
        if ScenarioDescription.POLYGON in map_data[lane_id] and len(map_data[lane_id][ScenarioDescription.POLYGON]) > 3:
            polygon = np.asarray(map_data[lane_id][ScenarioDescription.POLYGON])
        else:
            polygon = None
        if "speed_limit_kmh" in map_data[lane_id] or "speed_limit_mph" in map_data[lane_id]:
            speed_limit_kmh = map_data[lane_id].get("speed_limit_kmh", None)
            if speed_limit_kmh is None:
                speed_limit_kmh = mph_to_kmh(map_data[lane_id]["speed_limit_mph"])
        else:
            speed_limit_kmh = self.MAX_SPEED_LIMIT
        super(ScenarioLane, self).__init__(
            center_line_points=center_line_points,
            width=self.VIS_LANE_WIDTH,
            polygon=polygon,
            speed_limit=speed_limit_kmh,
            need_lane_localization=need_lane_localization,
            metadrive_type=map_data[lane_id][ScenarioDescription.TYPE]
        )
        self.index = lane_id
        self.lane_type = map_data[lane_id]["type"]
        self.entry_lanes = map_data[lane_id].get(ScenarioDescription.ENTRY, None)
        self.exit_lanes = map_data[lane_id].get(ScenarioDescription.EXIT, None)
        self.left_lanes = map_data[lane_id].get(ScenarioDescription.LEFT_NEIGHBORS, None)
        self.right_lanes = map_data[lane_id].get(ScenarioDescription.RIGHT_NEIGHBORS, None)

        Extract the lane information of one lane, and do coordinate shift if required
        
metadrive/component/lane/scenario_lane.py