1. 数据库表设计
本系统采用My SQL、e Xist数据库、Postgre SQL作为实验的后台数据库,测试SOS使用异构数据存储和管理数据的可行性。下面以Postgre SQL数据库为例介绍下数据库的详细设计。系统数据库包括: com_phen_off、composite_phenomenon、feature_of_interest、foi_off、ge-ometry_columns、observation、observation_template、offering、phen_off、phenomenon、proc_foi、proc_off、proc_phen、procedure、spatial_ref_sys、quality、request、request_composite_phenomenon和request_phenomenon总共19个表。表之间的实体关系图如图4-9所示。
图4-9 SOS在Postgre SQL数据库表的实体关系图
2. 适配器技术
图4-10表明,SOS服务可以接入零个或多个SOS资源。每个SOS的资源可由一个服务实体和相关联的数据库,或XML数据库表现。一个传感器数据适配器可以动态的实例化,用来存取不同来源的传感器数据。SOS服务和传感器数据适配器可以配置在同一台服务器上。SOS资源有一套相关的配置文件。这些文件详细说明了该资源支持的活动,会话信息以及数据资源适配器的类名。
SOS接口的设计与实现基于OGC的传感器观测服务执行规范,该规范定义了正式的绑定HTTP协议的接口和SOS应该遵守的操作。同时,该规范还明确指定了每个操作的请求,响应和异常信息。
图4-10 多传感器的适配器概念
图4-11展现了传感器网络的服务发现,观测发现,传感器元数据检索,传感器观测检索,传感器注册和观测数据的发布等操作的设计和实现,总共有11个Java接口:IInsert Observation、IGet Capabilities、IGet Feature Interest By Time、IDescribe Observation Type、IDe-scribe Sensor、IGet Result、IGet Observation、IGet Observation By Id、IRegister Sensor、IDescribe Fea-ture Of Interest和IGet Feature Of Interest。
图4-11 SOS公用接口
图4-12展示了实现一个My SQL数据库适配器所用到的Java类。My SQL是一个多线程,多用户的SQL数据库管理系统 (Schumacher和Lentz,2008)。My SQL支持空间数据库,允许生成,储存,分析地理特征数据。My SQL在Open GIS简单几何模型的基础上建立了一套几何类型集。这里用My SQL的几何类型来储存从一个数据层获得的观测数据,实现了SOS更新和检索传感器数据的接口,例如My SQLRegister Sensor、My SQLInsert Obser-vation和My SQLGet Observation。My SQLAccessor类和My SQLConfig类建立了一个My SQL适配器实例。My SQLConnection Pool类建立和管理一个到My SQL数据库的连接。
图4-12 My SQL数据库适配器的实现
图4-13展示了实现一个e Xist数据库适配器所用到的Java类。e Xist数据库 (Meier, 2003) 是一个开源的原生数据库(native XML database)具有高效率、基于索引的XQuery数据处理、自动索引、扩展的全文搜索、XUpdate支持、XQuery更新扩展、并与现有的XML开发工具紧密结合等优点。它是在当前XQuery 1.0工作草案下设计与实现的。e Xist数据库提供了强大的环境,方便用户使用XQuery和相关标准来开发Web应用程序。Web应用程序可以使用XSLT,XHTML,CSS或者Java Script等语言在XQuery下编写。XQuery服务页面可以通过文件系统或存储在数据库中执行。e Xist数据库可以存储点状的几何模型,SOS接口,如e Xist Register Sensor、e Xist Insert Observation和e Xist Get Observation等从一个数据层来更新和检索的传感器观测数据。
图4-13 e Xist数据库适配器的实现(www.xing528.com)
3.WSDL描述和调用
SOS的“Get Capabilities”操作的schema包含一个用于请求的“Get Capabilities”元素和一个用于响应的“Capability”元素。一个能力的响应包括五个主要的元素“Service Identifica-tion”、“Service Provider”、“Operations Metadata”、“Filter_capabilities”和“Contents”。其中“Contents”元素包含一个或多个SOS服务提供的含有数据或功能的“Observation Offering”元素。“Observation Offering”元素包含“intended Application”、“event Time”、“procedure”、“ob-served Property”、“feature Of Interest”、“result Format”、“result Model”和“response Mode”等元素。
SOS的“Describe Sensor”操作的schema包含一个用于请求的“Describe Sensor”元素和一个用于响应的“Sensor”元素。对于SOS的“Describe Sensor”操作的响应包含“identification”、“reference Frame”、“inputs”和“outputs”等元素。
SOS的“Get Observation”操作的schema包含一个用于请求的“Get Observation”元素和一个用于响应的“Observation”元素。对于SOS的“Get Observation”操作的响应包含“service”和“version”两个属性,还包含“Observation Offering”、“offering”和“result”等元素。一般情况下EO的观测数据集是通过“result”元素描述的。
SOS的“Register Sensor”操作的schema包含一个用于请求的“Register Sensor”元素和一个用于响应的“Register Sensor Response”元素。这个操作是用来向SOS注册新的传感器。SOS的“Register Sensor”操作的响应包含一个“Insert Id”元素。这个ID是用来连接传感器到一个观测类型。
为了方便WSDL实现,在SOS的schema中将输入和输出参数定义成消息。例如,“Get-Capabilities”的操作的输入参数是“Get Capabilities”元素,而输出参数是“Capability”元素。
SOS的“Insert Observation”操作的schema包含一个用于请求的“Insert Observation”元素和一个用于响应的“Insert Observation Response”元素。这个操作是用来插入新的观测数据。这个请求受到“register Sensor”操作ID的约束,观测编码还要遵守O&M执行规范。“Insert O-bservation”操作的响应的结果是“successful”或者“failed”。
WSDL提供了一个描述Web服务的模型和XML格式。WSDL允许从一个服务描述的具体细节中分离出抽象的服务描述。例如,WSDL提供了“how”和“where”功能的描述。一般地说,WSDL实例可以分为四个部分:操作、接口类型、绑定和服务。图4-14显示了描述SOS的WSDL的组成,包括三种的接口类型:HTTP Get,Post和SOAP;三个最基本的操作:Get Capabilities、Describe Sensor和Get Observation;两个可选择的事物性操作:Register Sensor和Insert Observation;三种绑定:SOS_HTTP_POST_Binding、SOS_HTTP_GET_Binding和SOS_SOAP_Binding和EO1_SOS,Weather_SOS及Camera SOS三个服务组件。
图4-14 SOS统一的WSDL描述
图4-15展示了SOS的schema在WSDL中输入和输出的参数。例如,“Get Capabilities”的操作的输入参数是“Get Capabilities”元素,而输出参数是“Capability”元素。传感器数据发布者可以使用相同参数调用“Register Sensor”和“Insert Observation”操作从SOS中注册传感器和更新观测和测量信息。传感器用户可以使用相同参数调用“Describe Sen-sor”和“Get Capabilities”操作从SOS中获得传感器和SOS服务信息,并可以使用这个信息调用“Get Observation”操作获得观测和测量的传感器数据。总之,传感器数据发布者和用户都可以直接的与SOS通信,调用SOS操作。
图4-15 SOS的WSDL消息
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。