diff --git a/main.py b/main.py index 00661310d4a9891ba2bf78eb1f6da3274ff3a4ce..9ebd6f43f4b64fc6b8768a884032bcba381ca93f 100644 --- a/main.py +++ b/main.py @@ -19,18 +19,24 @@ def tree_position(lat, lon): json = search_osm(main_street, city, country) intersections = all_intersect(json) [begin,end,coord_begin, coord_end] = coord_to_inter(intersections, lat, lon, main_street) + #pour la suite, on a besoin de stocker le couple début et fin de troncon sous frome de tuple + # et non de liste car on va s'en servir comme clé d'un dictionnaire tuple_c_begin=(coord_begin[0],coord_begin[1]) tuple_c_end=(coord_end[0],coord_end[1]) return {'lat':lat, 'lon':lon, 'ville':city, 'rue':main_street, 'début tronçon': begin, 'fin tronçon':end, 'coordonnées début tronçon': tuple_c_begin, 'coordonnées fin tronçon': tuple_c_end} 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) dict={} + #pour chaque troncon, on cherche l'ordre des arbres for troncon in classement: print('troncon') - dict[troncon]={} - ordre=ordre_arbre(classement[troncon],troncon[-1]) + 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 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]} print(i+1) @@ -40,27 +46,34 @@ def classement_arbres(liste_coord): info=[tree_position(coord[1], coord[0]) for coord in liste_coord] dict={} #dictionnaire ayant en clés la ville, la rue, le troncon de début et de fin et pour valeur une liste avec les coordonnées des arbres for i in info: - if (i['ville'],i['rue'],i['début tronçon'],i['fin tronçon'],i['coordonnées début tronçon']) not in dict and (i['ville'],i['rue'],i['fin tronçon'],i['début tronçon'],i['coordonnées fin tronçon']) not in dict : - dict[(i['ville'],i['rue'],i['début tronçon'],i['fin tronçon'],i['coordonnées début tronçon']) ]=[(i['lon'],i['lat'])] + #si le troncon n'est pas encore dans le dictionnaire, on le créé + #NB : peu importe si fin et début de troncon sont inversés, on choisit arbitrairement un début de troncon commun à tous les arbres du troncon, quitte a devoir les inverser dans les infos de l'arbre + if (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']) not in dict and (i['ville'],i['rue'],i['fin tronçon'],i['début tronçon'],i['coordonnées fin tronçon'],i['coordonnées début tronçon']) not in dict : + 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']) ]=[(i['lon'],i['lat'])] print(i) - elif (i['ville'],i['rue'],i['début tronçon'],i['fin tronçon'],i['coordonnées début tronçon']) not in dict: - dict[(i['ville'],i['rue'],i['fin tronçon'],i['début tronçon'],i['coordonnées fin tronçon']) ].append((i['lon'],i['lat'])) + elif (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']) not in dict: + dict[(i['ville'],i['rue'],i['fin tronçon'],i['début tronçon'],i['coordonnées fin tronçon'],i['coordonnées début tronçon']) ].append((i['lon'],i['lat'])) print(i) else: - dict[(i['ville'],i['rue'],i['début tronçon'],i['fin tronçon'],i['coordonnées début tronçon'])].append((i['lon'],i['lat'])) + 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 if __name__=="__main__": +<<<<<<< HEAD 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)) +>>>>>>> 6899c2939dfc49fc78620b32ffd1efe547f87229 t2 = time.time() - print(t2-t1) - ''' + #print(t2-t1) + lat = 48.89227652 lon = 2.253773690 - #print(tree_position(lat, lon)) + print(tree_position(lat, lon))''' liste=[(2.24697,48.89535),(2.24705,48.89529),(2.2472,48.89518)] - print(trees_positions(liste)) - ''' \ No newline at end of file + print(trees_positions(liste)) \ No newline at end of file diff --git a/ordre_arbres.py b/ordre_arbres.py index cdf0d1528fed166938deed039911965a5f4fe984..b68c91e62544fed6a8c44c31a99b05a3defbc0d5 100644 --- a/ordre_arbres.py +++ b/ordre_arbres.py @@ -3,10 +3,13 @@ def ordre_arbre(liste_coord_arbres, coord_debut_troncon): dist=[] dict= {} for coord in liste_coord_arbres: + #on calcule les distances de chaque arbre au point de début de tronçon dist.append((coord[0]-coord_debut_troncon[0])**2 + (coord[1]-coord_debut_troncon[1])**2) for i in range(len(liste_coord_arbres)): + #on choisit les arbres un à un du plus proche au plus éloigné, afin de les classer dans le bon ordre indice=dist.index(min(dist)) dict[i]=liste_coord_arbres[indice] + #on supprime l'arbre le plus proche de la liste pour pouvoir ensuite trouver l'arbre suivant dist.pop(indice) liste_coord_arbres.pop(indice) return dict