docs: def bbox(coordinates, crs, outname=None, format='ESRI Shapefile', overwrite=True):
      """
      create a bounding box vector object or shapefile from coordinates and coordinate reference system.
      The CRS can be in either WKT, EPSG or PROJ4 format
      
      Parameters
      ----------
      coordinates: dict
          a dictionary containing numerical variables with keys `xmin`, `xmax`, `ymin` and `ymax`
      crs: int, str or :osgeo:class:`osr.SpatialReference`
          the CRS of the `coordinates`. See :func:`~spatialist.auxil.crsConvert` for options.
      outname: str
          the file to write to. If `None`, the bounding box is returned as :class:`~spatialist.vector.Vector` object
      format: str
          the output file format
      overwrite: bool
          overwrite an existing file?
      
      Returns
      -------
      Vector or None
          the bounding box Vector object
      """
      srs = crsConvert(crs, 'osr')
      
      ring = ogr.Geometry(ogr.wkbLinearRing)
      
      ring.AddPoint(coordinates['xmin'], coordinates['ymin'])
      ring.AddPoint(coordinates['xmin'], coordinates['ymax'])
      ring.AddPoint(coordinates['xmax'], coordinates['ymax'])
      ring.AddPoint(coordinates['xmax'], coordinates['ymin'])
      ring.CloseRings()
      
      geom = ogr.Geometry(ogr.wkbPolygon)
      geom.AddGeometry(ring)
      
      geom.FlattenTo2D()
      
      bbox = Vector(driver='Memory')
      bbox.addlayer('bbox', srs, geom.GetGeometryType())
      bbox.addfield('area', ogr.OFTReal)
      bbox.addfeature(geom, fields={'area': geom.Area()})
      geom = None
      if outname is None:
          return bbox
      else:
          bbox.write(outname, format, overwrite)