Skip to content

Instantly share code, notes, and snippets.

@hugoledoux
Created January 23, 2019 08:32
Show Gist options
  • Save hugoledoux/bf5211b71550f6a6558f54a90d1a0387 to your computer and use it in GitHub Desktop.
Save hugoledoux/bf5211b71550f6a6558f54a90d1a0387 to your computer and use it in GitHub Desktop.
MultiPolygon can have its Polygons overlapping or edge-adjacent?

MultiPolygon as defined by SFS

from OGC-SFS section 6.1.13.1:

The geometric interiors of any two Surfaces in a MultiSurface may not intersect in the full coordinate system. The boundaries of any two coplanar elements in a MultiSurface may intersect, at most, at a finite number of Points. If they were to meet along a curve, they could be merged into a single surface. MultiSurface is an instantiable class in this Standard, and may be used to represent heterogeneous surfaces collections of polygons and polyhedral surfaces. It defines a set of methods for its subclasses. The subclass of MultiSurface is MultiPolygon corresponding to a collection of Polygons only. Other collections shall use MultiSurface.

OGC-SFS doesn't have a composite type direclty, as ISO and GML have. Although the PolyhedralSurface can be seen as one such case.

ISO19107

Geomatic aggregates are defined, from 6.5.1:

Arbitrary aggregations of geometric objects are possible. These are not assumed to have any additional internal structure and are used to “collect” pieces of geometry of a specified type.

GM_MultiSurface is defined as (6.5.6.1):

GM_MultiSurface is an aggregate class containing only instances of GM_OrientableSurface. The association role “element” shall be the set of GM_OrientableSurfaces contained in this GM_MultiSurface.

Geometry complexes (CompositeXX) are defined in 6.6:

A geometric complex (GM_Complex) is a set of primitive geometric objects (in a common coordinate system) whose interiors are disjoint. Further, if a primitive is in a geometric complex, then there exists a set of primitives in that complex whose point-wise union is the boundary of this first primitive.

and in 6.6.1:

The underlying geometry of a complex is usually referred to as a “manifold”.

GML

from 11.1:

Geometric aggregates (i.e. instances of a subtype of gml:AbstractGeometricAggregateType) are arbitrary aggregations of geometry elements. They are not assumed to have any additional internal structure and are used to "collect" pieces of geometry of a specified type.

Application schemas may use aggregates for features that use multiple geometric objects in their representations. Geometric complexes (i.e. instances of gml:GeometricComplexType) are closed collections of geometric primitives, i.e. they will contain their boundaries. A geometric complex (gml:GeometricComplex) is defined by ISO 19107:2003, 6.6.1 as ―a set of primitive geometric objects (in a common coordinate system) whose interiors are disjoint. Further, if a primitive is in a geometric complex, then there exists a set of primitives in that complex whose point-wise union is the boundary of this first primitive. A geometric composite (gml:CompositeCurve, gml:CompositeSurface and gml:CompositeSolid) represents a geometric complex with an underlying core geometry that is isomorphic to a primitive, i.e. it can be viewed as a primitive and as a complex. See ISO 19107:2003, 6.1 and 6.6.3 for more details on the nature of composite geometries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment