diff --git a/main.py b/main.py index 196cab5a2d6bf60f2759f46688b31b6b6513a0c8..5e95c0aa7d0b0060208a6efa3252bd6a7eaec6c0 100644 --- a/main.py +++ b/main.py @@ -30,12 +30,13 @@ def trees_positions(liste_coord): #ATTENTION mettre la longitude en premier #on classe les arbres afin de les regrouper par tronçon commun, on obtient un dictionnaire #ayant en clé les caractéristique du troncon, et en valeur les coordonnées des arbres de ce troncon classement=classement_arbres(liste_coord) + new_classement=classement_reduit(classement) dict={} #pour chaque troncon, on cherche l'ordre des arbres - for troncon in classement: + for troncon in new_classement: print('troncon') dict[troncon]={} # ce dictionnaire contiendra, pour chaque arbre du troncon, toutes les informations demandées - ordre=ordre_arbre(classement[troncon],troncon[-1]) #troncon[-1] est la coordonnée du début de troncon à partir de laquelle on classe les arbres + ordre=ordre_arbre(new_classement[troncon],troncon[-2]) #troncon[-2] est la coordonnée du début de troncon à partir de laquelle on classe les arbres #ordre est le dictionnaire qui contient à la clé i les coordonnées du ième arbre du troncon for i in range(len(ordre)): dict[troncon][i+1]={'lat':ordre[i][1], 'lon':ordre[i][0], 'ville':troncon[0], 'rue':troncon[1], 'début tronçon': troncon[2], 'fin tronçon':troncon[3]} @@ -58,16 +59,62 @@ def classement_arbres(liste_coord): dict[(i['ville'],i['rue'],i['début tronçon'],i['fin tronçon'],i['coordonnées début tronçon'],i['coordonnées fin tronçon'])].append((i['lon'],i['lat'])) return dict +def classement_reduit(classement): #fonction pour l'objectif 3 qui rassemble les troncons d'une même rue + rue_princ={} + #on créé un dictionnaire ayant pour clé la rue principale et pour valeur ds couples avec les + # coordonnées de fin et début de troncon des arbres de cette rue ainsi que le nom de ces rues + new_classement={} + #on créé un dictionnaire qui contiendra la même chose que classement, mais avec les nouveau début et fin + for troncon in classement : + if troncon[1] in rue_princ: + rue_princ[troncon[1]].append((troncon[4],troncon[2])) + rue_princ[troncon[1]].append((troncon[5],troncon[3])) + else: + rue_princ[troncon[1]]=[(troncon[4],troncon[2]),(troncon[5],troncon[3])] + for rue in rue_princ: + liste_coord=rue_princ[rue] + dist_max=0 + coord_deb=(0,0) + coord_fin=(0,0) + nom_deb='' + nom_fin='' + for i in range(len(liste_coord)): + for j in range(i, len(liste_coord)): + x1=liste_coord[i][0][0] + y1=liste_coord[i][0][1] + x2=liste_coord[j][0][0] + y2=liste_coord[j][0][1] + d=(x1-x2)**2+(y1-y2)**2 + if d>dist_max: + dist_max=d + coord_deb=liste_coord[i][0] + coord_fin=liste_coord[j][0] + nom_deb=liste_coord[i][1] + nom_fin=liste_coord[j][1] + for troncon in classement: + if troncon[1]==rue: + if (troncon[0],rue,nom_deb,nom_fin,coord_deb,coord_fin) in new_classement: + new_classement[(troncon[0],rue,nom_deb,nom_fin,coord_deb,coord_fin)]+=classement[troncon] + else : + new_classement[(troncon[0],rue,nom_deb,nom_fin,coord_deb,coord_fin)]=classement[troncon] + return new_classement + + + + + + if __name__=="__main__": - t1 = time.time() - lat, lon = 48.898867, 2.237485 - print(tree_position(lat, lon)) + '''t1 = time.time() + lat, lon = 48.892046, 2.249319 + #print(tree_position(lat, lon)) t2 = time.time() #print(t2-t1) lat = 48.89227652 lon = 2.253773690 print(tree_position(lat, lon))''' - liste=[(2.24697,48.89535),(2.24705,48.89529),(2.2472,48.89518)] + #liste=[(2.24697,48.89535),(2.24705,48.89529),(2.2472,48.89518)] + liste=[(2.246212,48.896523),(2.247038,48.895916)] print(trees_positions(liste)) \ No newline at end of file