def is_valid(self):
        """Return True if tile is available in tile pyramid."""
        if not all([
            isinstance(self.zoom, int),
            self.zoom >= 0,
            isinstance(self.row, int),
            self.row >= 0,
            isinstance(self.col, int),
            self.col >= 0
        ]):
            raise TypeError("zoom, col and row must be integers >= 0")
        cols = self.tile_pyramid.matrix_width(self.zoom)
        rows = self.tile_pyramid.matrix_height(self.zoom)
        if self.col >= cols:
            raise ValueError("col (%s) exceeds matrix width (%s)" % (self.col, cols))
        if self.row >= rows:
            raise ValueError("row (%s) exceeds matrix height (%s)" % (self.row, rows))
        return True
Return True if tile is available in tile pyramid.