Heim  >  Artikel  >  Datenbank  >  Wie kann man mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?

Wie kann man mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 01:45:02553Durchsuche

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

Punkte innerhalb eines Polygons mit PHP finden

Problem:

Gegeben sei ein Polygon definiert durch Bestimmen Sie anhand eines Arrays von Breiten- und Längengradkoordinaten und eines Punkts (Scheitelpunkt) mit bekannten Koordinaten, ob der Scheitelpunkt innerhalb des Polygons liegt.

Lösung:

Um dieses Problem zu lösen , verwenden wir eine angepasste Version eines Polygonschnittalgorithmus:

<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>

Diese Funktion iteriert durch die Eckpunkte des Polygons und berechnet den Schnittpunkt von Linien, die durch den Eckpunkt und nachfolgende Eckpunkte gebildet werden, mit einer horizontalen Linie, die durch das Polygon verläuft Punkt, der getestet werden soll. Liegt der Schnittpunkt aller Linien links vom Scheitelpunkt, liegt der Punkt außerhalb des Polygons; andernfalls befindet es sich im Inneren.

Beispiel:

<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>

Zusätzliche Hinweise:

Für komplexere Operationen mit Polygonen Erwägen Sie die Verwendung der online verfügbaren Klasse polygon.php.

Das obige ist der detaillierte Inhalt vonWie kann man mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn