Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Barbara Streisand
Freigeben: 2024-10-26 01:45:02
Original
547 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
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!