from matplotlib.nxutils import points_inside_poly
points_inside_poly([[0, 0], [0, 1]], [[1, 0], [1, 1], [0, 1]])
Using python-shapely (http://trac.gispython.org/lab/wiki/Shapely)
(http://gispython.org/shapely/manual.html#polygons)
$ sudo apt-get install python-shapely
in python,
from shapely.geometry import Polygon, Point
polygon2 = Polygon(((0, 0), (0, 1), (1, 1), (1, 0)))
print polygon2.contains(Point(0.1, 0.1)) # print True
another method :
ref : http://www.ariel.com.au/a/python-point-int-poly.html
#!/usr/bin/python
# determine if a point is inside a given polygon or not
# Polygon is a list of (x,y) pairs.
def point_inside_polygon(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 <= max(p1y,p2y):
if x <= max(p1x,p2x):
if p1y != p2y:
xinters = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
if p1x == p2x or x <= xinters:
inside = not inside
p1x,p1y = p2x,p2y
return inside
.
댓글 없음:
댓글 쓰기