# MultiSurface Geometry type in QGIS: difference to MultiPolyon

Adding a new temporary scratch layer in QGIS, selecting the Geometry type, there are different options, between else MultiSurface.

In the documentation, I could not find any information about this Geometry type. What is the difference from MultiPolygon? As I understand it, a MultiPolygon is used to create features with several non contigent parts - like countries consisting of the mainland + islands (say Italy: the "boot"-shaped mainland + Sicily, Sardinia etc.). So what are MultiSurfaces for?

• A nice thread about `MultiPolygon` can be found here : gis.stackexchange.com/questions/225368/…. Information about `MultiSurface` can be found for instance here : datypic.com/sc/niem21/e-geo_MultiSurface.html. Briefly saying: Italy is your `MultiPolygon`, but as soon as you add `a Surface` e.g. a TIN to it using the `ST_MultiSurface()`, it becomes a `MultiSurface`. So, basically `MultiSurface` extends `MultiPolygon`, Jan 17 at 8:23
• Surface extents multipolygon so that while the segments of a polygon are all straight lines in a surface they can also be curves. Jan 17 at 8:35

The OGC standard about Simple Features describes LineString and LinearRing

A LineString is a Curve with linear interpolation between Points. Each consecutive pair of Points defines a Line segment.

A LinearRing is a LineString that is both closed and simple

Polygons are make of LinearRings so it means that in a polygon all the segments are straight lines.

Curvepolygon is a geometry that allows also curved segments (arcs). Geometry that is combined from several Curvepolygons is called MultiSurface.

An example about the difference using the PostGIS function https://postgis.net/docs/ST_CurveToLine.html

Source geometry is a curvepolygon that could be an element in a multisurface:

``````'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))';
``````

Apply the PosGIS function ST_CurveToLine:

``````    select ST_AsText(
ST_CurveToLine(ST_GeomFromText(
'CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))')));
``````

Resulting output:

``````"POLYGON((1 3,1.313519436051493 3.228634069139761,1.615442682167029 3.472376408113742,1.905042378801364 3.730639820278051,2.18162085491937 4.00280212645158,2.444511808746663 4.288207663800152,2.693081912948945 4.586168865385723,2.926732340373023 4.895967916575354,3.144900206673873 5.21685848431954,3.347059926352328 5.548067515133887,3.532724478936582 5.888797097452681,3.701446582257166 6.238226383867729,3.852819769988868 6.595513568621666,3.986479370863718 6.959797915591758,4 7,4.153336482273182 6.996235800641164,4.306303563529878 6.984952270850615,4.458532732673006 6.966176593639941,4.609657256300401 6.939954001260095,4.7593130621977 6.90634766623295,4.907139616420195 6.865438549163153,5.052780791850688 6.81732520369694,5.195885726140906 6.762123539097772,5.336109666969632 6.69996654101076,5.473114802581243 6.631003951088609,5.606571075603817 6.55540190625085,5.736156978186257 6.473342538445454,5.861560326538854 6.385023535877015,5.982479013011392 6.290657666758554,6.098621733896932 6.190472266734247,6.209708691207961 6.084708691207961,6.315472266734247 5.973621733896932,6.415657666758554 5.857479013011392,6.510023535877016 5.736560326538854,6.598342538445454 5.611156978186257,6.68040190625085 5.481571075603817,6.756003951088609 5.348114802581243,6.82496654101076 5.211109666969632,6.887123539097772 5.070885726140905,6.94232520369694 4.927780791850688,6.990438549163153 4.782139616420195,7.03134766623295 4.6343130621977,7.064954001260095 4.484657256300401,7.091176593639941 4.333532732673005,7.109952270850616 4.181303563529878,7.121235800641164 4.028336482273182,7.125 3.875,7.121235800641164 3.721663517726819,7.109952270850616 3.568696436470123,7.091176593639941 3.416467267326995,7.064954001260095 3.265342743699599,7.03134766623295 3.1156869378023,6.990438549163153 2.967860383579805,6.94232520369694 2.822219208149312,6.887123539097772 2.679114273859095,6.824966541010761 2.538890333030369,6.756003951088609 2.401885197418757,6.68040190625085 2.268428924396182,6.598342538445454 2.138843021813743,6.510023535877016 2.013439673461146,6.415657666758554 1.892520986988608,6.315472266734247 1.776378266103067,6.209708691207961 1.665291308792039,6.098621733896933 1.559527733265753,5.982479013011392 1.459342333241447,5.861560326538854 1.364976464122985,5.736156978186257 1.276657461554546,5.606571075603817 1.19459809374915,5.473114802581243 1.118996048911391,5.336109666969631 1.05003345898924,5.195885726140906 0.987876460902229,5.052780791850688 0.93267479630306,4.907139616420195 0.884561450836847,4.7593130621977 0.84365233376705,4.609657256300402 0.810045998739905,4.458532732673006 0.783823406360059,4.306303563529878 0.765047729149385,4.153336482273181 0.753764199358836,4 0.75,3.84666351772682 0.753764199358836,3.693696436470123 0.765047729149384,3.541467267326995 0.783823406360059,3.390342743699599 0.810045998739905,3.2406869378023 0.84365233376705,3.092860383579806 0.884561450836847,2.947219208149312 0.93267479630306,2.804114273859095 0.987876460902229,2.663890333030369 1.050033458989239,2.526885197418757 1.118996048911391,2.393428924396182 1.19459809374915,2.263843021813744 1.276657461554545,2.138439673461146 1.364976464122984,2.017520986988608 1.459342333241446,1.901378266103067 1.559527733265753,1.790291308792039 1.665291308792039,1.684527733265754 1.776378266103067,1.584342333241448 1.892520986988607,1.489976464122984 2.013439673461146,1.401657461554546 2.138843021813743,1.31959809374915 2.268428924396182,1.243996048911391 2.401885197418757,1.17503345898924 2.538890333030367,1.11287646090223 2.679114273859093,1.05767479630306 2.822219208149313,1.009561450836848 2.967860383579805,1 3))"
``````
• OK, to make it short: did I understand correctly that `MultiSurface` is related in the same way to `Curvepolygons` as `Multipolgons` to `Polygons` or `MultiLines` to `Lines`? So then the terminology is somewhat confusing - so `MultiSurface` is in fact a `MultiCurvepolygon`? Jan 17 at 10:48
• There is actually also Surface but I do not know its relation with CurvePolygon. See github.com/opengeospatial/geopackage/issues/178 and the simple features standards ogc.org/standards/sfs, Part 2. Jan 17 at 11:01