From 4a4af6eec99985c92d420d6b3f46557c2e97e050 Mon Sep 17 00:00:00 2001 From: "a.pradeilles" <alexandre.pradeilles@student-cs.fr> Date: Wed, 14 Apr 2021 11:59:55 +0200 Subject: [PATCH] commentaires --- .../coord_to_intersections.cpython-38.pyc | Bin 2937 -> 3002 bytes __pycache__/ordre_arbres.cpython-38.pyc | Bin 0 -> 523 bytes coord_to_intersections.py | 31 +++++++++++++----- main.py | 7 ++-- request.py | 1 + request2.py | 2 ++ research.py | 2 ++ 7 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 __pycache__/ordre_arbres.cpython-38.pyc diff --git a/__pycache__/coord_to_intersections.cpython-38.pyc b/__pycache__/coord_to_intersections.cpython-38.pyc index 26e01917afeb2438f975e81a5ef0c71bafdf4b17..4e434e589c9f348322a23a18123b699838c1e18e 100644 GIT binary patch delta 454 zcmew<wo9BZl$V!_fq{V`YgJi-p!h_-WsFS|w>}grVM}3YW@KbYXQ<^(XQ<^%XQ<^b zVV}H&F_igV4e#VWW-+-M{sjy*EHwg>3=0_<84CZEFxId(Go~<QGfZGA3Yu)dq|bP7 zasrbzqtxUCCf&&=nJm<cO4w3ZLB^J_fz*PH7fNTS6)s^fVXR?jW^873VTjF`tiWs~ zRKo!=yhc!*A)93aQ&HLE9%gCdvJ|!ywsfXikrc*S(Hhnok!<D(%tcitY$@zDqAASc z49!f83^k%DOkxZvjM+>Rn2U5KpJ6s;WShid9QUS%wT4ZcA(%mv!>@>ufq~&A6Nmt@ zN~IVW7+emoOe!r=NGVk)Day|~ygWY-#3(I0ys}iBfq@|{GY^~GEru!<-$XBk$pI|t zJOxFWc_p`4ixTtFQ#UuW<T5h$O#aBK#m&gU#KH)I0xXkN*bL-2pd1S(Ax1t%K1L9q z3(VqU<YC%e#P*PpF=}!M$0bJI$?BX=jFpqKIIlA{PIltj#@IReCs!qV7>7Iu2L}fL DggbSG delta 379 zcmdlb{!@%El$V!_fq{X+c2QZv9?^+>%NScGZhgp?&QQyn&QJ@Y`AgU)uVD;j{#L^~ zxsF+EvJ?|P|F;sx8rEjU6sBy32~0&^lP#F^8Lv&wV6tWunw-I;JNY7$g?v^CJ4g*9 zLpnpPP&z}ca0y!pV+}(yV>6=*Lu|)n17<6u680K~8Uaa$W=2Ma680L78Ws>wf}uuG z0xSj-sSy-s$Yz<qRFpQkhFMxQErlh8C7r2OB!#h7w1%}tB%65xb5Tu=XbO`ULkeRy z(*))sy~(GTjTzY||6?|m{ZqqQ!zRuU%%I8YSH#G`!0?g@M1WYg7$*0#sPhyh=B20J zVl61j%q!V^h$WYiv1_scn-(V%3nK^$FilQnGmv9pWML9uvS8$46k!x%<YVMx<X~iB z<N~vJST=8Fd&tNbK6xs~B}Sgf8JtdxWs_HPUT3VE+|0F&v2C&ycO`o;hdc)d2L}Kp CuUp^% diff --git a/__pycache__/ordre_arbres.cpython-38.pyc b/__pycache__/ordre_arbres.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b05408dc19e6d84c4888815c085ff8cdd17f892a GIT binary patch literal 523 zcmWIL<>g{vU|@(|T$Zqtk%8ech=Yuo7#J8F7#J9ec^DWNQW#PgTNt7kQka4nG?|k@ zaxk^*3=9k)><m)d!oa|g&QQyg$xzE&!{EXYYgEfp!?b{*h9!kjlA(qXL`pEEFbRW1 zn86~<k_-?LafXGAj0}Z5C5$CZH4M#+&5U6EtTjvvm`hk{n3@?EGS;%yFx0R~GSo2F zu-Y)xFfCxMVFT%^VSup;eQKD488lh^UV<F>66DgCj0_A6nrye&5(^4a^HOfH7A5AT zr`}@DNzJ>(nwgi9T5*dxH#6@Rb3uNACVP}nPG)gQYJ75jeo;z%Vo_32YH^e>gqM<< zR9X^WQk0*UoS%1#B_*@C1Vkp6++qbQxW$-xi!C!RB{Mm7B|{NE0|Ub^mt?D$(Bjmh z;uy!A)QZHsl%iCHfTF~d)Xbcm)Z!SI{N&Qy)Vz}780X-a)TGp8T_Xb{!<hV{l%iCq z<$48`x44l6Kwc^q0r`%Rg^`7kgVBIdfRT@phmnhshp|YIfq}tK6GDSsfJ6u|FfiQW Su*uC&Da}c>1DW#~WDEcdr+%OS literal 0 HcmV?d00001 diff --git a/coord_to_intersections.py b/coord_to_intersections.py index 4d518b1..082d1e7 100644 --- a/coord_to_intersections.py +++ b/coord_to_intersections.py @@ -6,79 +6,94 @@ def coord_to_inter(liste_coord,lat,long,main_street): inter_street=[] inter_street_coord=[] for inter in liste_coord: + #Calcul des distances entre les intersections et l'arbre d=(inter[0]-long)**2 + (inter[1]-lat)**2 dist.append(d) while len(inter_street)<1 : + #On regarde l'intersection la plus proche de l'arbre candidat=liste_coord[dist.index(min(dist))] - #print(candidat) + #On regarde si cette intersection correspond bien au croisement avec une autre rue, on trouve le nom de cette autre rue nom_de_rue=circular_research(candidat[1], candidat[0], main_street) if nom_de_rue== None : + #Si on ne trouve pas d'autre rue a cette intersection on écarte cette intersection indice=dist.index(min(dist)) dist.pop(indice) liste_coord.pop(indice) else : + #Si on trouve, on a notre début de tronçon inter_street.append(nom_de_rue) inter_street_coord.append(candidat) indice=dist.index(min(dist)) d_1 = min(dist) dist.pop(indice) liste_coord.pop(indice) - #Calcul du tronçon de l'autre coté + print('Début du tronçon trouvé') + #Recherche de la fin du tronçon liste_coord_admissibles = [] d_1_2 = [] dist2 = [] for i in range(len(liste_coord)): #On prend la liste des intersection situé du second coté de l'arbe + #Pour cela on calcule les distances entre le premier point trouvé, l'arbre et les autres points + #On conserve les points qui permettent de former un triangle avec un angle obtu au niveau de l'arbre d=(liste_coord[i][0]-inter_street_coord[0][0])**2 + (liste_coord[i][1]-inter_street_coord[0][1])**2 if d > dist[i] + d_1: liste_coord_admissibles.append(liste_coord[i]) d_1_2.append(d) dist2.append(dist[i]) while len(inter_street)<2 : + #On regarde l'intersection admissible la plus proche du début du tronçon candidat=liste_coord_admissibles[d_1_2.index(min(d_1_2))] nom_de_rue=circular_research(candidat[1], candidat[0], main_street) if nom_de_rue== None : + #Si cette intersection ne donne rien, on la rejette indice=d_1_2.index(min(d_1_2)) d_1_2.pop(indice) liste_coord_admissibles.pop(indice) dist2.pop(indice) elif nom_de_rue==inter_street[0]: + #Si l'intersection est la même rue que le début de tronçon, on rejette indice=d_1_2.index(min(d_1_2)) d_1_2.pop(indice) liste_coord_admissibles.pop(indice) dist2.pop(indice) else : + #Sinon on à trouvé la fin de tronçon inter_street.append(nom_de_rue) inter_street_coord.append(candidat) indice=d_1_2.index(min(d_1_2)) d_2 = dist2[indice] liste_coord_admissibles.pop(indice) + print('fin du tronçon trouvé') print(inter_street) + #On souhaite ensuite s'asssurer que l'on à le couple début/fin de tronçon le plus rapproché possible pour + #réduire la zone de recherche liste_coord_admissibles2 = [] d_2_1 = [] - #dist = fct_dist(liste_coord, lat, long) for i in range(len(liste_coord)): #On prend la liste des intersection situé du premier coté de l'arbe + #Pour cela on calcule les distances entre le second point trouvé, l'arbre et les autres points + #On conserve les points qui permettent de former un triangle avec un angle obtu au niveau de l'arbre d=(liste_coord[i][0]-inter_street_coord[1][0])**2 + (liste_coord[i][1]-inter_street_coord[1][1])**2 - print(liste_coord[i]) - print(d - dist[i] - d_2) - if d > dist[i] + d_2: #+ 2* 10**(-12) + + if d > dist[i] + d_2: liste_coord_admissibles2.append(liste_coord[i]) d_1_2.append(d) inter_street2 = ['', ''] c = 0 while inter_street != inter_street2: + print('MaJ ', c+1) + #Calcul des intersections admissibles et des distances if c % 2 == 0: liste_coord_admissibles2 += [inter_street_coord[0]] d_2_1 = fct_d_2_1(liste_coord_admissibles2, inter_street_coord) - #print(liste_coord_admissibles2) - #print(d_2_1) else: liste_coord_admissibles += [inter_street_coord[1]] d_1_2 = fct_d_2_1(liste_coord_admissibles, inter_street_coord) print(d_1_2) inter_street2 = deepcopy(inter_street) + #Recherche du nouveau tronçon optimal inter_street, inter_street_coord = opti_inter_street(c, main_street, liste_coord_admissibles, liste_coord_admissibles2, d_1_2, d_2_1, inter_street, inter_street_coord) c +=1 return inter_street+inter_street_coord diff --git a/main.py b/main.py index 2ffe912..8743d4f 100644 --- a/main.py +++ b/main.py @@ -43,11 +43,14 @@ def classement_arbres(liste_coord): return dict if __name__=="__main__": - lat = 48.89394122 - lon = 2.247959188 + + lat = 48.89627806 + lon = 2.248657510 print(tree_position(lat, lon)) + ''' lat = 48.89227652 lon = 2.253773690 #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 diff --git a/request.py b/request.py index 8978afd..7f87b5b 100644 --- a/request.py +++ b/request.py @@ -4,6 +4,7 @@ import requests def requete_osm(lat, lon): + #Recherche l'addresse d'un point gps params = { 'lat':lat, 'lon':lon, diff --git a/request2.py b/request2.py index ad08795..2e8964a 100644 --- a/request2.py +++ b/request2.py @@ -2,6 +2,7 @@ import requests import json def search_osm(main_street, city, country): + #requete pour obtenir les intersections d'une rue donnée params = { 'street' : main_street, 'city' : city, @@ -16,6 +17,7 @@ def search_osm(main_street, city, country): return reqJson def all_intersect(json): + #concaténation des intersections des différents morceaux de rue trouvés intersection = [] for road in json: try: diff --git a/research.py b/research.py index 2e42ee9..b1f28c7 100644 --- a/research.py +++ b/research.py @@ -2,6 +2,7 @@ from request import requete_osm from math import sqrt def circular_research(lat, lon, main_street): + #Recherche un rue autre que main_street par recherche circulaire autour du point d'intersection street = requete_osm(lat, lon)['address']['road'] if not(street == main_street) and not(street == ''): return street @@ -15,6 +16,7 @@ def circular_research(lat, lon, main_street): return None def check_position(lat, lon, step, main_street, i): + #Calcul les positions autour du point centrale et récupère la rue associée à cette position street = '' step_diag = step/sqrt(2) if i == 0: -- GitLab