Pages: 1
- Sujet précédent - [PHP] Comment savoir si un point gps est situé dans une surface ? - Sujet suivant
#1 Tue 08 April 2008 17:18
- Francisco
- Juste Inscrit !
- Date d'inscription: 14 Mar 2008
- Messages: 5
[PHP] Comment savoir si un point gps est situé dans une surface ?
Bonjour
J'ai en ensemble des points de gps qui forment une surface A et j'ai le point gps B
Je voudrais savoir comment je peux verifier si le point B est dans la surface A ou pas !!!
Je vous remercie d'avant pour votre aide ?
cordialement
Hors ligne
#2 Tue 08 April 2008 20:31
- Frédéric BARNAY
- Invité
Re: [PHP] Comment savoir si un point gps est situé dans une surface ?
Bonjour,
Il faut calculer tous les angles entre le point B et l'ensemble des points A. Si la somme des angles est proche de 0, le point est situé dans le polygone.
Il existe aussi un méthode consistant à réduire le polygone en triangles...
Encore une autre méthode consiste à tracer une ligne entre le point B et l'infini. Si cette ligne intersecte un nombre de fois impair le polygone, le point est à l'interieur, si le nombre de fois est pair, le point est à
l'exterieur.
Il est bien de filtrer en amont en vérifiant que le point B est bien situé dans la boite d'encombrement du polygone A, c'est moins gourmand.
http://tog.acm.org/editors/erich/ptinpoly/
Cordialement,
Frédéric BARNAY
Société Geo2i
#3 Tue 08 April 2008 23:18
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: [PHP] Comment savoir si un point gps est situé dans une surface ?
Bonsoir,
Pour faire simple, la première méthode n'est pas fiable. voir lien.
La deuxième est assez compliquée dès qu'il s'agit de décomposer un polygone en triangle.
La dernière est à mon sens la plus fiable et marche quelque soit le polygone ,même les surfaces trouées.
Car tout point placé à l'infini est à l'extérieur du polygone.
L'idéal dans le cas général est de prendre comme infini un point d'abscisse égale au point à tester mais à une ordonnée
Et pour faire simple les intersections seront sur les segments du polygones qui possède des limites contenant l'abscisse et qui sépare l'ordonnée du point avec celle de l'infini. Il pourra être nécessaire de vérifier l'intersection si les limites du segment formées par les coordonnées des deux points extrêmes du segment formant un rectangle horizontal contienne le point étudié.
NB il n'est pas nécessaire de calculer les coordonnées de l'intersection pour le savoir.
Une droite découpant l'espace en 2 partie l'une positive, l'autre négative
pour une équation de droite écrite de la forme a x+ b y +c = 0 le signe du point infini est celui de b
pour l'autre, reste à faire le calcul si les 2 signes sont identiques pas de croisement si différent croisement.
et si c'est 0 alors c'est Jackpot car le point est sur la frontière.
Voilà pour ne pas trop faire compliqué. Pour que cela fonctionne ,il faut effectuer le test avec tous les segments du contour du polygone bien sur.
Il existe 2, 3 autres règles pour parfaire la méthode, mais celle-ci déjà donner un bon nombre de résultat.
Cordialement,
Hors ligne
#4 Wed 09 April 2008 08:46
- jmz
- Participant actif
- Lieu: Anthon
- Date d'inscription: 5 Sep 2005
- Messages: 142
Re: [PHP] Comment savoir si un point gps est situé dans une surface ?
Un exemple est disponible sur ce site e tuto de google maps API, pour tester si un polygone contient un point:
http://econym.googlepages.com/inside.htm
Cordialement
Jmz
Hors ligne
#5 Wed 09 April 2008 14:25
- Laurent Jégou
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 5 Sep 2005
- Messages: 447
- Site web
Re: [PHP] Comment savoir si un point gps est situé dans une surface ?
Une implémentation en PHP de l'algo. basé sur une droite vers un point placé à l'infini :
http://www.phpclasses.org/browse/file/10683.html
Enseignant-Chercheur en Géomatique
UT2J - Dept Géo / CNRS UMR LISST-Cieu / Master Sigma - Revue Mappemonde
Hors ligne
#6 Thu 10 April 2008 14:03
- Francisco
- Juste Inscrit !
- Date d'inscription: 14 Mar 2008
- Messages: 5
Re: [PHP] Comment savoir si un point gps est situé dans une surface ?
Je vous remercie pour votre aide !!!!
j'ai utilisé la methode "une droite vers un point placé à l'infini " en recuperant la classe php sur http://www.phpclasses.org/browse/file/10683.html
Je suis entrain de faire des tests pour le moment c'est positif ......
Hors ligne
Pages: 1
- Sujet précédent - [PHP] Comment savoir si un point gps est situé dans une surface ? - Sujet suivant