IBM Informix Spatial DataBlade 可将地理信息系统 (GIS) 嵌入到 Informix Dynamic Server (IDS) 内核中。Informix Spatial DataBlade 模块执行开放地理空间联盟 (OGC) 的用户定义类型 (UDT) 的 SQL 3 规范,在该规范中,列可以存储空间数据(例如,地标、街道或宗地的位置)。
Informix 数据库管理系统中的地理数据库将其空间数据存储为 Informix Spatial DataBlade 数据类型。因此,必须注册 Spatial DataBlade 才能在 Informix 数据库中创建地理数据库。
有关 Informix Spatial DataBlade 和如何安装的详细信息,请参阅《IBM Informix Spatial DataBlade 模块用户指南》。《DataBlade 模块安装和注册指南》也介绍了如何注册 DataBlade 模块。
IBM Spatial DataBlade 的工作原理
安装 Informix Spatial DataBlade 之后,即可创建具备空间功能并包含空间列的表。这些在 ArcGIS 中称为要素类。可以将地理要素插入到空间列中。Informix Spatial DataBlade 可将空间数据从以下三种外部格式之一转换为其特有存储格式:
- 可识别文本 (WKT) 表示
- 熟知二进制 (WKB) 表示
- Esri 形状表示
Informix 数据库中的地理数据库使用 Esri 形状表示。
空间参考表
空间参考系统可识别每个几何的坐标变换矩阵,几何这个词由 OGC 采用,指的是二维空间数据。数据库已知的所有空间参考系都存储在 spatial_references 表中。Spatial_references 表存储数据库中的每个空间参考的记录。
存储前,内部函数会利用空间参考系的参数将几何的每个浮点型坐标都转换和调整为正整数。进行检索时,这些坐标将恢复为其外部浮点型形式。
通过以下步骤将浮点型坐标转换为整型:减去 falsex 值和 falsey 值,从而转换为假定原点;乘以 x,y 单位进行比例调整;添加半个单位;然后截掉余数。
可选的 z 坐标和度量值采用相似方式处理,不同之处在于分别使用 falsez 和 falsem 进行转换,并使用 z 单位和 m 单位进行比例调整。
SRID(spatial_references 主键)包含每个空间参考系的唯一编号。
空间参考系在其构建过程中被分配给几何。空间参考系必须存在于 spatial_references 表中。同一列中的所有几何都必须具有相同的空间参考系。
每当创建要素类时,ArcGIS 都会搜索 spatial_references 表,试图找到匹配的空间参考系统。如果找到匹配的空间参考系统,则将 SRID 分配给要素类;否则,ArcGIS 将在 spatial_references 表中添加新的空间参考系统,并分配给要素类。
当从另一个数据源(例如,coverage 或 shapefile)将数据导入要素类中时,数据的坐标必须适合空间参考系的范围。处于空间参考系范围以外的每个要素都将被拒绝。
Informix 数据库中的要素类
Informix 空间表可包含一个或多个空间列,但 ArcGIS 只可以使用要素类中的一个空间列。空间列使用一个 Informix Spatial DataBlade 的 UDT 进行定义。空间列只可接受空间列所需类型的数据。例如,ST_Polygon 列拒绝整型、字符和其他类型的非多边形几何。
当 ArcGIS 在 Informix 中创建要素类时,它也会创建对象 ID 列。对象 ID 是 ArcSDE 客户端追踪选择集所需的唯一、非空整型列。
每当 ArcGIS 在 Informix 的地理数据库中创建要素类时,便会在 geometry_columns 表中添加一条记录。使用 Informix Spatial DataBlade 的应用程序负责在每次为数据库添加空间列时将记录插入到 geometry_columns 表中。
通过 ArcGIS 使用现有 Informix 表的指南
除了 ArcGIS 之外的应用程序均可在 Informix 中创建含空间列的表。ArcGIS 用来使用由其他应用程序或通过 SQL 创建的包含空间列的表(有时称为第三方表),但这些表应满足以下先决条件:
- 表必须具有由数据库进行维护以用作对象 ID 列的唯一、非空整型列。
- 表不能包含用户定义类型的列(非 ST_Geometry 列)。
- 表只能包含一个 ST_Geometry 列。如果想要访问包含多个 ST_Geometry 列的表的数据,请创建仅包含一个 ST_Geometry 列的表的视图。
- 表中所有记录必须仅具有一个空间参考 ID。
- 如果想要将表注册到地理数据库,则您必须是表的所有者。将表注册到地理数据库时,ArcGIS 会添加其自己的对象 ID 列并维护该列中的值。