Was ist der schnellste Weg, um in Python zu überprüfen, ob sich ein Punkt innerhalb eines Polygons befindet?
Posted: 05 Jan 2025, 14:16
Ich habe zwei Hauptmethoden gefunden, um zu prüfen, ob ein Punkt in ein Polygon gehört. Einer verwendet die hier verwendete Raytracing-Methode, die am meisten empfohlene Antwort, der andere verwendet matplotlib path.contains_points (was mir etwas unklar erscheint). Ich werde viele Punkte ständig überprüfen müssen. Weiß jemand, ob eine dieser beiden empfehlenswerter ist als die andere oder ob es noch bessere dritte Optionen gibt?
Ich habe die beiden Methoden überprüft und Matplotlib sieht viel schneller aus.
Ich habe die beiden Methoden überprüft und Matplotlib sieht viel schneller aus.
Code: Select all
from time import time
import numpy as np
import matplotlib.path as mpltPath
# regular polygon for testing
lenpoly = 100
polygon = [[np.sin(x)+0.5,np.cos(x)+0.5] for x in np.linspace(0,2*np.pi,lenpoly)[:-1]]
# random points set of points to test
N = 10000
points = np.random.rand(N,2)
# Ray tracing
def ray_tracing_method(x,y,poly):
n = len(poly)
inside = False
p1x,p1y = poly[0]
for i in range(n+1):
p2x,p2y = poly[i % n]
if y > min(p1y,p2y):
if y