OGC标准介绍 4

· SQL 预定义schema

在空间数据库中,需要一些表来存储和管理几何字段、空间参考等信息,因此OGC首先规定了在数据库中需要的Schema对象[1]

image

7 OGC空间数据库中需要预定义的schema

可见,数据库中必须要有一个记录几何字段信息的GEOMETRY_COLUMNS表和一个记录空间参考信息的SPATIAL_REF_SYS表。从支持OGC标准的空间数据库中,我们都可以找到这两张表。当然,有些空间数据库直接使用“GEOMETRY_COLUMNS”和“SPATIAL_REF_SYS”作为这两张表的名称,比如PostGIS,有些则采用其它名字,比如Oracle Spatial采用“OGIS_GEOMETRY_COLUMNS”和“OGIS_SPATIAL_REFERENCE_SYSTEMS”、ArcSDE for Oracle则采用“GEOMETRY_COLUMNS”和“SPATIAL_REFERENCES”,不一而同。

· SQL 几何对象存储

图 7中显示在OGC标准中几何信息存储在一个Geometry表中,这个表可以用常规字段或WKB两种方式存储几何对象,Geometry表通过GID字段关联到Feature表的几何字段。事实上,OGC标准中还有一种定义,Feature表的几何字段也可以是SQL UDT(自定义类型),也就是不需要额外的Geometry表来存储几何信息,而直接存储在Feature表的几何字段中。大多数数据库都是采用这种自定义类型的方式存储几何信息,比如ArcSDE中的ST_Geometry类型、PostGIS中的Geometry和ST_Geometry类型。

自定义类型可以采用SFS标准中定义的几何类型,也可以采用SQL/MM[2] 的定义,比如PostGIS对这两种定义都进行了支持,下图是SFS和SQL/MM几何类型定义的一个对应关系:

image

图 8 SFS和SQL/MM几何类型的对应关系

用户既可以遵循SFS的定义,使用类似“Geometry”、“Point”这样的命名;也可以遵循SQL/MM定义,采用“ST_”作为前缀进行命名,如“ST_Geometry”、“ST_Point”。

SQL几何类型的继承关系可参考图 9,可以发现SQL中实现的几何对象模型和图 1所示的通用几何对象模型非常类似。

image

9 SQL几何对象模型

[1] 兼容ISO《SQL Multimedia and Application Packages(SQL/MM)—Part 3: Spatial》中的空间信息Schema短名字视图定义。

[2] ISO《SQL Multimedia and Application Packages》标准,其中的《Part3:Spatial》定义了和空间数据有关的内容。