def geoms(self, scale=None, bounds=None, as_element=True):
feature = self.data<EOL>if scale is not None:<EOL><INDENT>feature = feature.with_scale(scale)<EOL><DEDENT>if bounds:<EOL><INDENT>extent = (bounds[<NUM_LIT:0>], bounds[<NUM_LIT:2>], bounds[<NUM_LIT:1>], bounds[<NUM_LIT:3>])<EOL><DEDENT>else:<EOL><INDENT>extent = None<EOL><DEDENT>geoms = [g for g in feature.intersecting_geometries(extent) if g is not None]<EOL>if not as_element:<EOL><INDENT>return geoms<EOL><DEDENT>elif not geoms or '<STR_LIT>' in geoms[<NUM_LIT:0>].geom_type:<EOL><INDENT>return Polygons(geoms, crs=feature.crs)<EOL><DEDENT>elif '<STR_LIT>' in geoms[<NUM_LIT:0>].geom_type:<EOL><INDENT>return Points(geoms, crs=feature.crs)<EOL><DEDENT>else:<EOL><INDENT>return Path(geoms, crs=feature.crs)<EOL><DEDENT>
Returns the geometries held by the Feature.

Parameters
----------
scale: str
  Scale of the geometry to return expressed as string.
  Available scales depends on the Feature type.

  NaturalEarthFeature:
   '10m', '50m', '110m'

  GSHHSFeature:
   'auto', 'coarse', 'low', 'intermediate', 'high', 'full'

bounds: tuple
  Tuple of a bounding region to query for geometries in
as_element: boolean
  Whether to wrap the geometries in an element

Returns
-------
geometries: Polygons/Path
  Polygons or Path object wrapping around returned geometries