def reproject_geometry(<EOL>geometry, src_crs=None, dst_crs=None, error_on_clip=False, validity_check=True,<EOL>antimeridian_cutting=False<EOL>):
src_crs = _validated_crs(src_crs)<EOL>dst_crs = _validated_crs(dst_crs)<EOL>def _reproject_geom(geometry, src_crs, dst_crs):<EOL><INDENT>if geometry.is_empty:<EOL><INDENT>return geometry<EOL><DEDENT>else:<EOL><INDENT>out_geom = to_shape(<EOL>transform_geom(<EOL>src_crs.to_dict(),<EOL>dst_crs.to_dict(),<EOL>mapping(geometry),<EOL>antimeridian_cutting=antimeridian_cutting<EOL>)<EOL>)<EOL>return _repair(out_geom) if validity_check else out_geom<EOL><DEDENT><DEDENT>if src_crs == dst_crs or geometry.is_empty:<EOL><INDENT>return _repair(geometry)<EOL><DEDENT>elif (<EOL>dst_crs.is_epsg_code and               <EOL>dst_crs.get("<STR_LIT>") in CRS_BOUNDS and  <EOL>dst_crs.get("<STR_LIT>") != "<STR_LIT>"     <EOL>):<EOL><INDENT>wgs84_crs = CRS().from_epsg(<NUM_LIT>)<EOL>crs_bbox = box(*CRS_BOUNDS[dst_crs.get("<STR_LIT>")])<EOL>geometry_4326 = _reproject_geom(geometry, src_crs, wgs84_crs)<EOL>if error_on_clip and not geometry_4326.within(crs_bbox):<EOL><INDENT>raise RuntimeError("<STR_LIT>")<EOL><DEDENT>return _reproject_geom(crs_bbox.intersection(geometry_4326), wgs84_crs, dst_crs)<EOL><DEDENT>else:<EOL><INDENT>return _reproject_geom(geometry, src_crs, dst_crs)<EOL><DEDENT>
Reproject a geometry to target CRS.

Also, clips geometry if it lies outside the destination CRS boundary.
Supported destination CRSes for clipping: 4326 (WGS84), 3857 (Spherical
Mercator) and 3035 (ETRS89 / ETRS-LAEA).

Parameters
----------
geometry : ``shapely.geometry``
src_crs : ``rasterio.crs.CRS`` or EPSG code
    CRS of source data
dst_crs : ``rasterio.crs.CRS`` or EPSG code
    target CRS
error_on_clip : bool
    raises a ``RuntimeError`` if a geometry is outside of CRS bounds
    (default: False)
validity_check : bool
    checks if reprojected geometry is valid and throws ``TopologicalError``
    if invalid (default: True)
antimeridian_cutting : bool
    cut geometry at Antimeridian; can result in a multipart output geometry

Returns
-------
geometry : ``shapely.geometry``