基本3D格式
BIM文件格式
CAD文件格式
GIS文件格式

GML文件

GML(Geography Markup Language)是一种基于XML的文件格式,用于描述地理信息数据。它被广泛应用于3D、BIM(建筑信息模型)和GIS(地理信息系统)行业中,可以储存和传输各种地理数据,如矢量、栅格、拓扑、坐标系和地理空间元数据等。

文件结构

GML文件的结构可以分为三部分:头部、体部和尾部。其中头部和尾部都包含一些元数据信息和命名空间声明等内容,体部则是地理信息数据的主体部分。下面是一个以GML格式储存的矢量数据的简单示例:

<?xml version="1.0" encoding="UTF-8"?>
<gml:FeatureCollection
  xmlns:gml="http://www.opengis.net/gml"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/gml/3.2 
  http://schemas.opengis.net/gml/3.2.1/gml.xsd">
  <gml:featureMember>
    <gml:Point gml:id="p1">
      <gml:pos>51.45 -2.583333</gml:pos>
    </gml:Point>
  </gml:featureMember>
  <gml:featureMember>
    <gml:LineString gml:id="l1">
      <gml:posList>-0.1925 51.5 0 -0.1794 51.4944 0</gml:posList>
    </gml:LineString>
  </gml:featureMember>
</gml:FeatureCollection>

这个示例包含了一个简单的点和线数据。在头部部分,声明了GML标签的命名空间(xmlns:gml)和xsi命名空间(xmlns:xsi),并指定了GML的规范链接(xsi:schemaLocation)。

在体部中,用gml:FeatureCollection标签包裹所有地理信息数据,并以gml:featureMember标签分别包含了一个点和一个线。点的数据由gml:Point标签组成,其中包含了坐标信息gml:pos。线的数据由gml:LineString标签组成,其中包含了坐标信息的列表gml:posList

规范链接

GML的规范由Open Geospatial Consortium(OGC)组织制定和维护,目前最新版本为GML 3.2.1。该规范定义了GML的语言结构、数据类型和操作规则等,以及一系列GML Profile用于针对不同应用领域的特定需求进行扩展。

可以在以下链接中获取GML规范的具体内容:

  • GML 3.2.1主要规范:http://www.opengis.net/doc/IS/gml/3.2
  • OGC GML 3.2.1 Schema(XSD):http://schemas.opengis.net/gml/3.2.1/gml.xsd
  • OGC GML Profile主页:http://www.opengeospatial.org/standards/gmlprofiles

示例文件

以下是GML格式储存的一个城市模型示例(部分数据):

<?xml version="1.0" encoding="UTF-8"?>
<CityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.opengis.net/citygml/1.0/citygml.xsd" gml:id="CityModel1">
  <cityObjectMember>
    <Building gml:id="B1">
      <creationDate>2005-06-16</creationDate>
      <description>Pedestrian zone</description>
      <boundedBy>
        <SurfaceGeometry>
          <lod2MultiSurface>
            <gml:MultiSurface srsName="urn:ogc:def:crs:EPSG::32632" srsDimension="3">
              <gml:surfaceMember>
                <gml:Polygon>
                  <gml:exterior>
                    <gml:LinearRing>
                      <gml:posList>636087.020188 5486428.9342 19.441556 636086.422463 5486429.34492 19.419367 636088.253963 5486431.43472 19.380599 636088.851689 5486431.024 19.402788 636087.020188 5486428.9342 19.441556</gml:posList>
                    </gml:LinearRing>
                  </gml:exterior>
                </gml:Polygon>
              </gml:surfaceMember>
            </gml:MultiSurface>
          </lod2MultiSurface>
        </SurfaceGeometry>
      </boundedBy>
    </Building>
  </cityObjectMember>
</CityModel>

这个示例包含了一个Building(建筑物)的数据,包括了创建日期、描述和边界信息等。边界信息由SurfaceGeometry(表面几何信息)标签包含,其中包含了lod2MultiSurface(二级细节多面体)的信息。多面体由gml:MultiSurface标签组成,其中的gml:surfaceMember标签表示面集合的成员。每个面由gml:Polygon标签组成,其中的gml:LinearRing标签表示环集合的成员,并包含了坐标信息gml:posList