From 7e4bbdded836143d54b1279acc2dbae557cbf950 Mon Sep 17 00:00:00 2001 From: "a.pradeilles" <alexandre.pradeilles@student-cs.fr> Date: Wed, 14 Apr 2021 10:09:54 +0200 Subject: [PATCH] tache 1 full --- .../coord_to_intersections.cpython-38.pyc | Bin 1042 -> 2937 bytes __pycache__/request.cpython-38.pyc | Bin 805 -> 655 bytes __pycache__/request2.cpython-38.pyc | Bin 0 -> 944 bytes __pycache__/research.cpython-38.pyc | Bin 1391 -> 1391 bytes coord_to_intersections.py | 133 +++++++++++++++--- main.py | 10 +- request.py | 9 +- request2.py | 46 ++++++ research.py | 2 +- 9 files changed, 169 insertions(+), 31 deletions(-) create mode 100644 __pycache__/request2.cpython-38.pyc create mode 100644 request2.py diff --git a/__pycache__/coord_to_intersections.cpython-38.pyc b/__pycache__/coord_to_intersections.cpython-38.pyc index 1dd0f69fb0b5e7d19f9f57443b3aeb3fc98b014a..26e01917afeb2438f975e81a5ef0c71bafdf4b17 100644 GIT binary patch literal 2937 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 delta 620 zcmew<Hi?5Tl$V!_fq{YH;h)lkLbi!~G9eNS3=Am@DU3M`xr|Yaj0`DEDa<VlQA{Z; z!3>(LFF}em8E*+DXBH)w<|G!y7o`@bCKe@UB(s2|pqP(=fq|8Qfx(%9fuZ;U<HT*g zjMpZ!FqTYqU=*t_VXR?oW=vtqW|+WObf$)(hGhX$33ClgGvh)=Nrqa^8qO3(NroCW z5DCH(3@J>)3^kl7%y3a=Nd}0hI72NDL~ku`4Nna(*vuGY6KlC^SQfC>a4%$JWT;_S zz*;lepOH=WS_uo(K!|0`&CIo2HC!nS*-R4{CmS%Ta$l=qUBFPo1=2Rzh*4ScS`BM3 zgC>h#5hDWw!%HR*0b*&gO%7sFuGi#?;?Bt|E=i3~&d)DOxy785SQ5pOlb@G<i#s<l zGcUflq$oAD<Q7XxW^qXrPi9_8Y7tZ{N(h+;(I3SM7Q4lm62+06n3s~7l2{VOm6x9z zpOPA1RGJ#amYJ85nVcHM0WvS%P&nQwiW|%XTV}M9p@?sC2Wv7L$eqO=lRvVG)G&%L zaxn5SaxwBSaWQg1Sd4s(LW~BC956nU2%H5|Q6#{?z~HCJ9K`{P=^~J!VBsQAJR=eO Z3=9mnIBatBQ%ZAE?Lfg(3{uO(2mr*fl6C+9 diff --git a/__pycache__/request.cpython-38.pyc b/__pycache__/request.cpython-38.pyc index e126e2c49ff5b895a5e38de12556d6ad9565c9af..454e263dc447ff9d2e00c723570c962dccb8a888 100644 GIT binary patch delta 359 zcmZ3=*3Zft%FD~ez`(#DGqWtAcOtKBm=^;BLkdF*V-7<ULkd$0a|=ThV=7Y$OEy!H zTMBCmTMBy$M+#>O*BsU;=2V6SEGgWn%nO;KSX0?jS+m%i85tQ;Sr>3DWQgKSVGL%_ z<ar4)-EXoN<6$i(1_lOA)*?0r28JSb1_p*(Yz2u$iMhqMn2S;iZ?PAp7J3!u=dENY z;-C21m6y9HwXig`BsD(2IG1g50F!jRAV?2Ke0*+VW?p=Jx{_tZs+=MZhjh*PH`y-z zW^^b5Sy03bGM)uQu!0CqkfmHjAWs&-49H8&O^uH);sMEXg9u)b$*cuMnRz8q>=~(v zDXB%p5YzZT()?h;3`~Lu0g!SIo80`A(wtN~kgdgH3=9k$EF63stW1nh_?wNLhmngB E0Ox8?^8f$< delta 490 zcmeBYUCPEA%FD~ez`(#@{joIR&_rI@`UnOFh7^Vr#vFzy2+bJ9n8K98+`<sWl){q2 z+QJaUoXV2Imd#WYlER+Ck;0k6mBO9EGlw;bHI;DzTMBO~>q4d|_Eh!-919tuI8(V& zIhz?78B!R788rD`g6#53W&}}C%*4RJz|6qF;LO0lP%P%ez`#(#uz<0KVIgBJV+~^# zQw?Jla~e}HgC?V&Cd)03^wj+1{FKz9DCYd)+*^#5w-_rlnQpNpXO>jnVoYDjP{ckt zm(f*<9jcBMWGV~DDn>5GB2ESdhKUV_!Cuy6E#hNfU?}3B9Ka|kTf`1xg9#1>28LVQ zMX80QsU@lL`Ng@MllL=9*NcOMIpX7U6EpMT<I|P?C3^Q4c{rr+-&XhQ{4Yj_B2YLM zaf6KE0TH|)LXd%hL6f@(<i{c*kO0U9MKGiC5_41I<BLQ<62c%t6hwf{5d+!AT2Pdk zR|0XGHP~%n0_;Ezo80`A(wtN~P*@gAF)%Q2Fmf<+uyF8kure`1;cqr}9wrV(03T6h AoB#j- diff --git a/__pycache__/request2.cpython-38.pyc b/__pycache__/request2.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2d6200b60d09ad0827b735dc5ac0aa896231d5ec GIT binary patch literal 944 zcmWIL<>g{vU|`s~s4T&eg@NHQh=YvT85kHG7#J9eqZk+%QW#Pga~Pr^G-DKF3R4Pm z3qurB3QG!W3qurhDoYAmHd9ep3VRAi3TFye3U>-a3eOz2DArVl1#Bt2sjLf`qS#Z} z7ceelh~h})Oyy{1WMoKT3}(>edkM1DFPRxcK`|Qx0|Ur@XOR6`3=9l43^j~3OetV{ zQ&{G()iRebEMQDwtzllsRLfGsvVdtJLoI6!YcPW*o8L=D1_p*(ELp|*c|{=RO14{U z#U(|lsU^2qk~2#xZ?Pxmm*$leRo>z+$j_-v&(DibPt6A@zr~i8UzD3z62+F1no?Sj z`b#^bq@<wON?$)OKQ}Wku_QBBFTWr)4`NzwVu4<MQM!I{YGP4xhP@{9Esmnp!qU{@ zlHyy;>8T|}ATMdM-Qvzo%*>02=qUnutqA0|TWkf1MTxn^x0s7k3vaO(r51V>=jW|t zC=z5~VEE;bY!wq)oLW>I<Cv3Lk(ifKl&TO=l$es5nUj-R9OIIoT$-DjS5h3~92}FH zl$xw-WME_%1GU~rub}c47sOfd`Ng>`pkNdMg)I{kBOLx><K$uFU@Q`5U|>iFg%d~t z2!oV!GB7ZJLm!j`(iv(QYZzP@VvTB<sw6=1Ajy!zB*{?AT*FwyY|c>27|u}0!NO3& zkj+(O!N>rDkqm_#5e$VKHJ~_V_KRYN25}U3a(;eM3MepBi!~W<ad@Xzx)v4X7iqG9 z!|N7LW?o5ZQE_T=NoIcDEtaDE#FSgCU@>sWKnNjF4D%-D<ivwzK&nAP#R4GrGqNyp zFfuXnF!C_+fjlSyQp^z_4~~ZTDt^bZ)V$JE1^2|<q|}m<#3(N3{L-SN)Uy1{)F?K$ zqQt!9)FLJZ1_rQuia?=J1j;I!Tt(b)QBa^2!3@qz%uS7tFX98q@_-0_5CL+_E!Kjf z%)Anaqd^f1VS(Iwi^C>2KczG$)eaQ)#WD;G3>=IcOdNb1+#Jl{NP<MxPc}{-W)4OG DAnW3a literal 0 HcmV?d00001 diff --git a/__pycache__/research.cpython-38.pyc b/__pycache__/research.cpython-38.pyc index ed2ca150e2e72ec77e82ae5798e6c587af0df0f5..95da01e8ab97a032581d32d5198493c24133f2be 100644 GIT binary patch delta 35 rcmaFQ^`472l$V!_fq{XcOSUY*Wh1XFBm2jU#~oXLuxvJDv||APvT+Kz delta 35 qcmaFQ^`472l$V!_fq{WRhovmRX(O*JBfGA%%<D&HQkxAK?N|VnxCnFr diff --git a/coord_to_intersections.py b/coord_to_intersections.py index 72f068a..4d518b1 100644 --- a/coord_to_intersections.py +++ b/coord_to_intersections.py @@ -1,4 +1,6 @@ from research import circular_research +from copy import deepcopy + def coord_to_inter(liste_coord,lat,long,main_street): dist=[] inter_street=[] @@ -8,6 +10,7 @@ def coord_to_inter(liste_coord,lat,long,main_street): dist.append(d) while len(inter_street)<1 : candidat=liste_coord[dist.index(min(dist))] + #print(candidat) nom_de_rue=circular_research(candidat[1], candidat[0], main_street) if nom_de_rue== None : indice=dist.index(min(dist)) @@ -17,33 +20,123 @@ def coord_to_inter(liste_coord,lat,long,main_street): 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é + 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 + 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 : + 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 : + 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]: + indice=d_1_2.index(min(d_1_2)) + d_1_2.pop(indice) + liste_coord_admissibles.pop(indice) + dist2.pop(indice) + else : + 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(inter_street) + 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 + 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) + liste_coord_admissibles2.append(liste_coord[i]) + d_1_2.append(d) + inter_street2 = ['', ''] + c = 0 + while inter_street != inter_street2: + 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) + 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 + + +def opti_inter_street(c, main_street, liste_coord_admissibles, liste_coord_admissibles2, d_1_2, d_2_1, inter_street_init, inter_street_coord_init): + p = c % 2 + if p == 0: + liste_coord = liste_coord_admissibles2 + dist = d_2_1 + else: + liste_coord = liste_coord_admissibles + dist = d_1_2 + inter_street = deepcopy(inter_street_init) + inter_street_coord = deepcopy(inter_street_coord_init) + found = False + while not(found): candidat=liste_coord[dist.index(min(dist))] - dist_1_2= (candidat[0]-inter_street_coord[0][0])**2 + (candidat[1]-inter_street_coord[0][1])**2 - dist_main_2= min(dist) - if dist_1_2<dist_main_2 : + nom_de_rue=circular_research(candidat[1], candidat[0], main_street) + if nom_de_rue== None : indice=dist.index(min(dist)) dist.pop(indice) liste_coord.pop(indice) - else: - nom_de_rue=circular_research(candidat[1], candidat[0], main_street) - if nom_de_rue== None : - indice=dist.index(min(dist)) - dist.pop(indice) - liste_coord.pop(indice) - elif nom_de_rue==inter_street[0]: - indice=dist.index(min(dist)) - dist.pop(indice) - liste_coord.pop(indice) - else : - inter_street.append(nom_de_rue) - inter_street_coord.append(candidat) - indice=dist.index(min(dist)) - dist.pop(indice) - liste_coord.pop(indice) - return inter_street+inter_street_coord + elif nom_de_rue==inter_street[p]: + indice=dist.index(min(dist)) + dist.pop(indice) + liste_coord.pop(indice) + found = True + else : + inter_street[p] = nom_de_rue + inter_street_coord[p] = candidat + indice=dist.index(min(dist)) + liste_coord.pop(indice) + found = True + return inter_street, inter_street_coord + +def fct_d_1_2(liste_coord, inter_street_coord): + d_1_2 = [] + for i in range(len(liste_coord)): + #On prend la liste des intersection situé du premier coté de l'arbe + d=(liste_coord[i][0]-inter_street_coord[0][0])**2 + (liste_coord[i][1]-inter_street_coord[0][1])**2 + d_1_2.append(d) + return d_1_2 + +def fct_d_2_1(liste_coord, inter_street_coord): + d_2_1 = [] + for i in range(len(liste_coord)): + #On prend la liste des intersection situé du premier coté de l'arbe + d=(liste_coord[i][0]-inter_street_coord[1][0])**2 + (liste_coord[i][1]-inter_street_coord[1][1])**2 + d_2_1.append(d) + return d_2_1 + +def fct_dist(liste_coord, lat, long): + dist=[] + for inter in liste_coord: + d=(inter[0]-long)**2 + (inter[1]-lat)**2 + dist.append(d) + return dist diff --git a/main.py b/main.py index ac07c1d..d0d277c 100644 --- a/main.py +++ b/main.py @@ -1,20 +1,18 @@ from request import requete_osm from coord_to_intersections import coord_to_inter +from request2 import search_osm, all_intersect def tree_position(lat, lon): req = requete_osm(lat, lon) main_street = req['address']['road'] city = req['address']['town'] - intersections = req['geojson']['coordinates'] + country = req['address']['country'] + 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) return {'lat':lat, 'lon':lon, 'ville':city, 'rue':main_street, 'début tronçon': begin, 'fin tronçon':end, 'coordonées début tronçon': coord_begin, 'coordonnées fin tronçon': coord_end} if __name__=="__main__": -<<<<<<< HEAD lat = 48.89394122 lon = 2.247959188 -======= - lat = 48.89227652 - lon = 2.253773690 ->>>>>>> 813f0fa0998be24636500d74894a86f50c568431 print(tree_position(lat, lon)) \ No newline at end of file diff --git a/request.py b/request.py index c62b237..8978afd 100644 --- a/request.py +++ b/request.py @@ -22,13 +22,14 @@ if __name__=="__main__": # intersection : 48.895307, 2.247367 48.894596, 2.247958 48.853994, 2.247177 48.894998, 2.247467 #g = geocoder.osm([48.89, 2.247], method='reverse') params = { - 'lat':48.894998, - 'lon':2.247467, + 'lat':48.89394122, + 'lon':2.247959188, 'format':'json', 'zoom': 17, 'polygon_geojson' : 1 } req = requests.get("https://nominatim.openstreetmap.org/reverse",params) - + print(req.headers) reqJson = req.json() - print(reqJson) #['geojson']['coordinates'] \ No newline at end of file + #print(reqJson) #['geojson']['coordinates'] + diff --git a/request2.py b/request2.py new file mode 100644 index 0000000..ad08795 --- /dev/null +++ b/request2.py @@ -0,0 +1,46 @@ +import requests +import json + +def search_osm(main_street, city, country): + params = { + 'street' : main_street, + 'city' : city, + 'country' : country, + 'polygon_geojson' : 1, + 'format' : 'json', + 'dedupe':0 + } + + req = requests.get("https://nominatim.openstreetmap.org/search?",params) + reqJson = req.json() + return reqJson + +def all_intersect(json): + intersection = [] + for road in json: + try: + inter = road['geojson']['coordinates'] + intersection += inter + except KeyError: + pass + return intersection + + +if __name__=="__main__": + + params = { + 'street' : 'Avenue Gambetta', + 'city' : 'Courbevoie', + 'country' : 'France', + #'q' : '8 Avenue Gambetta, Courbevoie, France', + 'polygon_geojson' : 1, + 'format' : 'json', + 'dedupe':0 + } + req = requests.get("https://nominatim.openstreetmap.org/search?",params) + #print(req.text) + + reqJson = req.json() + print(reqJson) + + # \ No newline at end of file diff --git a/research.py b/research.py index b605890..2e42ee9 100644 --- a/research.py +++ b/research.py @@ -6,7 +6,7 @@ def circular_research(lat, lon, main_street): if not(street == main_street) and not(street == ''): return street step = 10**(-5) - while step < 10**(-4): + while step < 4*10**(-5): for i in range(8): street = check_position(lat, lon, step, main_street, i) if not(street == main_street) and not(street == ''): -- GitLab