2017-05-17 2 views
0

Ich habe einen Code geschrieben, um herauszufinden, ob die Koordinaten innerhalb oder außerhalb eines Rechtecks ​​liegen. Ich habe festgestellt, dass es eine Funktion "contain_points" gibt, die dem Zweck dient, äquivalent zu "inpolygon" in Matlab. Ich konnte kein Dokument über die Implementierung oder ein Beispiel für diese Funktion finden. Kann jemand vorschlagen, wie das funktioniert?Wie finden Sie, ob die Koordinaten von Interesse innerhalb eines Polygons gefunden werden oder nicht?

+0

Kontrolle dieses http://stackoverflow.com/questions/36399381/whats-the-fastest-way-of-checking-if-a-point-is-inside-a-polygon-in-python – itzMEonTV

Antwort

0

Werfen Sie einen Blick auf shapely Bibliothek. Es ist der De-facto-Standard beim Umgang mit 2D-Polygonen in Python (und vielen anderen Sprachen, da es ein Wrapping der GEOS C++ - Bibliothek ist).

Ein Beispiel von dem, was Sie wollen:

from shapely.geometry import Point, Polygon 
p = Point(0.0, 0.0) 
poly = Polygon([(1, 1), (-1, 1), (-1, -1), (1, -1)]) 
is_included = poly.contains(p) 

is_includedTrue jetzt ist.

+0

Kannst du dir die Antwort ansehen und Kommentare abgeben? –

0

@Eguaio, ich habe versucht, Ihren Code zu ändern. Aber ich bekomme das Ergebnis, "Punkte sind nicht im Polygon enthalten".

from shapely.geometry import Point,Polygon 
a = Point([(0.0,0.0)]) 
b = Polygon([(1,1),(-1,1),(-1,-1),(1,1)]) 
if b.contains(a): 
    print "the points are included in the polygon" 
else: 
    print "the points are not included in the polygon" 
+0

Sie haben meinen Code nicht genau kopiert. Es gibt zwei Unterschiede. 1) mycode: 'Point (0.0.0.0)' dir: 'Point ([0.0.0.0])'. 2) Der letzte Punkt in meinem Polygon ist '(1, -1)' und erzeugt ein Quadrat, das '(0,0)' enthält. Sie setzen '(1,1)' und bilden ein Dreieck, das den Ursprung nicht enthält. Dieser zweite Unterschied ist derjenige, der das Problem verursacht. Übrigens sollten Sie dies als Kommentar zu meiner Antwort verwenden und nicht als Antwort selbst veröffentlichen. Und bitte, wenn die Antwort in Ordnung war, überprüfen Sie es als die richtige Antwort. Vielen Dank. – eguaio

+0

@eguaio vielen Dank. –

Verwandte Themen