Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie können wir mit PHP feststellen, ob ein Punkt innerhalb eines Polygons liegt?

DDD
Freigeben: 2024-10-25 03:38:02
Original
695 Leute haben es durchsucht

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

PHP-Implementierung zum Auffinden von Punkten innerhalb eines Polygons

Frage:

Gegeben ein Array von Breiten- und Längengradkoordinaten, die ein Polygon und einen Punkt mit ähnlichen Koordinaten darstellen. Wie können wir feststellen, ob der Punkt innerhalb des Polygons liegt?

Lösung:

 <br>$vertices_x = array(37.628134, 37.629867, 37.62324, 37.622424);    // x-Koordinaten der Polygonscheitelpunkte<br>$vertices_y = array(-77.458334,-77.449021,-77.445416,-77.457819); // y-Koordinaten der Polygonscheitelpunkte<br>$points_polygon = count($vertices_x) - 1;  // Anzahl der Polygoneckpunkte<br>$longitude_x = $_GET["longitude"];  // x-Koordinate des Testpunkts<br>$latitude_y = $_GET["latitude"];    // y-Koordinate des Testpunkts</p>
<p>if (is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)){<br> echo "Point is Within Polygon!";<br> }<br>else echo „Punkt liegt nicht innerhalb des Polygons“;</p>
<p>Funktion is_in_polygon($points_polygon, $vertices_x, $vertices_y, $longitude_x, $latitude_y)<br>{<br> $i = $j = $c = 0;<br> for ($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;
Nach dem Login kopieren

}
return $c;
}

In diesem PHP-Code durchläuft die Funktion is_in_polygon jede Kante des Polygons und prüft, ob sich der Punkt auf der „Seite“ des Polygons befindet Dabei ist die Y-Koordinate eines Scheitelpunkts größer als die Y-Koordinate des Testpunkts und die Y-Koordinate des anderen Scheitelpunkts kleiner als die Y-Koordinate des Testpunkts. Wenn beide Bedingungen zutreffen, prüft die Funktion, ob die x-Koordinate des Testpunkts kleiner als das Liniensegment zwischen den beiden Eckpunkten ist. Wenn ja, bedeutet dies ein Überschreiten der Polygongrenze und addiert oder subtrahiert 1 von einem Zähler. Wenn dieser Zähler schließlich ungleich Null ist, zeigt dies an, dass sich der Testpunkt innerhalb des Polygons befindet.

Zusätzliche Ressourcen:

Für weitere Unterstützung sollten Sie die Verwendung von polygon.php in Betracht ziehen Klasse, die eine zusätzliche Funktion, isInside, bereitstellt, um zu bestimmen, ob sich ein Punkt innerhalb eines Polygons befindet.

Das obige ist der detaillierte Inhalt vonWie können wir 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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!