ST_PointOnSurface
Name
   ST_PointOnSurface — Returns a
   
    POINT
   
   guaranteed to lie on the surface.
  
Synopsis
    
     geometry
     
      ST_PointOnSurface
     
     (
    
    geometry
    
     g1
    
    
     )
    
    ;
   
Description
   Returns a
   
    POINT
   
   guaranteed to intersect a surface.
  
   
    
   
   This method implements the
   
    OpenGIS Simple Features
 Implementation Specification for SQL 1.1.
   
   s3.2.14.2 // s3.2.18.2
  
   
    
   
   This method implements the SQL/MM specification. SQL-MM 3: 8.1.5, 9.5.6.
		 According to the specs, ST_PointOnSurface works for surface geometries (POLYGONs, MULTIPOLYGONS, CURVED POLYGONS).  So PostGIS seems to be extending what
		 the spec allows here.  Most databases Oracle,DB II, ESRI SDE seem to only support this function for surfaces.  SQL Server 2008 like PostGIS supports for all common geometries.
  
   
    
   
   This function supports 3d and will not drop the z-index.
  
Examples
SELECT ST_AsText(ST_PointOnSurface('POINT(0 5)'::geometry));
 st_astext
------------
 POINT(0 5)
(1 row)
SELECT ST_AsText(ST_PointOnSurface('LINESTRING(0 5, 0 10)'::geometry));
 st_astext
------------
 POINT(0 5)
(1 row)
SELECT ST_AsText(ST_PointOnSurface('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'::geometry));
   st_astext
----------------
 POINT(2.5 2.5)
(1 row)
SELECT ST_AsEWKT(ST_PointOnSurface(ST_GeomFromEWKT('LINESTRING(0 5 1, 0 0 1, 0 10 2)')));
   st_asewkt
----------------
 POINT(0 0 1)
(1 row)