def extract_subset(self, input_data_tiles=None, out_tile=None):
if self.METADATA["<STR_LIT>"] == "<STR_LIT>":<EOL><INDENT>mosaic = create_mosaic(input_data_tiles)<EOL>return extract_from_array(<EOL>in_raster=prepare_array(<EOL>mosaic.data,<EOL>nodata=self.nodata,<EOL>dtype=self.output_params["<STR_LIT>"]<EOL>),<EOL>in_affine=mosaic.affine,<EOL>out_tile=out_tile<EOL>)<EOL><DEDENT>elif self.METADATA["<STR_LIT>"] == "<STR_LIT>":<EOL><INDENT>return [<EOL>feature for feature in list(<EOL>chain.from_iterable([features for _, features in input_data_tiles])<EOL>)<EOL>if shape(feature["<STR_LIT>"]).intersects(out_tile.bbox)<EOL>]<EOL><DEDENT>
Extract subset from multiple tiles.

input_data_tiles : list of (``Tile``, process data) tuples
out_tile : ``Tile``

Returns
-------
NumPy array or list of features.