Skip to content
Novus Examples
gml1.6 KB

GML 3.2 — MultiSurface With an Interior Ring

GML calls a multipolygon a MultiSurface and its parts surfaceMembers, and nests exterior and interior rings under named elements rather than relying on ring order. This feature holds the holed lake and a solid parcel in one geometry, which is the shape a WFS response usually takes.

Preview — first 30 linesgml
<?xml version="1.0" encoding="UTF-8"?>
<kb:FeatureCollection xmlns:kb="https://examples.novusstreamsolutions.com/ns/kestrel-bay" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id="fc-multisurface">
  <gml:boundedBy>
    <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
      <gml:lowerCorner>47.01 -12.56</gml:lowerCorner>
      <gml:upperCorner>47.069 -12.452</gml:upperCorner>
    </gml:Envelope>
  </gml:boundedBy>
  <kb:featureMember>
    <kb:WaterAndLand gml:id="ms-1">
      <kb:name>Wither Lake and Harbour Yard</kb:name>
      <kb:extent>
        <gml:MultiSurface gml:id="ms-geom" srsName="urn:ogc:def:crs:EPSG::4326">
          <gml:surfaceMember>
            <gml:Polygon gml:id="ms-lake">
              <gml:exterior><gml:LinearRing><gml:posList srsDimension="2">47.04 -12.52 47.04 -12.495 47.053 -12.488 47.061 -12.506 47.052 -12.529 47.04 -12.52</gml:posList></gml:LinearRing></gml:exterior>
              <gml:interior><gml:LinearRing><gml:posList srsDimension="2">47.048 -12.51 47.0525 -12.511 47.053 -12.504 47.047 -12.503 47.048 -12.51</gml:posList></gml:LinearRing></gml:interior>
            </gml:Polygon>
          </gml:surfaceMember>
          <gml:surfaceMember>
            <gml:Polygon gml:id="ms-parcel">
              <gml:exterior><gml:LinearRing><gml:posList srsDimension="2">47.06 -12.49 47.06 -12.474 47.069 -12.474 47.069 -12.49 47.06 -12.49</gml:posList></gml:LinearRing></gml:exterior>
            </gml:Polygon>
          </gml:surfaceMember>
        </gml:MultiSurface>
      </kb:extent>
    </kb:WaterAndLand>
  </kb:featureMember>
</kb:FeatureCollection>

Specifications

Format
GML 3.2
Features
1
Surface Members
2
Interior Rings
1
Srs Name
urn:ogc:def:crs:EPSG::4326
Coordinate Order
latitude longitude (URN axis order)
Geometry Element
gml:MultiSurface / gml:surfaceMember
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Convert the feature to a GeoJSON MultiPolygon.
Expected result
A MultiPolygon with two members is produced; the first keeps its interior ring and the rings arrive in exterior-then-interior order regardless of their winding in the source.

What is a .gml file?

GML (Geography Markup Language) is the OGC's XML grammar for geographic features. Features carry typed properties and geometry elements such as gml:Point, gml:LineString, gml:Polygon, and their aggregates, with coordinates in gml:posList or gml:coordinates and the coordinate reference system named by an srsName attribute. It is the payload format of WFS services and the base of several national and INSPIRE data standards.

How to use this file

Use an example .gml file to test GML parsers and XML-based GIS pipelines, checking namespace handling, srsName resolution including the axis-order rules that differ between GML versions, and conversion to GeoJSON or shapefile.

How to use this file for testing

“GML 3.2 — MultiSurface With an Interior Ring” is a deterministic Novus Examples fixture for Geospatial, Conversion testing, JSON parsing. GeoJSON, GPX, and KML files with points, lines, polygons, and tracks — for testing map tools, route parsers, and geo importers.

Documented properties for this file: UTF-8 · LF · GML 3.2. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Geospatial fixtures publish one invented territory across formats, with the coordinate reference system and feature counts documented in specs. Convert or reproject and diff against the twin in the same group; edge-case geometries state exactly which assumption they are built to break.

Generated by generation/geospatial.py. Free for any use, no attribution required — license.