---
title: ISO 19136 — Geography Markup Language
description: Explains GML 3.2.1 geometry, coordinates and CRS references, and distinguishes them from LongitudeOne's available spatial primitives.
canonical_html: ./iso-19136.html
canonical_markdown: ./iso-19136.md
---

[View HTML version](./iso-19136.html)

GML describes geographic features and their spatial and non-spatial properties
in XML. Its geometry schemas provide an interchange representation; a PHP
geometry classification is not itself a GML document or an XML schema.

## Normative source

This reference examines **ISO 19136:2007**, *Geographic information — Geography
Markup Language (GML)*, first edition, **September 2007**
([ISO catalogue][iso]). The accessible technical source is **OGC 07-036**,
*OpenGIS Geography Markup Language (GML) Encoding Standard*, **3.2.1**, dated
**2007-08-27** ([official PDF][gml]).
OGC identifies GML 3.2 as ISO 19136:2007 in its [conformance test suite][suite].
All technical clause references below refer to the inspected OGC 07-036 text.

The [OGC GML catalogue][catalogue] lists the corrected GML **3.2.2** document,
**07-036r1**, separately. This page summarizes the base 3.2.1 text, without
asserting corrected-edition requirements or conformance to them. ISO identifies
**ISO 19136-1:2020** as the successor to the withdrawn 2007 edition; requirements
of that successor are outside this reference's scope.

The edition examined here provides a verified geometry reference. It does not
establish that LongitudeOne implements or claims conformance to ISO 19136.

## Purpose and scope

GML covers XML application schemas, geographic features, geometries, reference
systems, topology, time and other geographic information (OGC 07-036, clause 1).
The geometry subjects relevant to LongitudeOne's spatial primitives are:

- geometry families and aggregates (clauses 10–11);
- coordinate tuples and lists (10.1.4);
- reference-system identification and coordinate dimensions (10.1.3.2).

GML is broader than a geometry-only format. Its XML identities, property
elements and application schemas are separate from geometry family names.

## Relevant requirements

### Geometry objects and families

**Normative summary:** geometry types derive from `AbstractGeometryType`, and
geometry elements belong to the `AbstractGeometry` substitution group directly
or indirectly. Geometry elements have a `gml:id` identifier (10.1.3.1).

Point, curve, surface and solid schemas are described in 10.3–10.6. Aggregates
include `MultiGeometry`, `MultiPoint`, `MultiCurve` and `MultiSurface` (11.3).
These XML structures must not be inferred solely from a PHP enum case.

### Coordinates and reference systems

**Normative summaries:**

- `srsName` references a CRS. When absent, the containing context supplies the
  CRS. `srsDimension` counts coordinate values per position, derives from the
  CRS and is omitted when `srsName` is omitted (10.1.3.2).
- `pos` represents a direct position, with CRS information that can come from
  the containing geometry (10.1.4.1).
- `posList` represents positions in one CRS. Its number of values equals the
  position count multiplied by the CRS dimension. Supplying `count` also
  requires `srsDimension` (10.1.4.2).
- `Point` contains a single coordinate tuple. The older `coordinates` element
  is deprecated in favour of `pos` (10.3.1).

**Informative explanation:** an integer SRID is not the same representation as
the URI-valued `srsName`. Likewise, an XYM layout has three stored ordinates but
does not by itself establish a three-axis CRS. A GML mapping needs an explicit
interpretation of coordinates and their reference system.

### Conformance

**Normative summary:** GML application schemas use the schema components from
clauses 7–19 according to clause 21; profiles follow clause 20. Clause 2 defines
conformance classes rather than requiring every application to implement all GML
capabilities (2.1). Geometry names alone do not establish conformance.

## LongitudeOne support

The assessed implementation is **Spatial Core 1.3.0**, revision
`1289582288e8954243de5ccb1f28ab7e78f4e9a4`. It provides PHP enums and technical
primitives, including geometry families and XY/XYZ/XYM/XYZM coordinate layouts.
The support record describes that released package; it does not assign a GML
support status to other libraries or DBMS integrations.

| Feature                                       | Implementation scope | Status      | Limitations               | Implementation decision | Extensions      | Evidence                      |
| --------------------------------------------- | -------------------- | ----------- | ------------------------- | ----------------------- | --------------- | ----------------------------- |
| [Geometry classification][geometry-use]       | Core 1.3.0           | Supported   | PHP classification only   | Geometry enum           | None documented | [Enum][families]              |
| [Coordinate layouts][coordinate-use]          | Core 1.3.0           | Supported   | No GML/CRS mapping        | Distinct Z and M        | None documented | [Coordinate enum][dimensions] |
| [GML geometry XML][geometry-use]              | Core 1.3.0           | Unsupported | No XML representation API | Technical primitives    | None documented | [Public API][core]            |
| [GML schemas and validation][conformance-use] | Core 1.3.0           | Unsupported | No schema validation API  | Technical primitives    | None documented | [Public API][core]            |

**LongitudeOne implementation decision:** enum membership describes a model
classification. It does not supply concrete geometry objects, GML elements,
`gml:id`, CRS URIs or XML schema validation. The supported primitive rows above
are implementation capabilities, not claims of GML conformance.

**Extensions:** none are documented for the assessed GML capabilities. SQL/MM
layout modifiers and names in a PHP enum are not identified here as GML
extensions. No blanket ISO 19136 conformance is claimed.

## Related references

- [ISO reference overview](index.md)
- [SQL/MM Spatial](iso-iec-13249-3.md)
- [Spatial Core 1.x primitives](../../spatial-core/v1/geometry/index.md)
- [Reference authoring contract](../../shared/spatial-reference-documentation-architecture.md)
- [Official GML 3.2.1 schemas][schemas]

[iso]: https://www.iso.org/standard/32554.html

[gml]: https://docs.ogc.org/is/07-036/07-036.pdf

[catalogue]: https://www.ogc.org/standards/gml/

[suite]: https://cite.ogc.org/teamengine/about/gml32/3.2/site/

[schemas]: https://schemas.opengis.net/gml/3.2.1/

[core]: https://github.com/longitude-one/spatial-core/blob/1289582288e8954243de5ccb1f28ab7e78f4e9a4/README.md

[families]: https://github.com/longitude-one/spatial-core/blob/1289582288e8954243de5ccb1f28ab7e78f4e9a4/lib/Enum/GeometryTypeEnum.php

[dimensions]: https://github.com/longitude-one/spatial-core/blob/1289582288e8954243de5ccb1f28ab7e78f4e9a4/lib/Enum/CoordinateDimensionEnum.php

[geometry-use]: #geometry-objects-and-families

[coordinate-use]: #coordinates-and-reference-systems

[conformance-use]: #conformance
