空间数据中间件
2018-06-23 本文已影响16人
揽月凡尘
GIS传统软件空间数据的集成方法
空间数据集成面临的问题比传统的关系数据库集成更多。从计算机技术的角度来看,空间数据集成大致分为基于文件系统的集成、基于数据库系统的集成、基于中间件系统的集成和基于互操作的集成四种方法。总的来看,四种方法是承前启后的关系,不同的方法适用于不同的场景,其发展与主流的IT技术的发展潮流相呼应,都是空间数据共享、集成与应用的重要模式。
基于文件系统
早期的GIS软件是采用文件方式来存储和管理空间数据的。因此,基于文件系统进行空间数据集成应用是一种简便易行、成熟可用的集成方式。由于数据格式的不一致性,不同的GIS平台的文件需要进行格式转换才能互用。这种格式转换一般采用预处理方式,导致这种集成方式有如下不足:
- 数据损失
- 不同平台的可视化存在不一致的问题
- 格式转换、重复建库的效率比较低
- 数据更新不及时
- 数据安全性无法得到保障
基于数据库
在数据库技术、网络技术日益发展成熟的背景下,空间数据也被考虑利用数据库进行存储和管理。基于数据库的系统空间数据集成方式可以有效地解决基于文件格式转换时存在的数据损失、重复建库、更新困难等问题,已出现了较多成功的案例:这种模式主要需要解决两个问题
- 空间数据在网络的环境下因带宽问题难以实现。
- 难以实现异构的GIS平台的集成应用
基于中间件
中间件技术是一种比较成熟的技术,是处于应用软件和系统软件之间的一类基础软件,属于可复用软件的范畴。分布式应用软件可以借助中间件在不同的技术和平台之间共享资源。分布式空间数据的集成借助于中间件来屏蔽数据库系统和不同GIS系统的异构特性,能够综合考虑到不同的数据库和GIS平台的优势和不足,提供较高效的空间数据访问、处理与分析的应用功能。如果能够遵循一致的、开放的协议,也就能够满足开放性的要求。它具有以下特点:
- 多源数据异构
- 对各种矢量数据的无缝支持,无需要数据转换,通过中间件间接访问。
- 支持的数据包含:文件型数据、关系型数据、NOSQL数据库以及各种空间引擎数据库。
- 增强可扩展性
- 统一的增删改查接口
- 屏蔽数据库与GIS系统的直接操作
- 更简单的二次开发接口,提供更方便的空间数据类型支持。
中间件原理
中间件架构系统结构示意图
简易中间件的实现
中间件类结构-
通过中间件搜索数据
空间数据搜索 - 代码实例
//以下是伪代码;
void drawFeatures(IPainter* painter) //渲染要素
{
ITable *table;//获取图层;
dan::Object<IHDFeatureRequest> feature_request(NIL);
dan::Rect filter_rect;
feature_request->setFilterBox(filter_rect);
auto where_cause =" BSM > 23";
if(!where_cause.trimmed().isEmpty())
{
feature_request->setFilterExpress(where_cause);
}
feature_request->setFilterFlag(SubsetOfAttributes, true);
auto feature_iterator = table->features(feature_request.p());
dan::BoundingBox ent_box;
while(!feature_iterator->isDone())
{
auto record = feature_iterator->nextFeature(&ent_box);
if(record.valid() == false)
{
continue;
}
}
}
-
通过中间件修改空间数据实现流程
数据提交.png