Skip to content

Story: Determine Whether a Geometry Type Is Instantiable #6

Closed

Description

@Alexandre-T

As a developer using spatial-core,
I want to know whether a geometry type is instantiable,
so that I can distinguish abstract types from types that can be constructed.

Context

GeometryTypeEnum describes geometry types but does not indicate which ones are instantiable. The SURFACE type must also be representable by the enum, which does not currently contain this case.

The standards are not fully consistent regarding MULTICURVE: OGC SFA declares it non-instantiable, while the available ISO source uses divergent wording. This classification must be decided before the Story is Ready.

Acceptance Criteria

  • GeometryTypeEnum exposes a public method that returns a boolean indicating whether the type is instantiable.
  • The enum represents SURFACE, and this value is non-instantiable.
  • POINT is declared instantiable.
  • The method returns the approved classification for every enum case, including MULTICURVE, and tests cover all of these cases.
  • MULTISURFACE is declared instantiable according to the selected normative classification.
  • The public documentation describes the method and its classification.

Constraints

  • The classification takes OGC Simple Feature Access 1.2.1 (OGC 06-103r4) into account, in particular §§6.1.2, 6.1.8, 6.1.10, and 6.1.13.
  • The ISO comparison refers to ISO/IEC CD 13249-3:201x(E), the available Committee Draft source, in particular §§4.2, 4.2.8, 4.2.16, and 4.2.18. This source must not be presented as a published ISO edition.

Definition of Done

  • composer test-local passes.
  • composer quality passes.
  • Tests verify the classification of every enum case according to the approved normative decision.
  • The public documentation is updated.

Normative Gate — MULTICURVE instantiability

Decide which normative classification the geometry model shall follow for MULTICURVE.

  • OGC SFA 1.2.1 §6.1.8 — MultiCurve explicitly defines MultiCurve as non-instantiable.
  • ISO/IEC 13249-3 §4.2 — Spatial types presents ST_MultiCurve as instantiable in the general classification.
  • ISO/IEC 13249-3 §4.2.16 — ST_MultiCurve states that ST_MultiCurve “may be instantiable”, introducing an ambiguity within the ISO source itself.

The classification must be explicitly approved before the Story can be considered Ready.

Activity

  1. self-assigned this
    on Sep 28, 2026
  2. added
    standard:isoRelated to ISO spatial standards
    standard:ogcRelated to OGC specifications
    spatial:wktRelated to Well-Known Text or Extended Well-Known Text
    on Sep 28, 2026
  3. Alexandre-T commented on Sep 28, 2026

    @Alexandre-T
    ContributorAuthor

    Normative Decision — MULTICURVE instantiability

    MULTICURVE is classified as instantiable in the LongitudeOne geometry model.

    This decision follows the permissive ISO/IEC 13249-3 model rather than the non-instantiable classification defined by OGC SFA 1.2.1 §6.1.8 — MultiCurve.

    The supplied ISO/IEC 13249-3 source contains conflicting wording: §4.2 — Spatial types presents ST_MultiCurve as instantiable, while §4.2.16 — ST_MultiCurve states that ST_MultiCurve "may be instantiable". This wording permits an implementation to expose concrete MULTICURVE values.

    The decision is reinforced by PostGIS, which implements the SQL/MM Part 3 curve model and exposes MULTICURVE as a concrete geometry capable of containing LineString, CircularString, and CompoundCurve elements. Its documentation provides concrete MULTICURVE values, demonstrating that the instantiable interpretation of the SQL/MM model is used by a major spatial database implementation.

    Classifying MULTICURVE as instantiable therefore preserves compatibility with the ISO/IEC 13249-3 interpretation adopted by PostGIS while documenting the intentional divergence from the OGC SFA 1.2.1 geometry model.

  4. linked a pull request that will close this issueImplement instantiability classification #8on Sep 28, 2026
  5. added this to the Version 1.x.0 milestone on Oct 3, 2026
  6. changed the title [-]Determine Whether a Geometry Type Is Instantiable[/-] [+]Story: Determine Whether a Geometry Type Is Instantiable[/+] on Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

spatial:wktRelated to Well-Known Text or Extended Well-Known Textstandard:isoRelated to ISO spatial standardsstandard:ogcRelated to OGC specifications

Type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions