SFS解释
这个标准包含着两个方面:
1. Common architecture -体系结构
定义了表示客观世界的体系结构,以及表示客观世界的术语,定义了几何对象模型…
2. SQL option - SQL语言
描述了在SQL中如何实现对简单要素模型的实现…
其中我们熟悉的WKT、WKB等在第一部分中进行叙述,第二部分主要包括SQL预定义schema、SQL几何类型、空间操作等。
需要说明的一点是,SFS并不定义实现方面的策略,不考虑实际实现,它只是给出了一种规范,告诉你可以这样去描述客观世界,这种描述世界的方式是经过很多人的思考得来的,是很优秀完善的,我们需要做的是应用这种规范…
一 几何对象模型
该图像表示了SFS中几何对象的关系结构,主要是对点、线、面、多点、多线、多面的定义,此外,几何对象还涉及到一系列的操作,可以说它定义了一套空间操作的规范,沿着这个规范,就出现了很多空间数据格式如GeoJSON、shapefile。
1.1 WKT描述的几何对象
WKT(well-known text)使用文本的格式描述几何对象,示例:
| 几何类型 | WKT表示 | 说明 |
|---|---|---|
| Point | Point(10 10) | 点 |
| LineString | LineString(10 10,20 20,30 40) | 有三个节点的线 |
| Polygon | Polygon((10 10,10 20,20 20,20 15,10 10)) | 有一个外环的多边形 |
| … | … | … |
1.2 WKB描述的几何对象
WKB(well-known binary)通过序列化的字节对象来描述几何对象,在WKB中涉及到两种数据类型:uint32(无符号整数,占4个字节,用于存储节点数、几何对象等信息,double(双精度数值),占8个字节,用于存储节点坐标值,其中几何对象类型对应的整数如下表:
再次提醒一下,几何对象类型使用uint32,后面的示例会更清晰~
示例如下,注意WKB在二进制流的最前方还存储了一个额外的字节用以标识字节序:
| 几何类型 | WKB表示 | 说明 |
|---|---|---|
| Point(two dimension) | 21个字节 | |
| LineString(两个节点) | 41个字节 |
二 SQL
SQL option这一部分主要描述了几何对象模型在空间数据库中的实现,包括预定义的schema和各种空间操作,对各种几何类型的表达支持等…