Question: Let me start by saying that I am not a GIS expert nor a cartographer , and my knowledge of GIS is limited to the quasi-null professional training I had as an architect.

My question here was triggered by [another question I have asked on stackoverflow regarding the use of Google maps API.](https://stackoverflow.com/questions/9644452/verify-if-a-point-is-land-or-water-in-google-maps)

My problem is this : I am making a web-app or a website, where I need to generate quasi random points on the surface of the earth.

Those points however , should be , like pointed on the SURFACE of the earth as intended in SOLID surface . (e.g. not in the middle of the ocean or deep inside a lake)
In shorts - I need to be able to "separate" the bodies of water from the solid surface .

I am a fairly okay programmer for web-technologies, especially PHP - so generating points (nodes) was a 1-minute job , but verifying that they are "accessible" points to humans without a floating vehicle was another issue.

I will be able to exclude coordinates from the generated array - but where can I get this info ? 

Is such information (like worldwide bodies-of-water including seas oceans lakes) available as coordinates ? as boundaries ? 

Does anyone here knows how to use the data from Google-maps for this purpose ? like I said in the original question - they obviously have this data (the bodies of water are blue) - but can users separate those layers ?

I have from previous works a fairly okay resolution (for my purpose) of vector world map - But I have no Idea how to use it to generate even approximation coordinates ..

Please remember that I am not a GIS expert , so If you use any technical terms , Please try to explain them like you would explain to your 2-years-old neighbor´s kid .

Any help as to how to approach this will be more than appreciated.

Answer: 
The GIS operation within or overlap would perhaps be useful.

This is one option available.

1. Get Saga GIS ( <http://www.saga-gis.org/en/index.html> ).
2. Import your point data Modules->Files->Shapes->Import->Shapes from XYZ.
3. Get your polygon boundary data, countries and water boundaries perhaps ( <http://thematicmapping.org/downloads/world_borders.php> ).
4. Import the SHP files File->Shapes->Load.
5. Clip Points with Polygons Modules->Shapes->Points->Clip Points with Polygons.

yours points file should be in XYZ csv format i believe.
There is another way that you can load an entire table then convert the table to a points feature within SAGA that way you retain your attribute data.

This should create another dataset that contains only those points that fall within your country dataset.

To further remove those that would be within rivers / lakes you would require a more detailed land mass dataset.

-Edit
XYZ file formating first row column headings seperated by tab characters sub rows xyz seperated by tab characters. It seems to read to 6 decimal places hope that can't seem to find any specific documentation on it though.

```
X [TAB] Y [TAB] Z [NEWLINE]    
1.000001 [TAB] -1.000001 [TAB] 1.000001 [NEWLINE]

```
I am not sure how to extract this information from GoogleMaps about water bodies.

Check this link though: <http://www.epa.gov/waters/data/downloads.html>

Once you have this information, i.e. shapefiles with landclasses, then you can check for your point being in a polygon (say a polygon with class 'water'). A python code to check for this is like 25-30 lines. Several algos exist, which you can check or I can provide this detail too if you want. You can optimize the algorithm for larger dataset and for real time check.

Cheers
N