Open Geospatial Consortium

Submission Date: 2017-03-24

Approval Date:   2017-06-02

Publication Date:   2017-08-16

External identifier of this OGC® document: http://www.opengis.net/doc/standard/infragml/part1/1.0

Internal reference number of this OGC® document:    16-101r2

Version: 1.0

Additional Formats (informative):

Category: OGC® Encoding Standard

Editor:   Paul Scarponcini

OGC InfraGML 1.0: Part 1 – LandInfra Land Features - Encoding Standard

Copyright notice

Copyright © 2017 Open Geospatial Consortium

To obtain additional rights of use, visit http://www.opengeospatial.org/legal/

Warning

This document is an OGC Member approved international standard. This document is available on a royalty free, non-discriminatory basis. Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.

Document type:    OGC® Standard

Document subtype:   Encoding 

Document stage:    Approved for public release

Document language:  English

License Agreement

Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.

If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.

THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD.

THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.

This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.

Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.

i. Abstract

This OGC InfraGML Encoding Standard presents the implementation-dependent, GML encoding of concepts supporting land and civil engineering infrastructure facilities specified in the OGC Land and Infrastructure Conceptual Model Standard (LandInfra), OGC 15-111r1. Conceptual model subject areas include land features, facilities, projects, alignment, road, railway, survey (including equipment, observations, and survey results), land division, and condominiums.

InfraGML is published as a multi-part standard. This Part 1 addresses the LandFeature Requirements Class from LandInfra.

ii. Keywords

The following are keywords to be used by search engines and document catalogues.

ogcdoc, OGC document, OGC document, LandInfra, InfraGML, infrastructure, civil, land feature, terrain, TIN

iii. Preface

In order to achieve consensus on the concepts supporting land and civil engineering infrastructure facilities, a UML Conceptual Model, LandInfra, was approved as an OGC standard in August, 2016. This model provides a unifying basis for encodings including but not limited to InfraGML, including similar work in buildingSMART International. It can also provide a framework for discussing how other software standards relate to LandInfra.

As an OGC standard, LandInfra follows the OGC modular specification standard, OGC 08-131r3. Because of the breadth of LandInfra, its subject areas are divided into separate Requirements Classes. This InfraGML encoding similarly is divided into Requirements Classes which are then grouped into Parts. A Part may address multiple LandInfra Requirements Classes but each Requirements Class is addressed in a single part. Because Requirements Classes may depend on other Requirements Classes (see LandInfra Figure 1, “Requirements Classes as UML Packages with their dependencies”), the reader of this InfraGML Part may need to conform to Requirements Classes in other Parts as well.

Note that this InfraGML encoding standard is a target of LandInfra and therefore this standard conforms to the Requirements Classes in LandInfra. On the other hand, an application claiming conformance to this InfraGML encoding standard must conform to the Requirements Classes contained in this InfraGML standard.

There are several reasons for separating InfraGML into Parts. Because they are likely to have separate authors, the rate at which each Part is completed may vary. It would not be advisable to wait until all Parts complete before any can be released as separate OGC standards. Multiple Parts will also allow each subject to have its own standards life cycle. One Part can be updated independent of other Parts, subject to dependency constraints. And of course, it should be easier for the application software developer to only deal with Parts relevant to their application.

Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.

iv. Submitting organizations

The following organizations submitted this Document to the Open Geospatial Consortium (OGC):

Organization name(s)

Bentley Systems, Inc.

Leica Geosystems

Swedish Transport Administration

Trimble Inc.

Autodesk

v. Submitters

All questions regarding this submission should be directed to the editor or the submitters:

Name

Affiliation

Paul Scarponcini, SWG chair

Bentley Systems, Inc.

Hans-Christoph Gruler, SWG co-chair

Leica Geosystems

Peter Axelsson

Swedish Transport Administration

Lars Wikström

Swedish Transport Administration

Leif Granholm

Trimble Inc.

Johnny Jensen

Trimble Inc.

Thomas Liebich

buildingSMART International

Orest Halustchak

Autodesk

1. Scope

InfraGML is a GML encoding standard of the LandInfra Conceptual Model standard, OGC 15-111r1. InfraGML is provided as a set of individual though inter-dependent Parts, each of which is a GML standard.

The overall scope of this InfraGML Encoding Standard is infrastructure facilities and the land on which they are constructed. Also included is the surveying necessary for the setting out and as-built recording of these facilities and land interests. Primarily having a civil engineering point of view, InfraGML is relevant across all life cycle phases of a facility. Subject areas include land features, facilities, projects, alignment, road, railway, survey (including equipment, observations, and survey results), land division, and condominiums.

The scope of this Part 1 of InfraGML addresses the following subject area(s): land features. The InfraGML Land Feature Requirements Class is included. It is optional in that an application can conform to InfraGML without supporting it, for example by only supporting the Survey Requirements Classes in Part 6. However, to claim support for Land Feature, an application must also support the InfraGML Core Requirements Class.

2. Conformance

The InfraGML encoding standard defines requirements, grouped into Requirements Classes, for applications which read and write information about infrastructure facilities and the land on which they are constructed, including the surveying necessary for the setting out and as-built recording of these facilities and land interests.

The OGC modular specification (OGC 08-131r3) defines “standardization target” as the entity to which requirements of a standard apply. It further notes that the standardization target is the entity which may receive a certificate of conformance for a requirements class. The standardization target type for this standard is therefore:

  • software applications which read/write data instances, i.e. XML documents that encode land, infrastructure facility, and survey data for exchange

Conformance with this standard shall be checked using all the relevant tests specified in Annex A (normative) of this document. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site [1].

In order to conform to this OGC encoding standard, a standardization target shall choose to implement the core conformance class and any of the other conformance classes with their dependencies. Conformance classes are based on Requirements Classes which are specified in this and possibly other Parts of the InfraGML standard.

All requirements classes and conformance classes described in this document are owned by the standard(s) identified. Note that Conformance Classes for this Part of InfraGML may require conformance with Conformance Classes from other Parts of InfraGML.

3. References

The following normative documents contain provisions that, through reference in this text, constitute provisions of this Part of InfraGML. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.

OGC: OGC 07-036, OpenGIS® Geography Markup Language (GML) Encoding Standard, v3.2.1, 2007

OGC: OGC 10-129r1, OGC® Geography Markup Language (GML) — Extended schemas and encoding rules, v3.3, 2012

OGC: OGC 15-111r1, OGC Land and Infrastructure Conceptual Model Standard (LandInfra), v1.0, 2016.

OGC: OGC 16-100, OGC InfraGML 1.0: Part 0 – LandInfra Core – Encoding Standard, v1.0, 2017

4. Terms and Definitions

This document uses the terms defined in Sub-clause 5.3 of [OGC 06-121r8], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.

For the purposes of this document, the following additional terms and definitions apply.

The LandInfra standard contains a long list of terms and definitions relevant to the scope of InfraGML. As these will not be repeated here, the reader is directed to Clause 4 of LandInfra.

5. Conventions

This sections provides details and examples for any conventions used in the document. Examples of conventions are symbols, abbreviations, use of XML schema, or special notes regarding how to read the document.

5.1. Abbreviations

In this document the following abbreviations and acronyms are used or introduced:

  • GML Geography Markup Language

  • ISO International Organization for Standardization

  • OGC Open Geospatial Consortium

  • UML Unified Modeling Language

  • XML eXtensible Markup Language

5.2. UML Package and Class Diagrams

The LandInfra standard contains UML diagrams for the concepts supported by InfraGML. As these will not be repeated here, the reader is directed to Clause 7 of LandInfra. UML will only appear in InfraGML in the rare cases where LandInfra is extended or otherwise altered by InfraGML.

5.3. Requirements

When referred to in a Requirement or Requirements Class, the boxes contained in the LandInfra UML figures may all be called “Classes” even if they are data types, enumerations, code lists, unions etc. In most cases, these will be encoded as XML elements in InfraGML. When an InfraGML Requirement states that “A conforming application shall support the [Requirements Class] XML elements listed in Table <n> in accordance with the GML XSD in this standard.”, the XSD was developed to support the UML for the corresponding LandInfra Requirements Class as follows:

  1. all classes shown as blue boxes for the corresponding LandInfra Requirements Class UML diagrams;

  2. all attributes, attribute cardinalities, and attribute data types of these classes (usually shown in subsequent diagrams);

  3. all associations, navigation, roles, and role cardinalities connected to the blue classes;

  4. all classes shown as beige boxes (another Requirements Class) in the diagrams connected to the blue box classes by association or used as attribute data types; and

  5. all classes shown as pink boxes (another Standard) in the figure connected to the blue box classes by association or used as attribute data types.

Note that, in rare cases, the OGC 15-111r1 UML may be altered. In such cases, the alterations are declared in the first subclause of each Requirements Class, entitled “Implementation decisions regarding OGC 15-111r1 UML”. Logical Model UML diagrams may be included if the implementation constraints of GML (or XML) dictate that the Conceptual Model cannot be implemented directly as shown in OGC 15-111r1.

In most cases, the InfraGML XML derived from the LandInfra UML follows the rules in OGC 07-036, GML, Annex E, UML-to-GML application schema encoding rules.

The only normative version of the GML XSD (XML schema definition) for all Parts of the InfraGML Encoding Standard is available from the official OGC XML schema repository at http://schemas.opengis.net. Any occurrences of all or part of this XSD contained within this document are to be considered to be informative only.

The URI base for the LandInfra Conceptual Model standard is http://www.opengis.net/spec/landinfra/1.0. All URIs of Requirements Classes, Requirements, and Conformance Classes contained in that standard are relative to this base.

The URI base for this InfraGML encoding standard is http://www.opengis.net/spec/infragml/part1/1.0. All URIs of Requirements Classes, Requirements, and Conformance Classes contained in this standard are relative to this base.

6. InfraGML Parts

The InfraGML encoding standard has been divided into Parts. These Parts enable the grouping of LandInfra subject areas (Requirements Classes) into individual OGC encoding standards. All of these InfraGML encoding standards have a similar name: “OGC 16-10n, OGC® InfraGML 1.0: Part n - <part name> Encoding Standard”, where Part numbers and names are as follows:

n <part name>

0

LandInfra Core

1

LandInfra LandFeatures

2

LandInfra Facilities and Projects

3

LandInfra Alignments

4

LandInfra Roads

5

LandInfra Railways

6

LandInfra Survey

7

LandInfra Land Division

Some InfraGML Parts depend upon other parts:

image1
Figure 1. InfraGML Part Dependencies

The boxes above represent InfraGML Parts. Arrows show Part dependencies. The Part dependencies derive from the dependencies of the InfraGML Requirements Classes contained in these Parts. The reader should rely more on the InfraGML Requirements Class dependencies and only use the Part dependencies as a guide for knowing which InfraGML Part standards to consider.

InfraGML Parts include the following LandInfra 1.0 Requirements Classes (UML Packages):

image2
Figure 2. LandInfra Requirements Classes grouped into InfraGML Parts

The boxes above and their names represent LandInfra Requirements Classes. The numbers are InfraGML Part numbers. Dependency arrows shown above are dependencies between LandInfra Requirements Classes.

7. Requirements Classes for this Part

7.1. Structural Overview of Requirements Classes

The Requirements Classes for this Part of the InfraGML encoding standard (shown in blue in Figure 3 below) are defined in this Clause 7. Requirements Classes from other Parts upon which this Part’s Requirements Classes are dependent (shown in beige in Figure 3 below) are listed here but defined in the documentation of their respective Parts. External OGC and ISO standards on which Requirements Classes in this Standard depend (shown in pink in Figure 3 below) are also listed. Below is a brief summary of the function of each of these Requirements Classes.

image3
Figure 3. Requirements Classes for this Part and their Dependencies

7.1.1. Requirement Classes Defined in This Part

Land Feature

Features of the land, such as naturally occurring water features and vegetation are specified in the LandFeature Requirements Class as land features. Also included are models of the land surface and subsurface layers. Improvements to the land such as the construction of an embankment or the planting of landscape material are considered to be part of Site Facilities in the Facility Requirements Class.

7.1.2. Dependent Requirement Classes Defined in Other Parts

The Requirements Classes defined in this Part are dependent on the following Requirements Classes from other Parts.

Part 0. LandInfra Core

LandInfra is the core Requirements Class and is the only mandatory Requirements Class. This class contains information about the Land and Infrastructure dataset that can contain information about facilities, land features, land division, documents, survey marks, surveys, sets, and feature associations. LandInfra also contains the definition of types common across other Requirements Classes, such as the Status CodeList.

7.1.3. Other Standards upon which the Requirement Classes of this Part Depend

For external OGC and ISO standards on which Requirements Classes in this Standard depend, a brief summary of the function of each of these Standards is described below.

GML 3.2

OGC 07-036, OpenGIS® Geography Markup Language (GML) Encoding Standard, v3.2 provides most of the geometry types (e.g., Point, LineString, Polygon) used for spatial representations in this Standard. Defines Coordinate Reference Systems. Supports the General Feature Model upon which this Standard is based.

GML 3.3

OGC 10-129r1, OGC® Geography Markup Language (GML) — Extended schemas and encoding rules, v3.3 defines the linear referencing concepts (e.g., linear element, distance along, Linear Referencing Methods) used for linearly referenced locations in this Standard. Also included are TINs.

7.2. Requirements Class: LandFeature

Requirements Class

/req/land-feature

Target type

Conforming application

Name

Land Feature

Dependency

/req/core (from InfraGML Part 0)

Requirement 1

/req/land-feature/elements

Requirement 2

/req/land-feature/alignment

7.2.1. Implementation decisions regarding OGC 15-111r1 UML

The following implementation decisions have been made regarding the OGC 15-111r1 Land Features Requirements Class UML.

  1. For consistency with Road::CrossSection and Road::CrossSectionArea, LandFeature::LandCrossSection and LandFeature::CrossSectionArea composition associations have been implemented as aggregation associations.

  2. Because the Feature.FeatureID attribute was dropped from Core (see Part 0), LandSurface.landSurfaceID and LandLayer.landLayerID have been added.

7.2.2. Specific Requirements for this Requirements Class

Requirement 1

/req/land-feature/elements

A conforming application shall support the Land Feature XML elements listed in Table 1 in accordance with the GML XSD specified in http://schemas.opengis.net/infragml/part1/1.0/land-feature.xsd.

An application conforming to this standard shall support the Land Feature XML elements listed below in Table 1 in accordance with the GML XSD specified in http://schemas.opengis.net/infragml/part1/1.0/land-feature.xsd. Land Feature XML element names are shown with a XML namespace prefix of “lilf”. Corresponding LandInfra UML classes are shown with their LandInfra Requirements Class prefix of “LandFeature”.

Table 1. InfraGML Land Feature XML elements with corresponding LandInfra UML classes
InfraGML XML element LandInfra UML Class

lilf:CrossSectionArea

LandFeature::CrossSectionArea

lilf:LandCrossSection

LandFeature::LandCrossSection

lilf:LandElement

LandFeature::LandElement

lilf:LandFeature

LandFeature::LandFeature

lilf:LandLayer

LandFeature::LandLayer

lilf:LandSurface

LandFeature::LandSurface

lilf:LinearLayer

LandFeature::LinearLayer

lilf:SolidLayer

LandFeature::SolidLayer

lilf:SurfacesLayer

LandFeature::SurfacesLayer

Requirement 2

/req/land-feature/alignment

If a conforming application allows the linear element used for a LandLayer to be an Alignment, then that encoding shall support the Alignment Requirements Class.

8. Media Types for any data encoding(s)

Data for all Parts of the InfraGML encoding standard is encoded in GML-conformant XML documents. The standard MIME-type and sub-type for GML data should be used to indicate the encoding in internet exchange, as specified in MIME Media Types for GML, namely ‘application/gml+xml’.

Annex A: Conformance Class Abstract Test Suite (Normative)

A.1. Conformance Class: LandFeature

For all test cases in this conformance class, the following apply:

  • Conformance Class ID: /conf/land-feature

  • Requirements: /req/land-feature

  • Dependency: /conf/core (from InfraGML Part 0)

A.1.1. elements

Test Case ID

/conf/land-feature/elements

Requirement

/req/land-feature/elements

Test Purpose

Verify that the conforming application supports the Land Feature XML elements listed in Table 1 in accordance with the GML XSD specified in http://schemas.opengis.net/infragml/part1/1.0/land-feature.xsd.

Test Method

Inspect the GML output to verify the above requirement.

Test Type

Capability

A.1.2. alignment

Test Case ID

/conf/land-feature/alignment

Requirement

/req/land-feature/alignment

Test Purpose

If a conforming application allows the linear element used for a LandLayer to be an Alignment, then verify that the conforming application supports the Alignment Requirements Class.

Test Method

Inspect the GML output to verify the above requirement.

Test Type

Capability

Annex B: Sample XML (Informative)

The following XML instance documents attempt to demonstrate the use of most all of the elements supported by the specified Requirements Class(es), including all optional properties. All values are exemplary only and not intended to represent actual real world instance values. Not all xlink references are resolvable within this document.

B.1. Complete Land Features XML

Example from Part1LandFeature0410.xsd

<?xml version="1.0" encoding="UTF-8"?>
<LandInfraDataset xmlns="http://www.opengis.net/infragml/core/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:li="http://www.opengis.net/infragml/core/1.0"
gml:id="ds1"
xmlns:lilf="http://www.opengis.net/infragml/landfeature/1.0"
xmlns:gmllr="http://www.opengis.net/gml/3.3/lr"
xmlns:tin="http://www.opengis.net/gml/3.3/tin"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/infragml/landfeature/1.0 Part1LandFeature0410.xsd">
	<datasetID>
		<ID>
			<identifier>DS1</identifier>
			<scope>OGC LandInfraSWG</scope>
		</ID>
	</datasetID>
	<name>Sample Part1 Dataset</name>
	<description>LandInfra dataset to test all possible content for Part1
		LandFeatures</description>
	<dateTime>2016-11-02T10:00:00</dateTime>
	<datasetVersion>1.0</datasetVersion>
	<application>manual</application>
	<author>Paul Scarponcini, Bentley Systems, Inc.</author>
	<infraVersion>1.0</infraVersion>
	<language>English</language>
	<defaultCRS xlink:href="crs1"/>
	<feature>
		<lilf:LandFeature gml:id="lf1">
			<gml:description>a land feature that is not a LandElement LandSurface or
				LandLayer</gml:description>
			<gml:name>OtherLandFeature</gml:name>
			<property>
				<Property gml:id="prop1">
					<gml:name>color</gml:name>
					<valueType>string</valueType>
					<value>yellow</value>
				</Property>
			</property>
			<lilf:landFeatureID>
				<lilf:ID>
					<identifier>OLF1</identifier>
					<scope>OGC LandInfraSWG</scope>
				</lilf:ID>
			</lilf:landFeatureID>
			<lilf:state>existing</lilf:state>
		</lilf:LandFeature>
	</feature>
	<feature>
		<lilf:LandElement gml:id="le1">
			<gml:description>ice formation</gml:description>
			<gml:name>glacier</gml:name>
			<spatialRepresentation>
				<SpatialRepresentation>
					<geometry xlink:href="polygon1" xlink:title="Polygon"></geometry>
				</SpatialRepresentation>
			</spatialRepresentation>
			<lilf:state>existing</lilf:state>
			<lilf:elementID>
				<lilf:ID>
					<identifier>G1</identifier>
				</lilf:ID>
			</lilf:elementID>
			<lilf:elementType xlink:href="http://example.com/landElementType#waterBody"
				xlink:title="Water Body"/>
			<lilf:material>ice</lilf:material>
		</lilf:LandElement>
	</feature>
	<feature>
		<lilf:LandElement gml:id="le2">
			<spatialRepresentation>
				<SpatialRepresentation>
					<geometry xlink:href="linestring1"/>
				</SpatialRepresentation>
			</spatialRepresentation>
			<lilf:state>existing</lilf:state>
			<lilf:elementID>
				<lilf:ID>
					<identifier>Ob River</identifier>
				</lilf:ID>
			</lilf:elementID>
			<lilf:elementType xlink:href="http://example.com/landElementType#waterBody"
				xlink:title="Water Body"/>
		</lilf:LandElement>
	</feature>
	<feature>
		<lilf:LandSurface gml:id="ls1">
			<gml:description>from OGC 15-111r1 Annex E.3.1 Breakline example</gml:description>
			<gml:name>existing ground surface</gml:name>
			<lilf:state>existing</lilf:state>
			<lilf:landSurfaceID>
				<lilf:ID>
					<identifier>LandSurface1</identifier>
				</lilf:ID>
			</lilf:landSurfaceID>
			<lilf:spatialRepresentation>
				<tin:TIN gml:id="T1">
					<gml:patches>
						<tin:SimpleTrianglePatch>
							<gml:pos>0 50 5</gml:pos>
							<gml:pos>0 0 0</gml:pos>
							<gml:pos>50 0 0</gml:pos>
						</tin:SimpleTrianglePatch>
						<tin:SimpleTrianglePatch>
							<gml:pos>50 50 10</gml:pos>
							<gml:pos>0 50 5</gml:pos>
							<gml:pos>50 0 0</gml:pos>
						</tin:SimpleTrianglePatch>
					</gml:patches>
					<tin:tinElement>
						<tin:TINElement gml:id="te1">
							<tin:elementType>breakline</tin:elementType>
							<tin:elementGeometry>
								<gml:LineString gml:id="bl1">
									<gml:pos>0 50 5</gml:pos>
									<gml:pos>50 0 0</gml:pos>
								</gml:LineString>
							</tin:elementGeometry>
						</tin:TINElement>
					</tin:tinElement>
					<tin:maxLength uom="m">100</tin:maxLength>
				</tin:TIN>
			</lilf:spatialRepresentation>
			<lilf:material>topsoil</lilf:material>
		</lilf:LandSurface>
	</feature>
	<feature>
		<lilf:LandLayer gml:id="ll1">
			<gml:description>a land layer land feature that is not a SolidLayer SurfacesLayer or
				LinearLayer
			</gml:description>
			<gml:name>OtherLandLayer</gml:name>
			<lilf:state>existing</lilf:state>
			<lilf:landLayerID>
				<lilf:ID>
					<identifier>OLL1</identifier>
					<scope>OGC LandInfraSWG</scope>
				</lilf:ID>
			</lilf:landLayerID>
		</lilf:LandLayer>
	</feature>
	<feature>
		<lilf:SolidLayer gml:id="solidlayer1">
			<gml:description>represented as a SolidLayer</gml:description>
			<gml:name>top soil layer</gml:name>
			<lilf:state>existing</lilf:state>
			<lilf:landLayerID>
				<lilf:ID>
					<identifier>Soil1</identifier>
				</lilf:ID>
			</lilf:landLayerID>
			<lilf:spatialRepresentation xlink:href="mesh1"/>
			<lilf:material>topsoil</lilf:material>
		</lilf:SolidLayer>
	</feature>
	<feature>
		<lilf:SurfacesLayer gml:id="surfaceslayer1">
			<gml:description>represented as a SurfacesLayer</gml:description>
			<gml:name>top soil layer</gml:name>
			<lilf:state>existing</lilf:state>
			<lilf:landLayerID>
				<lilf:ID>
					<identifier>Soil1</identifier>
				</lilf:ID>
			</lilf:landLayerID>
			<lilf:topSurface xlink:href="ls1" xlink:title="LandSurface1"/>
			<lilf:bottomSurface xlink:href="ls2" xlink:title="LandSurface2"/>
			<lilf:extent gml:id="poly4"></lilf:extent>
			<lilf:material>topsoil</lilf:material>
		</lilf:SurfacesLayer>
	</feature>
	<feature>
		<lilf:LinearLayer gml:id="linearLayer1">
			<gml:description>represented as a LinearLayer. from OGC 15-111r1
				Annex E</gml:description>
			<gml:name>top soil layer</gml:name>
			<lilf:state>existing</lilf:state>
			<lilf:landLayerID>
				<lilf:ID>
					<identifier>Soil1</identifier>
				</lilf:ID>
			</lilf:landLayerID>
			<lilf:landCrossSection>
				<lilf:LandCrossSection gml:id="lcs1">
					<lilf:locatedAlong>
						<gmllr:LinearElement gml:id="linearElement1">
							<gmllr:curve>
								<gml:LineString gml:id="centerline1">
									<gml:pos>0 25 2.5</gml:pos>
									<gml:pos>50 25 5</gml:pos>
								</gml:LineString>
							</gmllr:curve>
							<gmllr:defaultLRM xlink:href="lrm6"></gmllr:defaultLRM>
							<gmllr:measure uom="m">50</gmllr:measure>
						</gmllr:LinearElement>
					</lilf:locatedAlong>
					<lilf:distanceAlong>
						<gmllr:DistanceExpression gml:id="da1">
							<gmllr:distanceAlong>0</gmllr:distanceAlong>
						</gmllr:DistanceExpression>
					</lilf:distanceAlong>
					<lilf:horizontalDisplacement uom="m">0</lilf:horizontalDisplacement>
					<lilf:verticalDisplacement uom="m">0</lilf:verticalDisplacement>
					<lilf:crossSectionArea>
						<lilf:CrossSectionArea gml:id="csa1">
							<lilf:material>topsoil</lilf:material>
							<lilf:area uom="m2">50</lilf:area>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>left top</lilf:name>
									<lilf:horizontalOffset uom="m">-25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">5</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>right top</lilf:name>
									<lilf:horizontalOffset uom="m">25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">0</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>right bottom</lilf:name>
									<lilf:horizontalOffset uom="m">25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">-1</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>left bottom</lilf:name>
									<lilf:horizontalOffset uom="m">-25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">4</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
						</lilf:CrossSectionArea>
					</lilf:crossSectionArea>
				</lilf:LandCrossSection>
			</lilf:landCrossSection>
			<lilf:landCrossSection>
				<lilf:LandCrossSection gml:id="lcs2">
					<lilf:locatedAlong xlink:href="linearElement1"></lilf:locatedAlong>
					<lilf:distanceAlong>
						<gmllr:DistanceExpression gml:id="da2">
							<gmllr:distanceAlong>50</gmllr:distanceAlong>
						</gmllr:DistanceExpression>
					</lilf:distanceAlong>
					<lilf:horizontalDisplacement uom="m">0</lilf:horizontalDisplacement>
					<lilf:verticalDisplacement uom="m">0</lilf:verticalDisplacement>
					<lilf:crossSectionArea>
						<lilf:CrossSectionArea gml:id="csa2">
							<lilf:material>topsoil</lilf:material>
							<lilf:area uom="m2">50</lilf:area>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>left top</lilf:name>
									<lilf:horizontalOffset uom="m">-25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">10</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>right top</lilf:name>
									<lilf:horizontalOffset uom="m">25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">0</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>right bottom</lilf:name>
									<lilf:horizontalOffset uom="m">25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">-1</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
							<lilf:crossSectionPoint>
								<lilf:CrossSectionPoint>
									<lilf:name>left bottom</lilf:name>
									<lilf:horizontalOffset uom="m">-25</lilf:horizontalOffset>
									<lilf:verticalOffset uom="m">9</lilf:verticalOffset>
								</lilf:CrossSectionPoint>
							</lilf:crossSectionPoint>
						</lilf:CrossSectionArea>
					</lilf:crossSectionArea>
				</lilf:LandCrossSection>
			</lilf:landCrossSection>
		</lilf:LinearLayer>
	</feature>
</LandInfraDataset>

B.2. TIN XML

TIN example from Part1LandFeature0410.xsd. Encodes OGC 15-111r1 Annex E example TINs.

<?xml version="1.0" encoding="UTF-8"?>
<li:LandInfraDataset gml:id="dataset1"
xmlns="http://www.opengis.net/infragml/core/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:li="http://www.opengis.net/infragml/core/1.0"
xmlns:lilf="http://www.opengis.net/infragml/landfeature/1.0"
xmlns:tin="http://www.opengis.net/gml/3.3/tin"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/infragml/landfeature/1.0 Part1LandFeature0410.xsd">
	<li:datasetID>
		<ID>
			<identifier>dataset1</identifier>
			<scope>OGC LandInfraSWG</scope>
		</ID>
	</li:datasetID>
	<li:name>Sample Part1 with TIN Dataset</li:name>
	<li:description>LandInfra dataset to test for Part1 LandFeatures TIN</li:description>
	<li:dateTime>2017-03-03T10:00:00</li:dateTime>
	<li:datasetVersion>1.0</li:datasetVersion>
	<li:application>manual</li:application>
	<li:author>Johnny Jensen, Trimble Inc.</li:author>
	<li:infraVersion>1.0</li:infraVersion>
	<language>English</language>
	<defaultCRS xlink:href="urn:ogc:def:crs:EPSG:5972"/>
	<!--                                                                                                                         	-->
	<!--     E.1 (Group Spot) Input Points, E.2 Initial Triangles                                              -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_10">
				<gml:description>from OGC 15-111r1 Annex E.1 (Group Spot) Input Points, E.2 Initial
					Triangles
					example
				</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface1</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_11">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>50 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_12">
								<tin:elementType>groupSpot</tin:elementType>
								<tin:elementGeometry>
									<gml:MultiPoint gml:id="uid_13">
										<gml:pointMembers>
											<gml:Point gml:id="uid_14">
												<gml:pos>0 0 0</gml:pos>
											</gml:Point>
											<gml:Point gml:id="uid_15">
												<gml:pos>0 50 5</gml:pos>
											</gml:Point>
											<gml:Point gml:id="uid_16">
												<gml:pos>50 50 0</gml:pos>
											</gml:Point>
											<gml:Point gml:id="uid_17">
												<gml:pos>50 50 10</gml:pos>
											</gml:Point>
										</gml:pointMembers>
									</gml:MultiPoint>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.1 Breakline                                                                                            -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_20">
				<gml:description>from OGC 15-111r1 Annex E.3.1 Breakline example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface2</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_21">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>50 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_22">
								<tin:elementType>breakline</tin:elementType>
								<tin:elementGeometry>
									<gml:LineString gml:id="uid_23">
										<gml:pos>0 50 5</gml:pos>
										<gml:pos>50 0 0</gml:pos>
									</gml:LineString>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.2 Soft Break                                                                                         -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_300">
				<gml:description>from OGC 15-111r1 Annex E.3.2 Soft Break
					example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface3</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_31">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>50 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_32">
								<tin:elementType>softBreak</tin:elementType>
								<tin:elementGeometry>
									<gml:LineString gml:id="uid_33">
										<gml:pos>0 50 5</gml:pos>
										<gml:pos>50 0 0</gml:pos>
									</gml:LineString>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.3 Control Contour                                                                                         -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_40">
				<gml:description>from OGC 15-111r1 Annex E.3.3 Control Contour
					example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface4</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_41">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 50 0</gml:pos>
								<gml:pos>50 25 0</gml:pos>
								<gml:pos>0 0 0</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 25 3</gml:pos>
								<gml:pos>0 25 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 25 3</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 25 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>0 25 3</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_42">
								<tin:elementType>controlContour</tin:elementType>
								<tin:elementGeometry>
									<gml:LineString gml:id="uid_43">
										<gml:pos>0 25 3</gml:pos>
										<gml:pos>50 25 3</gml:pos>
									</gml:LineString>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.4 Break Void                                                                                         -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_50">
				<gml:description>from OGC 15-111r1 Annex E.3.4 Break Void
					example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface5</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_51">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 20 4</gml:pos>
								<gml:pos>10 30 4</gml:pos>
								<gml:pos>0 50 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>40 20 7</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 20 7</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 20 7</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 7</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 30 7</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>10 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
	<!--  The following triangles are tagged as void	-->
							<tin:SimpleTrianglePatch>
								<gml:pos>40 20 7</gml:pos>
								<gml:pos>10 30 4</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 20 7</gml:pos>
								<gml:pos>40 30 7</gml:pos>
								<gml:pos>10 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_52">
								<tin:elementType>breakVoid</tin:elementType>
								<tin:elementGeometry>
									<gml:Polygon gml:id="uid_53">
										<gml:exterior>
											<gml:LinearRing>
												<gml:pos>40 30 7</gml:pos>
												<gml:pos>10 30 4</gml:pos>
												<gml:pos>10 20 4</gml:pos>
												<gml:pos>40 20 7</gml:pos>
												<gml:pos>40 30 7</gml:pos>
											</gml:LinearRing>
										</gml:exterior>
									</gml:Polygon>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.5 Drape Void                                                                                         -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_60">
				<gml:description>from OGC 15-111r1 Annex E.3.5 Drape Void
					example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface6</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_61">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>0 10 2</gml:pos>
								<gml:pos>0 50 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>10 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>10 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>40 20 3</gml:pos>
								<gml:pos>30 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>40 30 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>27.5 30 3.67</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>20 30 3</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 30 3</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
	<!--  The following triangles are tagged as void	-->
							<tin:SimpleTrianglePatch>
								<gml:pos>10 30 3</gml:pos>
								<gml:pos>10 30 2</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 20 2</gml:pos>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>40 20 3</gml:pos>
								<gml:pos>40 30 5</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_62">
								<tin:elementType>breakline</tin:elementType>
								<tin:elementGeometry>
									<gml:LineString gml:id="uid_63">
										<gml:pos>0 50 5</gml:pos>
										<gml:pos>50 0 0</gml:pos>
									</gml:LineString>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_64">
								<tin:elementType>drapeVoid</tin:elementType>
								<tin:elementGeometry>
									<gml:Polygon gml:id="uid_65">
										<gml:exterior>
											<gml:LinearRing>
												<gml:pos>40 30</gml:pos>
												<gml:pos>10 30</gml:pos>
												<gml:pos>10 20</gml:pos>
												<gml:pos>40 20</gml:pos>
												<gml:pos>40 30</gml:pos>
											</gml:LinearRing>
										</gml:exterior>
									</gml:Polygon>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.6  Void                                                                                         -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_70">
				<gml:description>from OGC 15-111r1 Annex E.3.6 Void example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface7</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_71">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 20 4</gml:pos>
								<gml:pos>10 30 4</gml:pos>
								<gml:pos>0 50 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>40 20 4</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 20 4</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 30 4</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>10 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
	<!--  The following triangles are tagged as void	-->
							<tin:SimpleTrianglePatch>
								<gml:pos>40 20 4</gml:pos>
								<gml:pos>10 30 4</gml:pos>
								<gml:pos>10 20 4</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 20 4</gml:pos>
								<gml:pos>40 30 4</gml:pos>
								<gml:pos>10 30 4</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_72">
								<tin:elementType>void</tin:elementType>
								<tin:elementGeometry>
									<gml:Polygon gml:id="uid_73">
										<gml:exterior>
											<gml:LinearRing>
												<gml:pos>40 30 4</gml:pos>
												<gml:pos>10 30 4</gml:pos>
												<gml:pos>10 20 4</gml:pos>
												<gml:pos>40 20 4</gml:pos>
												<gml:pos>40 30 4</gml:pos>
											</gml:LinearRing>
										</gml:exterior>
									</gml:Polygon>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.7  Hole                                                                                         -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_80">
				<gml:description>from OGC 15-111r1 Annex E.3.7 Hole example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface8</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_81">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>0 10 2</gml:pos>
								<gml:pos>0 50 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>10 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>10 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>40 20 3</gml:pos>
								<gml:pos>30 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>40 30 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>27.5 30 3.67</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>20 30 3</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 30 3</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
	<!--  The following triangles are tagged as hole	-->
							<tin:SimpleTrianglePatch>
								<gml:pos>10 30 3</gml:pos>
								<gml:pos>10 30 2</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 20 2</gml:pos>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>40 20 3</gml:pos>
								<gml:pos>40 30 5</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement xlink:href="uid_12" xlink:title="Group Spot">
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_82">
								<tin:elementType>breakline</tin:elementType>
								<tin:elementGeometry>
									<gml:LineString gml:id="uid_83">
										<gml:pos>0 50 5</gml:pos>
										<gml:pos>50 0 0</gml:pos>
									</gml:LineString>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_84">
								<tin:elementType>hole</tin:elementType>
								<tin:elementGeometry>
									<gml:Polygon gml:id="uid_85">
										<gml:exterior>
											<gml:LinearRing>
												<gml:pos>40 30</gml:pos>
												<gml:pos>10 30</gml:pos>
												<gml:pos>10 20</gml:pos>
												<gml:pos>40 20</gml:pos>
												<gml:pos>40 30</gml:pos>
											</gml:LinearRing>
										</gml:exterior>
									</gml:Polygon>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
	<!--                                                                                                                         	-->
	<!--     E.3.7  Stop Line, Random Points, Boundary                                                           -->
	<!--                                                                                                                         	-->
		<li:feature>
			<lilf:LandSurface gml:id="uid_90">
				<gml:description>from OGC 15-111r1 Annex E.3.7 Stop Line, Random Points, Boundary
					example</gml:description>
				<gml:name>existing ground surface</gml:name>
				<lilf:state>existing</lilf:state>
				<lilf:landSurfaceID>
					<lilf:ID>
						<identifier>LandSurface9</identifier>
					</lilf:ID>
				</lilf:landSurfaceID>
				<lilf:spatialRepresentation>
					<tin:TIN gml:id="uid_91">
						<gml:patches>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>0 10 2</gml:pos>
								<gml:pos>0 50 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>0 0 0</gml:pos>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>10 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>10 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>40 20 3</gml:pos>
								<gml:pos>30 20 2</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 0 0</gml:pos>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>40 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>50 50 10</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>40 30 5</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>27.5 30 3.67</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>20 30 3</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 30 3</gml:pos>
								<gml:pos>0 50 5</gml:pos>
								<gml:pos>10 20 3</gml:pos>
							</tin:SimpleTrianglePatch>
	<!--  The following triangles are tagged as void	-->
							<tin:SimpleTrianglePatch>
								<gml:pos>10 30 3</gml:pos>
								<gml:pos>10 30 2</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>10 20 2</gml:pos>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
								<gml:pos>20 30 3</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>40 30 5</gml:pos>
								<gml:pos>27.5 30 3.67</gml:pos>
							</tin:SimpleTrianglePatch>
							<tin:SimpleTrianglePatch>
								<gml:pos>30 20 2</gml:pos>
								<gml:pos>40 20 3</gml:pos>
								<gml:pos>40 30 5</gml:pos>
							</tin:SimpleTrianglePatch>
						</gml:patches>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_92">
								<tin:elementType>stopLine</tin:elementType>
								<tin:elementGeometry>
									<gml:LineString gml:id="uid_93">
										<gml:pos>10 25</gml:pos>
										<gml:pos>40 25</gml:pos>
									</gml:LineString>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_94">
								<tin:elementType>randomPoints</tin:elementType>
								<tin:elementGeometry>
									<gml:MultiPoint gml:id="uid_95">
										<gml:pointMembers>
											<gml:Point gml:id="uid_96">
												<gml:pos>0 0 0</gml:pos>
											</gml:Point>
											<gml:Point gml:id="uid_97">
												<gml:pos>0 50 5</gml:pos>
											</gml:Point>
											<gml:Point gml:id="uid_98">
												<gml:pos>50 50 0</gml:pos>
											</gml:Point>
											<gml:Point gml:id="uid_99">
												<gml:pos>50 50 10</gml:pos>
											</gml:Point>
										</gml:pointMembers>
									</gml:MultiPoint>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:tinElement>
							<tin:TINElement gml:id="uid_100">
								<tin:elementType>boundary</tin:elementType>
								<tin:elementGeometry>
									<gml:Polygon gml:id="uid_101">
										<gml:exterior>
											<gml:LinearRing>
												<gml:pos>0 0</gml:pos>
												<gml:pos>50 0</gml:pos>
												<gml:pos>50 50</gml:pos>
												<gml:pos>0 50</gml:pos>
												<gml:pos>0 0</gml:pos>
											</gml:LinearRing>
										</gml:exterior>
									</gml:Polygon>
								</tin:elementGeometry>
							</tin:TINElement>
						</tin:tinElement>
						<tin:maxLength uom="m">100</tin:maxLength>
					</tin:TIN>
				</lilf:spatialRepresentation>
			</lilf:LandSurface>
		</li:feature>
</li:LandInfraDataset>

Annex C: Revision History

Date Release Editor Primary clauses modified Description

2017-03-07

101r1

Scarponcini

Figure 2

Dependency changes in Part 6

2017-03-17

101r1

Scarponcini, Jensen

Added B.2

TIN example XML

2017-04-10

101r2

Paul Scarponcini

Annex B

Fixed GML striping

Annex D: Bibliography

[1] OGC: OGC 08-131r3 The Specification Model — A Standard for Modular specifications, Open Geospatial Consortium, 2009


1. www.opengeospatial.org/cite