<?xml version="1.0" encoding="utf-8"?>
<schema version="1.1" elementFormDefault="qualified"
        targetNamespace="http://namespace.lantmateriet.se/distribution/geometri/v1"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:lmg="http://namespace.lantmateriet.se/distribution/geometri/v1"
        xmlns:gml="http://www.opengis.net/gml/3.2">

  <import schemaLocation="http://namespace.lantmateriet.se/distribution/produkter/gml/gml-3.2.1/v1/geoaccess-gmlprofil-1.2.xsd" namespace="http://www.opengis.net/gml/3.2"/>

  <element name="Geometri" type="lmg:GeometriType" abstract="true"/>
  <complexType name="GeometriType" abstract="true">
    <sequence>
      <element name="koordinatsystemPlan" type="lmg:KoordinatsystemPlanType"/>
      <element name="hojdsystem" type="lmg:HojdsystemType" minOccurs="0"/>
      <element name="dimension" type="lmg:DimensionType"/>
    </sequence>
  </complexType>

  <element name="Punkt" type="lmg:PunktType" substitutionGroup="lmg:Geometri"/>
  <complexType name="PunktType">
    <complexContent>
      <extension base="lmg:GeometriType">
        <sequence>
          <element ref="gml:Point"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="PunktPropertyType">
    <sequence>
      <element ref="lmg:Punkt"/>
    </sequence>
  </complexType>
  
  <element name="Linje" type="lmg:LinjeType" substitutionGroup="lmg:Geometri"/>
  <complexType name="LinjeType">
    <complexContent>
      <extension base="lmg:GeometriType">
        <sequence>
          <element ref="gml:LineString"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="LinjePropertyType">
    <sequence>
      <element ref="lmg:Linje"/>
    </sequence>
  </complexType>

  <element name="Yta" type="lmg:YtaType" substitutionGroup="lmg:Geometri"/>
  <complexType name="YtaType">
    <complexContent>
      <extension base="lmg:GeometriType">
        <sequence>
          <element ref="gml:Polygon"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="YtaPropertyType">
    <sequence>
      <element ref="lmg:Yta"/>
    </sequence>
  </complexType>

  <element name="Kropp" type="lmg:KroppType" substitutionGroup="lmg:Geometri"/>
  <complexType name="KroppType">
    <complexContent>
      <extension base="lmg:GeometriType">
        <sequence>
            <element ref="gml:Solid"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <complexType name="KroppPropertyType">
    <sequence>
      <element ref="lmg:Kropp"/>
    </sequence>
  </complexType>
  
  <simpleType name="KoordinatsystemPlanType">
    <restriction base="string">
      <enumeration value="EPSG:3006"/>
    </restriction>
  </simpleType>

  <simpleType name="HojdsystemType">
    <restriction base="string">
      <enumeration value="RH 2000"/>
    </restriction>
  </simpleType>

  <simpleType name="DimensionType">
    <restriction base="int">
      <enumeration value="2"/>
      <enumeration value="3"/>
    </restriction>
  </simpleType>
</schema>
