光纤检测webGIS系统的设计与实现

时间:2022-10-25 10:02:31

光纤检测webGIS系统的设计与实现

摘 要: 针对企业实际需求,设计和实现了一个光纤检测webgis系统。系统结合物联网与GIS的技术优势,将变电站与光纤网的监测和管理转移到互联网平台上。得益于所使用的开源软件和合理的存储、渲染、切片等地图数据处理机制,所设计的系统具有较好的扩展性、移植性和稳定性。本系统的解决方案也同样适合于其他应用场景。

关键词: webGIS; 光纤检测; 嵌入式; 物联网; 地图; 开源

中图分类号:TP274 文献标志码:A 文章编号:1006-8228(2014)07-10-04

Abstract: Aiming at the actual demand of enterprises, a webGIS system for optical fiber detection is designed and implemented. Combined with the technical advantage of the Internet of things and GIS, the monitoring and management of substation and fiber optic network are transferred to the Internet platform. Benefited from the use of open source software and reasonable mechanism of map data processing, such as storage, rendering and slice, the system designed in this paper has performed with good scalability, portability and stability. The solution in this system is suitable for other similar scenarios.

Key words: webGIS; fiber detection; embedded; the Internet of things; map; open source

0 引言

webGIS是一种在网络环境下存储、分析和处理地理信息的系统,webGIS技术改变了地理信息数据的获取、传输、共享和应用的方式[1]。目前,从国内外的利用和发展现状来看,这项技术的研究和利用并未成熟,主要表现在空间数据的多元性和多语义性使多个webGIS系统之间彼此孤立、无法共享信息。

随着GIS技术的使用日益普遍、市场需求的不断提高和变化,一些亟待解决的问题正逐步突显出来,比如系统结构优化、存储机制、渲染机制等。对于这些问题的解决,仍需更多深入研究才能得出完备的、高效的、普适的解决方案。

本文针对地图数据存储和地图数据渲染问题展开讨论和分析,最终得出解决方案并成功将这一方案运用于光纤在线检测项目中,从而实现了一种具有较好的扩展性、移植性和稳定性的webGIS系统。本文的贡献在于为地图数据存储和渲染方式提供了一种新的解决方案,并且在实际应用中检验了该方案的可行性及系统性能。

较好的移植性和扩展性是本系统最大的特点,这主要归因于本系统使用了对平台无依赖性的服务器端软件,在编程上,本系统使用了具有“一次编译,处处运行”特性的Java语言作为编程语言,并且选择了功能高度模块化的SSH框架作为编程框架。基于这样的选择,本系统同时还具有低成本和高性能的特点。

1 系统结构

如图1所示,本系统采用的是基于B/S架构的三层系统结构:GIS基础数据库、Web应用服务器及Web地图服务器、Web客户端浏览器。基于扩展性和移植性的考虑,本系统中所使用的服务器端软件全部具有开源、可跨平台的特性。

在服务器端,使用可以动态页面和Java应用程序以及处理数据交互的Apache-tomcat作为Web应用服务器,使用开源Web地图服务器Geoserver作为本系统的地图服务器,使用Geowebcache作为本系统的地图切片工具用以生成地图缓存。在数据库的选择上,使用MySQL作为地图空间数据、地图属性数据和网站数据的数据库。在客户端,采用Ajax技术实现地图数据的动态展现及交互,前端页面使用Extjs搭建整体框架。在对地图的操作上,使用OpenLayers作为地图操作的接口工具。

客户端向服务器请求地图数据时,Geowebcache会首先拦截请求,并检查切片缓存区是否存有目标地图数据,若有,则将目标数据以HTTP响应的形式返回给客户端;否则,Geowebcache将请求转发至Geoserver,Geoserver从MySQL中取出地图空间数据并从样式配置文件中获取对应样式,渲染后生成图片地图,再由Geowebcache对图片地图进行切片以作缓存,最后Geoserver取出切片后的地图数据发送至客户端。

2 地理数据存储机制

webGIS系统的响应性能在根本上取决于使用何种存储机制存储地图数据。正是基于系统响应性能的考虑,本系统使用MySQL作为GIS基础数据库。MySQL在5.0之后的版本提供了完整的空间数据存储支持,MySQL的Spatial引擎使用OGC(Open GIS Consortium)定义的WKT(Well-Known Text)/WKB(Well-Known Binary)格式保存地理空间数据,这为提升地图数据的存取速度提供了基础性的保障。

使用MySQL存储地图空间数据是本系统的一个特色,如何将shapefile的矢量地图数据存储进MySQL也是本系统中关键技术点之一。shapefile的电子地图数据使用shp、dbf、fix、prj、qix、shp.sidx、shx这一系列格式的文件分别存储地理空间数据的各项数据。为了将shapefile格式的电子地图数据存入数据库,需要首先借助shp2mysql工具将矢量地图数据导出为SQL文件,然后对SQL文件进行修改,去掉多余的字段,修改部分字段名及数据表名,最后将SQL文件导入MySQL,这就是矢量地图数据的存储过程。

使用MySQL存储空间数据的优势有如下几点。

⑴ 节省存储空间。目前存储地图数据的最常用方式是直接将shapefile格式的矢量数据文件存储在文件系统中[2],但这样往往会占用较大的存储空间,尤其是在存储高清晰度的卫星视图时。但是,使用MySQL存储地图数据可以完全避免这种状况出现。

⑵ 速度快捷。Geoserver对MySQL数据源的支持使得使用MySQL存储空间数据成为了可能。相比于从文件系统中读取大量shapefile矢量数据进行渲染和,从MySQL读取地图数据会更加方便、快捷、高效。因为从文件系统中读取矢量数据速度远比从MySQL中读取WKT数据慢很多。

⑶ 便于交互操作。webGIS往往需要与用户进行交互操作,即用户可以通过在页面上操作地图要素实现对地图数据的修改。使用shapefile文件的GIS系统就很难通过Web编程实现对矢量数据的修改即交互操作。但是,利用Web编程修改MySQL中的数据却可以简单而高效地实现。

⑷ 数据的安全性更有保障。使用shapefile文件的GIS系统的所有的地图数据均暴露在文件系统中,因此存在一定的安全隐患[3]。使用MySQL存储地图数据时,除非操作者获知数据库的系统密码,否则无法修改甚至查看地图数据文件。这样就从根本上保证了地图数据文件的安全性。

3 地图渲染机制

常规的地图渲染机制是先将空间地理数据和地图样式数据加载到客户端,然后由客户端完成对空间地理数据的渲染并生成图片格式的地图,之后再将整张地图图片加载至浏览器进行显示。但这种机制带来的问题是地图在客户端的显示速度较慢,通常会出现卡顿现象,这种现象严重影响了用户体验。

为了提高地图在客户端的加载速度,以获得更高的系统性能,本系统在对空间地理数据进行渲染时采用的是先渲染后加载的机制。这种机制决定了对地图数据的渲染必须在服务器端执行和完成。相对于服务器自身在硬件和软件上的性能来说,这种机制并不会给服务器造成负担。与客户端完成地图渲染的机制相比较,在服务器端完成渲染的机制将会使整个webGIS系统具有更高的地图加载速度。

在本系统的地图渲染机制中,对空间地理数据渲染是在地图数据的时进行的。地图数据时,Geoserver首先从MySQL中取出空间地理数据,然后读取现成的地图样式配置文件(图1中的sld文件)或者读取管理员给定的样式配置。根据指定的样式,Geoserver将空间地理数据进行渲染后生成特定风格的地图并, Geowebcache会对渲染后的地图进行切片处理,并将切片存储到切片缓存区。

4 数据加载机制

数据加载即地图数据从服务器端向客户端的传输。地图文件在网络上传输时通常采用JPG/JPEG、PNG、GIF等位图格式,在图片较大或者网络状况不良的情况下,较低的地图文件加载速度将会使整个webGIS系统的性能变得很差。

在服务器端切片并缓存、在客户端异步下载切片的数据加载机制是一种可靠、有效的地图数据加载机制。这种机制中,地图数据的加载过程需要分为两个部分,一是地图的渲染、切片,二是切片的组织、索引。

4.1 地图切片模型与缓存机制

对地图切片是进行地图缓存的铺垫。地图切片缓存会明显减小整幅地图图像文件的存储与传输数据量,因而可以在很大程度上解决地图加载速度慢的问题。

切片操作是将已经渲染好的一定坐标范围的位图格式的地图图片按照指定的或者默认的缩放级别(比例尺),以及指定的尺寸和存储格式分割成若干行和列的正方形图片(称之为切片),然后将切片以特定的命名规则进行命名,之后再以特定的组织方式存储到数据源[4]。对全部地图进行切片并缓存的操作由Geowebcache完成。

由于这种缓存机制的切片组织方式类似于金字塔结构,所以这种切片缓存机制也被称为金字塔模型的静态地图缓存,这种机制下的切片模型也被称作地图切片金字塔模型。地图切片金字塔模型是一种多分辨率层次模型,从切片金字塔的顶层到底层,地图显示的比例尺依次增大,地图的分辨率也越来越高,但每一层的地图切片所表示的地理范围保持不变[5]。

这种模型是一种四叉树结构,结构的第n层有22n个节点,第0层的节点被称为根节点。假设在第0层的根节点图片中可以看到整个目标区域的地图,那么第1层的4张图片中的每一张图片就只能显示1/4目标区域的地图,在第2级的16张图片中的每一张图片就只能显示目标区域的1/16[6],如图2所示。

作为配合,本系统在客户端也使用缓存策略,即实现服务器端和客户端的双缓存。客户端使用Ajax技术异步加载服务器上的每一个切片,需要哪部分切片就加载哪部分切片,不做多余加载,并在加载完成后对所加载的切片进行缓存。因此,用户在进行交互操作(如移动地图)时客户端就不必重复向服务器请求所有地图切片,而只用加载那些需要的、未被加载的切片,已经加载过的地图切片可以直接从本机获取。这种策略必然在客观上减少用户在地图加载过程中的等待时间。这一策略的使用极大地提升了系统的性能与灵活性,该策略的具体算法流程如图3所示。

4.2 地图切片的组织与索引

地图作为GIS系统交互操作的入口,如何使其能高速显示是GIS系统首先要考虑的问题。解决这一问题需要考虑地图数据的组织方式和地图展现技术两个方面[7]。

四叉树结构的地图切片模型决定了本系统必须采用线性四叉树结构的切片组织模型来建立地图切片的存储与索引机制。所以,切片组织模型也是金字塔结构,模型中每一个切片都代表四叉树中的一个节点。在地图切片索引时,四叉树的查找特性保证了系统能快速定位到目标切片,从而能够高效使用地图切片数据。这种切片组织和索引方式尤其适用于需要具有交互功能的、访问量大且对响应速度要求高的webGIS平台,如向企业提供WebGIS服务的实际应用型网站。

基于金字塔模型的地图切片存储与索引机制的建立包括三个步骤:首先是对地图进行逻辑分块,然后是对地图进行物理分块,最后是对切片按照一定的机制进行编码。

逻辑分块与上文描述的地图切片模型相对应,进行地图切片划分时,从地图左上角开始从左至右并从上至下按行、列矩阵依次划分并编号,编号时需要保证四叉树的层号与地图切片金字塔模型的层号保持完全一致(见图2)。

物理分块是对地图图片进行物理切割生成地图切片,这一操作必须要在逻辑分块完成之后进行。为了避免切片重新拼接成地图时会出现“缝隙”,分块操作时需要对边界切片中的多余部分用默认像素进行填充。编码是指将分块所得的地图切片按切片所在的行号、列号编号保存。

Geowebcache会根据指定的或者默认的缩放级别(比例尺)对全部地图进行切片并缓存。不同层级上的地图切片以不同的结构组织,层级组织名称(编号)可由地图切片金字塔的层数及地图的缩放级别按照一定的算法换算生成。地图切片的数量会随金字塔层数的增加而剧烈增多,将过多的数据文件存储在同一存储区域中会导致对数据的管理和维护有困难。为了维护和管理方便,需要对每一层切片文件再建立索引,可直接取地图切片时的切片组织行列式的行号数字作为索引。切片缓存文件组织结构的组织形式如图4所示。

地图切片的索引可用二维数组存储,每个二维数组对应一层切片矩阵,每个数组元素都是一个地图切片的存储路径,元素的下标值与它所存储的地图切片在矩阵行列中的行列号相同。另外,切片矩阵所对应的层号可使用一维数组存储,数组各元素的索引与切片矩阵的层号相对应[8]。具体的索引布局如图5所示。

服务器收到客户端发来的地图数据请求后会根据客户端请求的目标地图范围索引到切片缓存区的对应位置,若存在目标数据的缓存切片,则直接取出目标切片返回给客户端。直接使用文件系统的形式组织和管理地图切片不便于对地图数据进行数据操作,而且也不利于提升整个webGIS系统的响应速度和稳定性。在统一的管理平台的情况下,对大量的地图数据切片文件进行维护和更新会比较繁琐而低效。使用数据库来管理数以千计甚至数以万计的地图切片文件是最安全有效的方式,通过地图数据库管理平台,对地图切片的更新与维护变得简单而高效。通过各方面性能的比较与选择,本文使用MySQL作为本系统的地图数据库。

为了加快地图切片的加载速度,必须对切片的索引建立一种高效、可靠地机制。由于不同层级的切片的组织方式不同,所以需要对不同层级的切片建立不同的索引机制,这样才能获得较快的响应速度,并兼顾了后台地图数据管理、快速和前台地图快速展现,这种机制可以应用于绝大多数的webGIS应用。

5 结束语

本论文针对企业的应用需求,设计和实现了一个具有高扩展性、高移植性、高稳定性、高性能的webGIS系统。经过实际测试,该系统表现出的优秀性能完全满足了企业的实际应用需求。该系统的高扩展性使得该系统的解决方案也同样能解决其他场景下的GIS问题。

该系统与其他相关研究和应用的最大区别在于,系统使用了对象关系型数据库存储空间地理数据,并使用了先渲染后地图数据处理机制。在数据加载时,为了加快速度,参考并使用了其他系统的地图切片技术。虽然该系统所提供的方案具有解决GIS问题的普遍意义,但在服务器端的性能优化仍然是需要继续考虑和解决的问题。

参考文献:

[1] 高志敏.WebGIS中若干关键技术研究[D].浙江工商大学硕士学位论文,2011.

[2] 李晓欢.基于WebGIS的地图共享系统的设计与实现[D].北京邮电大学硕士学位论文,2009.

[3] 商秀玉.WebGIS海量瓦片数据管理引擎的设计与实现[D].浙江师范大学硕士学位论文,2012.

[4] 黄梦龙.瓦片地图技术在桌面端GIS中的应用[J].地理空间信息,2011(4):149-151,193

[5] 黄杰.海洋环境综合数据时空建模与可视化研究[D].浙江大学硕士学位论文,2008.

[6] 苏旭明,谭建成.WebGIS中瓦片地图关键技术研究[J].北京测绘,2012.2:9-12

[7] 曹海涛,贾博,张波.移动GIS切片地图展现技术[J].计算机系统应用,2013.12:215-218

[8] 周沛.智能交通系统中的瓦片地图技术研究与应用[D].同济大学硕士学位论文,2008.

上一篇:HDFS混合加密保护方案的设计 下一篇:亚马逊公司的财务故事