def trouver_deco_atterro(trace_gps, conn_bdd): '''Chercher si la base de donnees a un decollage dans un rayon de 100 m du point de depart et un atterrissage dans un rayon de 100 m du point d'arrivee de la trace GPS. Le format de la trace GPS doit etre une liste d'objets de type Coord() ''' cur = conn_bdd.cursor() dist_deco_le_plus_proche = 99999 deco_proche = None cur.execute('''SELECT * from decos order by deco''') liste_decos_bdd = cur.fetchall() # Chercher le deco le plus proche du depart de la trace GPS for deco in liste_decos_bdd: # Verifier que la latitude et la longitude sont enregistrees dans la # base de donnees try: float(deco[2]) float(deco[3]) # sinon, passer au decollage suivant except: continue coord_deco = Coord(deco[2], deco[3]) dist_deco = coord_deco.distance_to(trace_gps[0]) if dist_deco <= dist_deco_le_plus_proche : deco_proche = deco[1] dist_deco_le_plus_proche = dist_deco dist_atterro_le_plus_proche = 99999 atterro_proche = None cur.execute('''SELECT * from atterros order by atterro''') liste_atterros_bdd = cur.fetchall() # Chercher l'atterro le plus proche de l'arrive de la trace GPS for atterro in liste_atterros_bdd: # Verifier que la latitude et la longitude sont enregistrees dans la # base de donnees try: float(atterro[2]) float(atterro[3]) # sinon, passer a l'atterro suivant except: continue coord_atterro = Coord(atterro[2], atterro[3]) dist_atterro = coord_atterro.distance_to(trace_gps[-1]) if dist_atterro <= dist_atterro_le_plus_proche : atterro_proche = atterro[1] dist_atterro_le_plus_proche = dist_atterro # Verifier que le deco le plus proche est a moins de 100 m if not dist_deco_le_plus_proche < 100: deco_proche = None # Verifier que l'atterro le plus proche est a moins de 150 m if not dist_atterro_le_plus_proche < 150: atterro_proche = None return (deco_proche, atterro_proche)