QGIS layer geometries
Note we are not talking about coordinate systems (which can warp layers badly). We are talking about the ‘geometry’ option offered if you create a new layer (the option is set to some value on every layer).
About geometries
All QGIS layers come preset with a ‘geometry’
This means the kind of shape a layer is set up to accept.
Once a layer geometry is set, it is not possible to use the layer in another way
you can not draw lines in a ‘point’ layer
Changing a layer from one geometry to another is possible, but not easy
It requires commandline work, GUI plugins and the like. But, if necessary, it may be possible to, say, change a ‘polygon’ to ‘line’ data
Searches for information on this subject usually return blank. Illumination floods forth when you find out that first, there is a widely implemented OpenGIS standard which defines the basic layer geometries. Beyond that, QGIS implements extended geometry proposals made and implemented in the Geospatial Data Abstraction Library (GDAL).
QGIS list of possible layer geometries
All types may include an ‘m’ field, for ‘measurement’, and a ‘z’ field, for elevation/height data. Geometry data is located withing a coordinate space,
No Geometry
I’ve never used it. Is it for placeholders?
Point
A single location
Linestring
A sequence of points with linear interpolation between (so a kind of curve, but not a generic ‘curve‘. For example, it’s not a Bezier‐iterpolated curve)
Polygon
The standard says polygons can have ‘holes’ (see ‘’Multisurface’). Perhaps the key point is that polygons must be a closed shape. Holes must not join the outer boundary
MultiPoint
Many points (an unordered collection of…)
MultiLine
Many lines (an unordered collection of…)
MultiPolygon
Many polygons e.g. outlines of islands
CompoundCurve
“a sequence of connected curves, either line strings or circular strings” (GDAL)
CurvePolygon
“polygon consisting of one outer ring, and zero or more inner rings. Each ring can be one of the curve implementations: line strings, circular strings, compound curves” (GDAL). Sounds like a singular surface but perhaps the API is different?
MultiCurve
“a collection of curves (line strings, circular strings, compound curves)” (GDAL). So it’s not Linestrings, or a ‘MultiLinestring’
MultiSurface
A single ‘surface’ is “one exterior boundary and 0 or more interior boundaries”. So more than a polygon. A Multisurface is many surfaces. Boundaries should not cross
Users grumble
I’ve seen people grumble about this online—‐“Why”, they ask, “can I not store any kind of shape on a layer?” Personally, I don’t think this needs explanation. To store a single point on a layer, data needs little more than an X/Y coordinate but, to store multiple polygons, data needs to store many points in order, and chain the points for many lengths (so needs some kind of end marker). No, I don’t know if the reason for geometry definition is performance, grouping of potential operations, or GUI reasons (knowing a geometry, QGIS can change it’s toolset), but it makes sense to differentiate.
Mither
You see, I don’t care where layers are saved, or in what format, I can figure that out. I don’t need the idea of a graphical layer explaining to me. I don’t care about advanced operations like selecting things on layers, or creating feature interlocking on layers, that’s for people who use maps for analysis. I don’t care about advanced operations to generate centred points or include/exclude features from boundaries. I want to draw a polygon and know I’m doing that by approved method.
Refs
Half a clue,
https://docs.qgis.org/3.40/en/docs/pyqgis_developer_cookbook/geometry.html
OpenGIS explain the simple types with set theory notation…
GDAL glancing documentation,
https://gdal.org/en/stable/development/rfc/rfc49_curve_geometries.html