Outils pour utilisateurs

Outils du site


nsi:tds:tag_rue

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:tds:tag_rue [2022/11/28 10:02] goupillwikinsi:tds:tag_rue [2022/11/28 16:04] (Version actuelle) – [Recherche de la rue la plus proche] goupillwiki
Ligne 78: Ligne 78:
   * Les longueurs sont données en mètres.   * Les longueurs sont données en mètres.
   * ''deuxsens = 1'' quand la voie est à double sens, ''0'' pour un sens unique.   * ''deuxsens = 1'' quand la voie est à double sens, ''0'' pour un sens unique.
 +
 +<WRAP tip>**Calcul d'une distance point segment**
 +
 +{{ :nsi:tds:distance_segment_point.png?direct&200|}}
  
 **Calcul de distance :** Considérants deux nœuds aux coordonnées ''A(lat1,lng1)'', ''B(lat2,lng2)'' reliés par une rue ''[AB]''. Considérons aussi le point ''M(lat, lng)''. On veut définir la distance entre ''M'' et ''[AB]''. **Calcul de distance :** Considérants deux nœuds aux coordonnées ''A(lat1,lng1)'', ''B(lat2,lng2)'' reliés par une rue ''[AB]''. Considérons aussi le point ''M(lat, lng)''. On veut définir la distance entre ''M'' et ''[AB]''.
  
 +Pour cela on commence par déterminer la position du point ''N'', projection de ''M'' sur ''(AB)''. Il nous faut les quantités :
 +
 +''lngAB = lngB - lngA'', ''latAB = latB - latA'', ''lngAM = lngM - lngA'' et ''latAM = latM - latA''.
 +
 +On calcule ensuite ''%%a = (lngAM*latAB - latAM*lngAB)/(latAB**2 + lngAB**2)%%''\\ ce qui permet d'obtenir ''lngN = lngM - a*latAB'' et ''latN = latM + a*lngAB''.
 +
 +Une fois que ''N'' est connu, on essaie de savoir dans quel cas on est : N1, N2 ou N3.
 +
 +On calcule donc ''t = (lngN - lngA)/lngAB if lngAB != 0 else (latN - latA)/latAB''.
 +
 +  * Si ''%%t <= 0%%'' (cas N1), la distance recherchée est ''AM'',
 +  * si ''%%0 < t < 1%%'' (cas N2), la distance recherchée est ''MN'',
 +  * si ''%%1 <= t%%'' (cas N3), la distance recherchée est ''BM''.
 +
 +Enfin, pour calculer la distance entre deux points ''F'' et ''G'', la formule est :
 +
 +$$FG = R \arccos(\sin(latitude_F) \sin(latitude_G) + \cos(longitude_F - longitude_G) \cos(latitude_F) \cos(latitude_G))$$
 +
 +</WRAP>
  
  
nsi/tds/tag_rue.1669626148.txt.gz · Dernière modification : de goupillwiki