OGC标准介绍 3

· WKT 描述的几何对象

WKT(Well-known Text)可以通过文本来描述几何对象。下面的例子可以比较快速、直观地说明什么是WKT:

几何类型

WKT 例子

说明

Point

Point (10 10)

LineString

LineString ( 10 10, 20 20, 30 40)

有3个节点的线

Polygon

Polygon ((10 10, 10 20, 20 20, 20 15, 10 10))

只有1个外环的多边形

MultiPoint

MultiPoint

(

(10 10),

(20 20)

)

多点

MultiLineString

MultiLineString

(

(10 10, 20 20),

(15 15, 30 15)

)

多线

MultiPolygon

MultiPolygon

(

((10 10, 10 20, 20 20, 20 15, 10 10)),

((60 60, 70 70, 80 60, 60 60 ))

)

多面

GeometryCollection

GeometryCollection

(

POINT (10 10),

POINT (30 30),

LINESTRING (15 15, 20 20)

)

几何集合

PolyhedralSurface

PolyhedralSurface Z

(

((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),

((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),

((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),

((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),

((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)),

((0 0 1, 1 0 1, 1 1 1, 0 1 1. 0 0 1))

)

多个表面构成的立方体

Tin

Tin Z

(

((0 0 0, 0 0 1, 0 1 0, 0 0 0)),

((0 0 0, 0 1 0, 1 0 0, 0 0 0)),

((0 0 0, 1 0 0, 0 0 1, 0 0 0)),

((1 0 0, 0 1 0, 0 0 1, 1 0 0)),

)

4个三角形构成的TIN网格

Point

Point Z (10 10 5)

三维点

Point

Point ZM (10 10 5 40)

带M值的三维点

Point

Point M (10 10 40)

带M值的二维点

表 2 WKT描述几何对象示例

· WKB 描述的几何对象

WKB(Well-known Binary)通过序列化的字节对象来描述几何对象。在WKB中主要涉及两种数值类型:一种是uint32,占4个字节,用以存储节点数、几何对象类型等信息;另一种是double,占8个字节,用以存储节点坐标值。其中的几何对象类型对应的整数可以参考下表:

image

图 3 WKB中几何类型对应的整数值

除此之外,WKB在第一位还存储了一个额外的字节用来标识字节序[1] (0=Big-Indian,1=Little-Indian)。因此,对于一个点(不带M值的二维点)来说,它的WKB描述应该类似下面的结构,总共占据21个字节:

image

图 4 WKB描述点的字节结构

对于有2个节点的线来说,WKB描述应该包含41个字节:

image

图 5 WKB描述线的字节结构

对于仅有1个外环,由3个节点构成的多边形来说,WKB描述则应该包含77个字节:

image

图 6 WKB描述多边形的字节结构

· WKT 描述的空间参考

WKT除了可以描述几何对象,也可以描述空间参考。通过2个例子可以很直观地看到如何通过文本来描述空间参考。

对于一个地理坐标系,比如最常见的WGS84坐标系统,WKT描述是这样的:

GEOGCS

[

“GCS_WGS_1984”,

DATUM[“D_WGS_1984”,SPHEROID[“WGS_1984”,6378137.0,298.257223563]],

PRIMEM[“Greenwich”,0.0],

UNIT[“Degree”,0.0174532925199433],

AUTHORITY[“EPSG”,4326]

]

“GEOGCS”表明其后紧随的“[ ]”中描述的是一个地理坐标系统。该坐标系统名称为“GCS_WGS_1984”;采用的大地基准面为“D_WGS_1984”,该基准面近似椭球体的长轴为6378137.0米、扁率为298.257223563;以格林威治0度经线为起始经线;地图单位为度,该单位的转换因子[2] 为0. 0174532925199433(π/180);最后,该坐标系统在EPSG[3] 中的编码为“4326”。

对于一个投影坐标系,比如WGS84 Web Mercator(Auxiliary Sphere)坐标系统,WKT描述是这样的:

PROJCS

[

“WGS_1984_Web_Mercator_Auxiliary_Sphere”,

GEOGCS

[

“GCS_WGS_1984”,

DATUM[“D_WGS_1984”,SPHEROID[“WGS_1984”,6378137.0,298.257223563]],

PRIMEM[“Greenwich”,0.0],

UNIT[“Degree”,0.0174532925199433]

],

PROJECTION[“Mercator_Auxiliary_Sphere”],

PARAMETER[“False_Easting”,0.0],

PARAMETER[“False_Northing”,0.0],

PARAMETER[“Central_Meridian”,0.0],

PARAMETER[“Standard_Parallel_1”,0.0],

PARAMETER[“Auxiliary_Sphere_Type”,0.0],

UNIT[“Meter”,1.0],

AUTHORITY[“EPSG”,3857]

]

类似的,“PROJCS”代表这是一个投影坐标系。投影坐标系中必然会包括一个地理坐标系,这里的地理坐标系就是“GCS_WGS_1984”,这个地理坐标系的定义和上面的类似。下面紧跟着的是投影的相关参数,“Mercator_Auxiliary_Sphere”是采用投影的名称,这个投影坐标系以0度经线为中央经线进行投影;坐标系的单位为米(显然,转换因子就为1.0),而该坐标系的EPSG编码为“3857”。

[1] 关于字节序可以参考:http://zh.wikipedia.org/zh/%E5%AD%97%E8%8A%82%E5%BA%8F

[2] 转换因子意为一个单位所代表的米(线性单位)或所代表的弧度数(角度单位)。

[3] 在线EPSG编码参考:http://spatialreference.org/ref/epsg/