|
GIS支持
概述
GIS(地理信息系统)已经在道路和交通控制系统,供水系统等领域中广泛应用。原有的GIS系统中的数据大部分是静态数据。然而,交通控制系统和LBS应用中的GIS要求高性能DBMS作为它的核心数据库引擎,这样可以实时跟踪快速运动的对象的地理位置,并将其实时记录到地图中。
为了满足实时层数据库引擎的工业需要,Altibase可以把自己无缝集成到GIS系统中。Altibase提供基于R-tree方法的GIS接口。Altibase
GIS符合OpenGIS标准。现在Altibase还不能支持整个标准,但是Altibase计划在近期发布GIS接口的完整版本。
GIS DBMS架构
空间DBMS架构分成三种,Altibase属于下表所列三种架构中的集成架构
| |
| 分 类 |
说 明 |
注 释 |
| 层架构(a) |
一个模块在非空间数据库上,作为数据库和数据之间的翻译器。这个模块将空间数据翻译成非空间数据库格式。
|
这个模块严重降低整个系统
的性能。一般的方法是将空
间数据以文件格式保存。
|
| 双架构(b) |
非空间数据库和处理空间数据的子系统协同存在。集成层负责在两部分进行调度。
|
应用开发者不得不分别处理两种数据库。
|
| 集成架构(c) |
空间数据库的功能被集成到非空间数据库中。
|
在三种架构中,集成架构性能最高,实现时间最短。 |

OpenGIS空间数据类型
OpenGIS支持多种数据类型,包括Point,LineString,Polygon,GeomCollection,MultiLineString,Multipolygon,MultiPoint。然而,在SQL中这些类型都表示为Geometry类型,使用的函数会区分Geometry类型到底是什么类型。
OpenGIS空间函数
空间函数使关系型DBMS可以访问空间数据。空间函数可以分为以下几类。
[基本函数]
基本函数对相关任务的空间数据进行基本操作。基本函数可以在分成两类。
-公用基本函数 – 所有数据类型公用的空间函数
-特定类型基本函数 – 只是特定数据类型使用的空间函数
[测试空间关系函数]
测试两个不同空间数据之间相互关系的空间函数。例如,这些测试函数测试两个不同空间数据是matching关系,intersecting关系,还是mutually
inclusive关系。测试空间函数的返回值是TRUE,FALSE或者UNKNOWN。
[空间分析函数]
空间分析函数提供空间关系分析,比如说两个空间数据之间的距离,和或者区别。
[几何构造函数]
为了使用SQL在数据库中或者数据库之外处理空间数据,应该构造Geometry对象用于SQL语句中的where或者values()子句。几何构造函数用于构造那些几何对象。根据源数据类型几何构造函数又可以分成两类。
-文本表示函数 – 从文本类型构造
-二进制表示函数 – 从二进制类型构造
Altibase GIS
这部分简单介绍Altibase GIS。如果您想了解更多信息,请查阅Altibase空间DBMS用户手册。
[数据类型]
Altibase 3现在只支持OpenGIS的7种数据类型的Point类型。INTERSECT函数也仅限于简单多边形操作(少于1024字节,12个点)。
(例如)
SELECT * FROM ROADS HERE INTERSECTS
(OBJ , GEOMFROMTEXT ('POLYGON ((10 10, 20 10, 20 20,
10 20))') = 1;
[函数]
Altibase GIS支持的空间函数如下
-基本函数
Dimension, GeometryType AsText, IsEmpty, IsSimple, Boundary, Envelope,
CoordX(相当于OpenGIS提供的x()函数),CoordY(相当于OpenGIS提供的Y()函数)
-测试空间关系函数
Equal, Disjoint, Touches, WithIn, Overlaps, Crosses, Intersects, Contains,
Relate
-分析函数
Distance
-构造函数
GeomFromText, PointFromText
[GBF APIs]
为了让客户端工具程序员不用知道空间数据库的内部架构就可以访问空间数据库,Altibase提供GBF(Geometry
Browsing Function)API。
只要在您的客户端程序顶部简单的包括使用ODBC或者CLI实现的sqlGeometry.h头文件,您就可以使用GBF函数。
|