There’s method in matplotlib.basemap: is_land(xpt, ypt)
It returns True
if the given x,y point (in projection coordinates) is over land, False
otherwise. The definition of land is based upon the GSHHS coastline polygons associated with the class instance. Points over lakes inside land regions are not counted as land points.
For more information, see here.