周艳柳 韦波
摘要:基于影像数据与基于矢量数据的WebGIS集成可提供更为丰富的空间信息Web发布。以Image Web Server和MapXtreme分别为影像和矢量数据的WebGIS发布平台,使用Image Web Server客户端集成框架Image Integration Framework开发实现二者的WebGIS集成。给出系统集成开发的体系结构,叙述系统集成开发方法及功能实现的关键技术,为系统集成应用提供必要的基础技术支持。
关键词: 影像网络服务器;矢量数据;图像集成框架;集成开发;地理信息系统
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)09-0256-03
Abstract: The WebGIS integration of image-based and vector-based can provide more colorful spatial information in Web-based releasing. While Image Web Server is a WebGIS platform of releasing image, MapXtreme is a WebGIS platform of releasing vector data. By using Image Integration Framework, a client integration framework of Image Web Server, implemented the WebGIS integration of both. A system structure of the integrative development is given. Then, the method of integrative development and key technology of implemented function are narrated. The discussed result is a essential technology support for the application of integrative development.
Key words: image web server; vector data; image integration framework; integrated development; geographic information system
WebGIS作为空间信息共享的一种方式已得到广泛的应用,随着影像数据应用的越来越广泛,空间数据的共享形式也逐渐从矢量数据形式向影像数据形式转换,Google Earth即是其中的一个典型代表[1-6]。Image Web Server(IWS)作为影像数据网络服务器,较Google Earth相比,能实现B/S模式下海量影像数据的发布与共享,开发出基于影像数据形式的WebGIS系统。但单一的影像数据形式在地图信息表达、信息搜索与查询等方面明显表现不足[7-8],因此需要结合其它基于矢量数据的地图服务器来完善WebGIS开发系统。文献[9]讨论了IWS与SuperMap IS.NET的集成,本文叙述IWS与MapXtreme的集成开发方法。
1 集成开发体系结构
MapXtreme Java地图服务器部署在Tomcat 5.5 Web服务器中,矢量数据以MapInfo的TAB文件形式进行存储,为使IWS能访问MapXtreme矢量数据,需要建立MapXtreme WMS Web地图服务。
IWS部署在Microsoft IIS 6.0 Web服务器中,影像数据以ECW或JPEG 2000格式进行压缩存储,IWS可通过WMS、ArcXML、ECWP和ImageX其中的一种方式访问影像数据,同时以WMS方式访问MapXtreme WMS Web地图服务,获取矢量数据,并将矢量数据与影像数据进行图层叠加后通过Internet或Intranet发布到客户端浏览器中(图1)。
IWS与MapXtreme的集成开发采用IWS的客户端集成框架Image Integration Framework(IIF)。IIF包含一個应用程序,一个应用程序又包含一个或多个频道,一个频道通常又包括地图、工具条、进度条、状态条等窗口。其网页运行界面类似于一般Windows应用程序界面。地图(影像)数据的显示采用WebGIS的ActiveX控件实现技术[10],并可实现对数据的地图操作、搜索与查询等功能。
2 集成开发方法
IIF虽然简化了客户端网页界面的设计与开发,但仍需在定义网页界面窗口对象以及相关功能实现上做相应的工作。
2.1 网页界面窗口对象定义
IIF网页界面窗口布局如图2所示。
地图(影像)窗口显示地图或影像。地图(影像)操作工具栏包括放大、缩小、移动、全幅显示、查询等工具按钮。属性窗口包括查询、进度条、状态条三个窗口。查询窗口显示使用查询工具点击地图的查询结果,同时点击查询结果时又能查找到相应地图。进度条显示地图或影像显示的完成比例。
状态条显示当前地图或影像显示的比例尺、中心经纬度(坐标),其右侧为投影选择,可以改变当前地图或影像的投影方式。专题图层通常包括IWS分别以WMS、ArcXML、ECWP或ImageX协议加载的地图或影像WMS专题图层、ArcXML专题图层和Image专题图层。搜索窗口允许用户输入关键字进行信息搜索,并点击搜索结果能查找到相应地图。频道标识显示频道标识图片。所有以上窗口对象均包含在一个频道定义中,可通过在一个IIF应用程序中定义多个频道实现多个集成应用。
具体实现时先使用RApp类创建应用程序对象,然后向应用程序对象中添加频道及频道标识图片,再向频道中添加各窗口对象及其相关部件。
2.2 MapXtreme集成开发
2.2.1 影像数据加载
IWS可通过WMS、ArcXML、ECWP和ImageX其中的一种方式访问影像数据,IIF中对"ecwp"和"arcxml"两种协议接口进行了实现,可直接使用。但"arcxml"接口是为使用ArcXML访问ArcIMS服务定义的,若要使用它来访问IWS影像数据,需要注意两个地方:一处为发送影像请求URL时,URL字符串中不能使用单引号,而应使用双引号,否则IWS不能识别;另一处为XML中的"&"符号,在IWS处理完影像请求后所返回的XML中不能包含"&"符号,否则使用IIF定义的RXml类来解析XML时将导致失败。
加载影像数据首先在IIF中添加IWS服务,然后再向IWS服务中添加影像图层,并在Image专题图层窗口显示图层列表。
2.2.2 添加IIF服务定义
主要为MapXtreme地图加载、搜索和查询服务定义。
1)地图加载服务。指定服务名称、自定义接口名称、提供MapXtreme WMS Web地图服务的URL等。自定义的接口必须由开发人员自己实现。
2)搜索服务。指定服务名称、自定义接口名称、提供MapXtreme WMS Web地图服务的URL等。自定义的接口必须由开发人员自己实现。搜索服务中还需添加搜索功能。在搜索窗口中创建搜索输入文本框、提交按钮、显示搜索结果的窗口,定义提交按钮响应事件的类型及对应执行的方法名称,定义鼠标点击搜索记录执行“属性查图”功能时响应事件的类型及对应执行的方法名称。
3)查询服务。指定服务名称、自定义接口名称、提供MapXtreme WMS Web地图服务的URL等。自定义的接口必须由开发人员自己实现。查询服务中还需添加查询功能。首先定义查询集合,然后向查询集合中添加单个查询和查询字段。
2.3 关键技术
MapXtreme服务定义中的自定义接口必须由开发人员自己实现。在IIF中,定义了一个JavaScript接口类RAccess,类中声明了与IIF集成所需的接口方法,为实现这些接口方法,用户需要自定义一个JavaScript接口类RInterfaceAccess。
1)IIF中使用自定義接口。RInterfaceAccess构造函数后面加上一个语句:rAccess["mxtjwms"]= RInterfaceAccess;IIF使用这个语句实现IIF与用户自定义接口类的集成,从而找到用户实现的接口方法。"mxtjwms"自定义接口名称在添加IIF服务定义时用到。"mxtjwms"和“RInterfaceAccess”名称可自定义。
2)地图图层与地图请求。分别由loadLayers和loadMap接口方法向MapXtreme WMS Web地图服务发送WMS GetCapabilities请求和GetMap请求。发送请求的URL格式包括GET请求方式、请求地图范围、WMS GetCapabilities请求或GetMap请求格式。请求回应后返回的XML文档解析由responseMap接口方法负责,解析成功后再分别调用loadLayers和loadMap接口方法在WMS专题图层窗口中显示图层列表和在地图窗口中显示地图。
3)搜索功能。需要searchMap、searchResponse、onSelectSearchResult三个接口方法配合完成。searchMap根据在搜索窗口中输入的X、Y坐标,向MapXtreme WMS Web地图服务发送WMS GetFeatureInfo请求进行搜索。searchResponse接口方法负责解析请求回应后的XML文档,从中获取搜索图元的属性信息,并显示在搜索结果的窗口中。onSelectSearchResult接口方法则用于响应当鼠标点击搜索窗口中属性值时实现“属性查图”功能。为实现将图元按一定比例高亮显示,需要从请求回应后的XML中解析出图元的坐标(串),找出坐标X、Y的最大和最小值,以构成矩形边界。
图元的高亮显示可以采用向地图窗口中添加简单矢量图层的方法来实现。实现关键代码如下:
var ECWVectorLayer = new NCSVectorLayer(map, "VectorOverlay");
ECWVectorLayer.objectNumPoints = 0;
ECWVectorLayer.setMode("filledpolygon");
ECWVectorLayer.lineThickness = 1;
ECWVectorLayer.penColor = "#000000";
ECWVectorLayer.fillColor = "#FF0000";
for(var i=0;ivar nodeX = nodecoord[i].getElementsByTagName("X")[0];
var nodeY = nodecoord[i].getElementsByTagName("Y")[0];
var valueX = nodeX.childNodes[0];
var valueY = nodeY.childNodes[0];
if((valueX.nodeType == Node.TEXT_NODE) &&(valueY.nodeType != Node.TEXT_NODE)){
if(i==0){
ECWVectorLayer.mouseDown(valueX.nodeValue, valueY.nodeValue);
}else{
ECWVectorLayer.mouseUp(valueX.nodeValue, valueY.nodeValue);
}}}
ECWVectorLayer.setTransparency(0.3);
ECWVectorLayer.redraw();
需要指出的是,若需同时创建多个简单矢量图层,则需要更改NCSVectorLayer类的源代码。首先将代码中的"VectorOverlay"字符串全部替换成“this.layerName”,然后再利用构造函数的第二个参数layerName将新建的图层名传递给this.layerName,从而避免了因出现相同图层名"VectorOverlay"而导致的错误。
4)查询功能。需要queryLayers、queryResponse、onSelectQueryResult三个接口方法配合完成。实现过程与搜索功能类似,这里不再赘述。
3 结束语
Image Web Server与MapXtreme的集成,实现了基于影像数据和基于矢量数据的WebGIS系统的集成开发,做到二者的优势互补。采用Image Integration Framework作为客户端集成开发方案,能大大节省网页界面的設计与开发时间,简化集成开发过程。由于Image Web Server与MapXtreme可部署在网络不同服务器中,这种集成方式也适用于各级政府部门的基础地理信息数据的集成共享。随着高分辨率遥感影像的逐渐推广应用,这种集成的WebGIS系统将具有更为广泛的应用前景。
参考文献:
[1] 黄琪, 张宗毅. 基于Google软件的农地区高程获取及精度评价[J]. 测绘通报, 2015(2): 51-54.
[2] 刘祥磊, 马静, 江涛. 基于Google Earth管线巡检系统地图数据的制作方法研究[J]. 测绘科学, 2008, 33(2): 141-142.
[3] 苗放, 叶成名, 刘瑞等. 新一代数字地球平台与“数字中国”技术体系架构探讨[J]. 测绘科学, 2007, 32(6): 157-158.
[4] 刘瑞敏, 李华, 王思锴等. 基于Google Earth的地铁亦庄线GPS控制网布设[J]. 测绘通报, 2008(11): 47-49.
[5] 徐胜祥, 徐运清. 孝感市遥感影像数据的Web发布与实现[J]. 测绘科学, 2007, 32(5): 124-126.
[6] 杨翼飞, 唐诗华, 文鸿雁. 基于Google Earth的3S技术在桂林市土地更新中的应用[J]. 测绘通报, 2008, (11): 61-63.
[7] 刘志芳, 付华. 基于WebGIS的旅游信息系统建设[J]. 测绘科学, 2009, 34(1): 162-164.
[8] 刘纯波, 陈云浩, 李月臣. 面向数字城市的超媒体移动地理信息服务引擎[J]. 测绘通报, 2006(4): 21-25.
[9] 韦波. Image Web Server与SuperMap IS.NET的应用集成[J]. 工程勘察, 2010, 38(1): 59-62.
[10] 吴成明. 浅析WebGIS应用系统的开发技术[J]. 测绘通报, 2003(10): 50-53.