[postgis-devel] Can a PolyhedralSurface/TIN be an element of MultiSurface ?

Even Rouault even.rouault at spatialys.com
Sun Jul 17 06:43:13 PDT 2016


We've stumbled upon this philosophical question with our GDAL GSoC student 
when trying to convert a shapefile MultiPatch into a OGR Geometry. My idea was 
to model a MultiPatch as a MultiSurface whose children could be Polygons (for 
parts of type outer ring, inner ring, first ring or ring) or TINs (for parts of 
type triangle strip or triangle fan). But it seems that according to 
https://github.com/postgis/postgis/blob/svn-trunk/doc/bnf-wkb.txt or 
https://github.com/postgis/postgis/blob/svn-trunk/doc/bnf-wkt.txt, a 
MultiSurface can only have Polygon or CurvePolygon as elements. And PostGIS 
does enforce that when importing WKT ( 
trunk/liblwgeom/lwin_wkt_parse.y#L260 )

This restriction of MultiSurface to Polygon/CurvePolygon seems to me to be 
contradictory with the "Figure 1: Geometry class hierarchy" of OGC 06-103r4  
Simple feature access  1.2.1 ( 
http://portal.opengeospatial.org/files/?artifact_id=25355 ) where a TIN derives 
from Surface. And according to ยง6.1.13.1, "A MultiSurface is a 2-dimensional 
GeometryCollection whose elements are Surfaces".

Even more confusing, according to bnf-wkt.txt, a polyhedral text or tin text 
could be a valid MultiSurface, despite PolyhedralSurface/TIN not being modeled 
as a MultiSurface.

So I'm wondering if the restrictions of bnf-wkt.txt and bnf-wkb.txt regarding 
the accepted children type of MultiSurface are legitimate ?


Spatialys - Geospatial professional services

More information about the postgis-devel mailing list