def distance_geometry_gdf(geometry, gdf):
    """
    Given a geometry and a GeoDataFrame, it returns the minimum distance between the geometry and the GeoDataFrame. 
    It provides also the index of the closest geometry in the GeoDataFrame.
    
    Parameters
    ----------
    geometry: Point, LineString or Polygon
    gdf: GeoDataFrame
    
    Returns:
    ----------
    distance, index: tuple
        the closest distance from the geometry, and the index of the closest geometry in the gdf
    """
    
    gdf = gdf.copy()
    gdf["dist"] = gdf.apply(lambda row: geometry.distance(row['geometry']),axis=1)
    geoseries = gdf.iloc[gdf["dist"].argmin()]
    distance  = geoseries.dist
    index = geoseries.name
    return (distance, index)