1 FUNCTION OGC_PointOnSurface(
2 s ST_Geometry)
3 RETURN ST_Point DETERMINISTIC IS
4 BEGIN
5 IF(nls_upper(OGC_GeometryType(s)) IN ('POLYGON')) THEN
6 RETURN TREAT(s AS ST_Surface).ST_PointOnSurface();
7 END IF;
8 IF(nls_upper(OGC_GeometryType(s)) IN ('MULTIPOLYGON')) THEN
9 RETURN TREAT(s AS ST_MultiSurface).ST_PointOnSurface();
10 END IF;
11 RETURN NULL;
12 END OGC_PointOnSurface;