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

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

Barbara Streisand
Libérer: 2024-10-26 01:45:02
original
546 Les gens l'ont consulté

How to Determine if a Point Lies Within a Polygon Using PHP?

Trouver des points dans un polygone à l'aide de PHP

Problème :

Étant donné un polygone défini par un tableau de coordonnées de latitude et de longitude et un point (sommet) avec des coordonnées connues, déterminez si le sommet se trouve dans le polygone.

Solution :

Pour résoudre ce problème , nous utilisons une version adaptée d'un algorithme d'intersection de polygones :

<code class="php">function is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)
{
  $i = $j = $c = 0;
  for ($i = 0, $j = $points_polygon ; $i < $points_polygon; $j = $i++) {
    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;
  }
  return $c;
}</code>
Copier après la connexion

Cette fonction parcourt les sommets du polygone, calculant l'intersection des lignes formées par le sommet et les sommets suivants avec une ligne horizontale passant par le point à tester. Si le point d'intersection se trouve à gauche du sommet de toutes les lignes, le point est à l'extérieur du polygone ; sinon, il est à l'intérieur.

Exemple :

<code class="php">$vertices_x = array(37.628134, 37.629867, 37.62324, 37.622424);
$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819);
$points_polygon = count($vertices_x) - 1;
$longitude_x = $_GET["longitude"];
$latitude_y = $_GET["latitude"];

if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){
  echo "Is in polygon!";
}
else echo "Is not in polygon";</code>
Copier après la connexion

Notes supplémentaires :

Pour des opérations plus complexes impliquant des polygones , pensez à utiliser la classe polygon.php disponible en ligne.

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
Derniers articles par auteur
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!