def recherche_voisin(support, distance): data_sup = d_les_supports[support] dept_limitrof = limit[data_sup[1][1]] dept_limitrof.append(data_sup[1][1]) geo_gsmr = data_sup[0] lat1, lon1 = geo_gsmr liste = [] origin = Point(lat1, lon1) limit0 = VincentyDistance(kilometers=distance).destination( origin, 0).format_decimal() limit90 = VincentyDistance(kilometers=distance).destination( origin, 90).format_decimal() lat0, lon0 = limit0.split(', ') lat90, lon90 = limit90.split(', ') dif0 = float(lat0) - lat1 dif90 = float(lon90) - lon1 latmini = lat1 - dif0 latmaxi = float(lat0) lonmini = lon1 - dif90 lonmaxi = float(lon90) for dept in set(dept_limitrof): for support_P in d_dept_geo[dept]: if latmini <= support_P[1] <= latmaxi: if lonmini <= support_P[2] <= lonmaxi: if support_P[0] in l_support_GsmP_seuls: liste.append(support_P[0]) return liste
def grid_point_coordinate(a, b, x, y): c = VincentyDistance(meters=int(a)).destination(Point(x, y), float(b)).format_decimal() c = c.split(',') return c