Geography Markup Language

Geography Markup Language (GML) er en internasjonal standard for geodata. GML er et markeringsspråk som kan brukes for å modellere geodata, og angir hvordan geodata kan lagres og utveksles.

GML er utviklet (og publisert) av Open Geospatial Consortium (OGC). I tillegg har OGC samarbeidet med ISO/TC 211 om å utgi standardene ISO 19136:2007 (GML 3.2) og ISO 19136-2:2015 (GML 3.3).

Innledning
GML er et XML-markeringsspråk for geodata basert på XML Schema. Dette innebærer at GML er todelt: et GML-dokument inneholder geodata, mens et tilhørende skjema beskriver geodataene i GML-dokumentet.

I praktisk bruk har GML mange av de samme egenskapene som XML. Et GML-dokument er utvidbart (extensible), men hvis det har selvforklarenede navn på elementer og attributter, er dokumentet mulig å forstå (uten tilhørende skjema). Det er likevel grunner til å kreve skjema for GML-dokumenter:
 Geodata er ofte autoritative data som bør valideres og ha god kvalitet.
 Geodata er som regel samlet i (komplekse) systemer som krever dokumentasjon. Et eksempel på dette kan være geodatatjenester.

De viktigste delene av skjemaer for GML
Spesifisering av skjemaer for GML innebærer modellering av geodata. Slik modellering gjøres ofte i Unified Modeling Language (UML), kanskje fordi ISO 19100-serien bruker UML. I GML-standardene er modellering i UML og modellering i XML Schema likestilt, og standardene inkluderer mappinger mellom UML og XML Schema.

Det skilles mellom tre grupper av skjemaer for GML: GML-skjema, GML-profil og GML-applikasjonsskjema.

GML-skjema
GML-skjema (GML schema) i standarden for GML 3.2.1 betegnelsen på XML Schema-komponentene som er definert i standarden. GML 3.3 er en utvidelse av GML 3.2.1, og selv om betegnelsen GML-skjema ikke er brukt på samme måte der, definerer GML 3.3 også XML Schema-komponenter.

GML-skjema for ulike versjoner av GML kan finnes på GML-skjemasidene til OGC. Et eksempel er (fra geometryBasic0d1d.xsd i versjon 3.2.1):

<complexType name="PointType">
  <complexContent>
    <extension base="gml:AbstractGeometricPrimitiveType">
      <sequence>
        <choice>
	  <element ref="gml:pos"/>
	  <element ref="gml:coordinates"/>
	</choice>
      </sequence>
    </extension>
  </complexContent>
</complexType>
<element name="Point" type="gml:PointType" substitutionGroup="gml:AbstractGeometricPrimitive">
  <annotation>
    <documentation>
      A Point is defined by a single coordinate tuple. The direct position of a point is specified by the pos element which is of type DirectPositionType.
    </documentation>
  </annotation>
</element><?xml version="1.0" encoding="UTF-8"?>

Her er Point av typen PointType, som er en subtype av AbstractGeometricPrimitiveType.

GML-profil
En GML-profil er et subsett av GML-skjema. Standardene for GML er omfattende og komplekse, og en GML-profil gir mulighet for å begrense omfanget. En GML-profil kan spesifiseres i starten av et GML-applikasjonsskjema.

GML-applikasjonsskjema
XML er utvidbart (extensible), og for GML skjer utvidelsene i hovedsak i GML-applikasjonsskjema. Mens en GML-profil innskrenker GML-skjema, kan man i GML-applikasjonsskjema spesifisere nye komponenter. Eksempler kan være bygning og tomtegrense.

GML-dokumenter i Norge
Geodata fra norske etater har tradisjonelt vært lagret i SOSI-formatet, og forskrift om behandling av offentlige arkiver krever dette.

Det er likevel ventet at GML vil erstatte SOSI-formatet i framtiden.

Referanser

Eksterne lenker 
 OGCs sider om GML-standardene
 OGCs offisielle GML-skjemasider
 ISO/TC 211

Geomatikk
19136
XML
Geoinformatikk