banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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

 

Pied de page des forums

Powered by FluxBB