Here is a possible solution to my problem.
- Geographical coordinates must be stored properly. Example
np.array([[Lon_A, Lat_A], [Lon_B, Lat_B], [Lon_C, Lat_C]])
- Create the polygon
- Create the point to be tested
- Use
polygon.contains(point)
to test if point is inside (True
) or outside (False
) the polygon.
Here is the missing part of the pre:
from shapely.geometry import Pointfrom shapely.geometry.polygon import Polygonlons_lats_vect = np.column_stack((lons_vect, lats_vect)) # Reshape coordinatespolygon = Polygon(lons_lats_vect) # create polygonpoint = Point(y,x) # create pointprint(polygon.contains(point)) # check if polygon contains pointprint(point.within(polygon)) # check if a point is in the polygon
Note : the polygon does not take into account great circles, therefore it
is necessary to split the edges into many segments thus increasing the number
of vertices.
Special case: If point lies on borders of Polygon
E.g.
print(Polygon([(0, 0), (1, 0), (1, 1)]).contains(Point(0, 0)))will
fail
So one can use
print(polygon.touches(point)) # check if point lies on border of polygon
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)