Check if geo-point is inside or outside of polygon Check if geo-point is inside or outside of polygon python python

Check if geo-point is inside or outside of polygon


Here is a possible solution to my problem.

  1. Geographical coordinates must be stored properly. Example np.array([[Lon_A, Lat_A], [Lon_B, Lat_B], [Lon_C, Lat_C]])
  2. Create the polygon
  3. Create the point to be tested
  4. Use polygon.contains(point) to test if point is inside (True) or outside (False) the polygon.

Here is the missing part of the code:

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 


There is also an emerging python library turfpy. which is used for geospatial analysis.

PyPI

Github

Example:

from turfpy.measurement import boolean_point_in_polygonfrom geojson import Point, Polygon, Featurepoint = Feature(geometry=Point((-46.6318, -23.5523)))polygon = Polygon(    [        [            (-46.653, -23.543),            (-46.634, -23.5346),            (-46.613, -23.543),            (-46.614, -23.559),            (-46.631, -23.567),            (-46.653, -23.560),            (-46.653, -23.543),        ]    ])boolean_point_in_polygon(point, polygon)


Another way to do it is by using the even-odd algorithm explained in this link https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html The python code is given in wikipedia https://en.wikipedia.org/wiki/Even–odd_rule

Folks, just remember that the ORDER OF POINTS that make the polygon MATTER! I mean, different order results in different polygons.