def distance_circles(gdf,x):
    """
    sampling the GNSS data by distance
    
    Parameters
    ----------
    gdf: geodataframe
        geodataframe of all gnss data(population)
    x: int
        distance interval
       
    Returns
    -------
    geodataframe:
        geodataframe of GNSS data after sampling by distance interval
      
    """
    #obtain the minimum distance
    distance_min = int(gdf['distance'].unique().min())
    #obtain the maximum distance
    distance_max = int(gdf['distance'].unique().max())
    #initialize the list
    d = [0]*len(gdf['distance'].unique())
    #for loop to get all distance interval
    for i in range(distance_min,distance_max+1,x):
        d.append(i)
    
    #Remove redundant 0 values
    d = list(filter(lambda number : number > 0, d))
    #Keep gnss data at some specific distances
    gdf = gdf.loc[gdf['distance'].isin(d),['time','svid','Cn0DbHz','geometry','distance']]
    
    return gdf