Maison > base de données > tutoriel mysql > le corps du texte

Comment pouvons-nous déterminer si un point se trouve dans un polygone en utilisant PHP ?

DDD
Libérer: 2024-10-25 03:38:02
original
695 Les gens l'ont consulté

How can we determine if a point lies within a polygon using PHP?

Implémentation PHP pour localiser des points dans un polygone

Question :

Étant donné un tableau de coordonnées de latitude et de longitude représentant un polygone et un point avec des coordonnées similaires, comment pouvons-nous déterminer si le point se trouve à l'intérieur du polygone ?

Solution :

 <br>$vertices_x = array(37.628134, 37.629867, 37.62324, 37.622424);    // Coordonnées x des sommets du polygone<br>$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); // coordonnées y des sommets du polygone<br>$points_polygon = count($vertices_x) - 1;  // nombre de sommets du polygone<br>$longitude_x = $_GET["longitude"];  // Coordonnée x du point de test<br>$latitude_y = $_GET["latitude"];    // coordonnée y du point de test</p>
<p>if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){<br> echo "Le point est dans le polygone !";<br> ><br>else echo "Le point n'est pas dans le polygone";</p>
<p>fonction is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)<br>{<br> $i = $j = $c = 0;<br> pour ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i ) {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if ( (($vertices_y[$i]  >  $latitude_y != ($vertices_y[$j] > $latitude_y)) &amp;&amp;
 ($longitude_x < ($vertices_x[$j] - $vertices_x[$i]) * ($latitude_y - $vertices_y[$i]) / ($vertices_y[$j] - $vertices_y[$i]) + $vertices_x[$i]) ) )
   $c = !$c;
Copier après la connexion

}
retour $c;
}

Dans ce code PHP, la fonction is_in_polygon parcourt chaque bord du polygone, vérifiant si le point est du "côté" du polygone où la coordonnée y d'un sommet est supérieure à la coordonnée y du point de test et la coordonnée y de l'autre sommet est inférieure à la coordonnée y du point de test. Si ces deux conditions sont vraies, la fonction vérifie si la coordonnée x du point de test est inférieure au segment de ligne entre les deux sommets. Si tel est le cas, cela signifie un franchissement de la limite du polygone et ajoute ou soustrait 1 à un compteur. Enfin, si ce compteur est différent de zéro, cela indique que le point de test se trouve dans le polygone.

Ressources supplémentaires :

Pour une assistance supplémentaire, envisagez d'utiliser le polygon.php classe, qui fournit une fonction supplémentaire, isInside, pour déterminer si un point se trouve dans un polygone.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!