diff --git a/README.md b/README.md index cb0ee00e74f35becc28228d95e0d979adb5fb489..dccb8dedaff19d74109990c1053b9a81a81f29aa 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # EBEC 2021 -## cool +## ATTENTION ENTRER LES COORDONNEES SOUS LA FORME (LONG,LAT) -t \ No newline at end of file diff --git a/main.py b/main.py index 1f2ab8f0037dbcc4730395497bcfb1d6109cacb6..12e9b0ac1931333c893b10056ea15bf0a09f48fb 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,17 +59,64 @@ 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