APP下载

基于WebGIS的空间数据在线采集系统的研发

2017-09-10井燕武曾新超蒋前凯

科学与财富 2017年22期
关键词:空间数据

井燕武+曾新超+蒋前凯

[摘要]本论文在WebGIS原理和Web关键技术的基础上,研究了基于Google地图的空间数据采集与建库的方法。综合利用Google Map API和Apache、PHP、MySQL等软件,设计了一个基于Google地图进行矢量数据在线采集的WebGIS信息系统。实现了矢量数据的在线获取、空间数据存储、在线显示和数据库访问服务接口等功能。

[关键词] WebGIS;空间数据;在线采集

前言

GIS技术的使用已经越来越广泛,如今有大量的商业GIS软件可以提供GIS技术支持,但成熟的GIS商业软件的使用不仅技术门槛较高,而且经济成本也比较高,制约了GIS技术的推广和发展。使用WebGIS可以使更多的普通用户能够使用和学习GIS技术,以Google地图为主的大量的网络地图的出现给GIS的发展作出了巨大的贡献。目前大部分的网络地图中的数据主要以栅格形式提供给用户,在某些使用环境下不能满足要求,也没有充分的利用地图资源[1]。但是,利用Google地图提供的API开发接口,通过开发接口进行二次开发,使得通过Google地图在线采集和显示矢量数据成为可能,增强了网络地图的功能,同时也使得普通用户从单纯的数据使用者变成数据提供着,丰富了GIS数据的来源。为了充分利用Google地图的资源,以在线方式获取矢量空间数据,本论文在分析WEBGIS关键技术的基础上,设计了一个基于Google地图进行矢量数据采集的WebGIS信息系统,实现了矢量数据的在线获取、空间数据存储和在线显示等功能。本论文参考OGC中的相关标准,研究了基于Google地图的数据采集与建库方法,设计了空间数据的存储模型,实现了空间数据的MYSQL关系数据库存储与管理。重点研究了WebGIS信息系统的建立方法,利用Google Maps API和Ajax技术编写Web前端应用程序,使用Apache网络服务器和PHP语言设计服务器端程序。用户可以通过浏览器基于Google地图进行矢量数据采集,并能将采集的空间数据上传至服务器端,在服务器端处理后将其存储至空间数据库中,为了检验采集存储矢量数据的正确性,还研究了在Google地图中加载显示空间数据库中的矢量数据的方法和技术。

1 系统设计

1.1 设计目标

(1)通过WebGIS技术,在Web前端与Google地图交互采集空间数据,再将采集的数据上传到Web服务器端,并在Web服务器端对数据进行必要的处理;

(2)根据空间数据数据量大和空间数据记录的变长性等特点,对在线采集的数据使用专门的空间数据库来进行管理,本设计中的空间数据库将基于MYSQL关系数据库实现,数据模型将参照OGC的相关标准;

(3)通过Web客户端对采集的空间数据进行加载并可视化,同时提供空间数据接口用来查询图层信息以及几何对象信息。

1.2 设计原则

(1)系统结构合理,对系统功能模块进行构件化处理,便于系统功能的扩展与更新,同时也便于系统的维护;

(2)系统人机交互性强,拥有简介的操作界面,具有良好的操作性;

(3)系统自身带有自检功能,当操作出现错误后,对错误的操作进行提示;

(4)对系统数据结构进行优化,确保程序的流畅运行以及较少的空间占用。

2 系统功能结构设计

2.1 系统功能结构划分

基于WebGIS的空间数据在线采集系统主要由四个功能模块组成,包括:地图交互、数据采集、数据存储、数据访问。

其中,地图交互模块功能包括:地图基本操作、图层选择、空间信息查询;数据采集模块功能包括:空间信息采集、属性信息采集;数据储存模块功能包括:对象图层创建、图层的插入;数据访问模块功能:集合信息储存表达式的获取、在Google地图上的加载,图1为功能结构图:

2.2 系统架构

本系统利用B/S模式与GIS相结合,将系统架构分为三层:浏览器客户端层、服务器端层、数据层。

浏览器客户端层:由于本系统是瘦客户端模式,因此客户端层只需要安装一个浏览器就能够其进行操作,免去了系统配置的繁杂[2]。对于开发而言,客户端层分为普通业务框架以及GIS地图框架。其中普通业务框架的开发使用HTML、CSS、JavaScript完成,对应的GIS地图类型框架采用Google Maps API进行开发。

服务端层是业务逻辑实现的主要层,数据采集以及数据的储存都需要经过服务端层的逻辑调控,由于系统是基于Web架构的,因此需要采用网络服务器,本系统使用的是Apache服务端软件,而服务端业务逻辑的实现采用PHP进行编写实现。

数据层是系统模块的支撑,本系统数据库采用MYSQL进行数据的存储。同时,集合对象的储存采用WKB储存模式,同时空间数据库的储存遵循OGC标准。图2为系统架构图:

3 系统关键技术

3.1 空间数据库技术

本系统是以关系数据库存储模型实现空间数据的存储。空间数据库的几何信息的存储模式通常有WKT(Well-known Text)和WKB(Well-known Binary)两种[3]。

WKT方式基于一套标准语法,使用括号及其他符号将文本和坐標值组织起来,从而重构几何。其中文本信息是大小写不敏感的,表1描述了使用WKT表达的简单几何:

WKB方式使用连续的二进制字符串描述几何。二进制字符串的组织通常遵循一定的标准,以实现数据的规范化和可访问性。本设计将参照OGC中关于WKB表达的标准来组织二进制字符串。

同时使用空间数据引擎SDE来管理,SDE是一种空间数据库管理系统的实现方法,即在常规数据库管理系统之上添加一层空间数据库引擎,通过SDE 可以在关系型数据库系统中存放和管理空间地理数据,并且将地图数据的空间地理信息与属性信息联系起来,通过该方式,使空间地理数据与属性数据保持了同步性。

3.2 Ajax技术

本系统通过Ajax来完成客户端与服务端之间的信息交互,AJAX 是 Asynchronous JavaScript and XML的简写,即异步的 JavaScript 和 XML。

Ajax 并不是一种新技术,它实际上是几种技术的组合,包括:

o基于 XHTML 和 CSS 标准的表示;

o使用 DOM(Document Object Model)进行动态显示和交互;

o使用 XMLHttpRequest 与服务器进行异步通信;

o使用 JavaScript 操作绑定。

Ajax技术可以部分更新web 页面数据,不用刷新整个页面,所以使用Ajax技术可以极大的减小客户端与服务器端的通信数据量,大约只有原来的5%左右,可以将更多的处理任务交给客户机来完成,减小了网络服务器的压力[4]。

3.3 Google Maps API开发技术

Google Maps API是Google自己推出编程API,可以让全世界对Google Maps有兴趣的程序设计师自行开发基于Google Maps的服务,建立自己的地图网站。Google地图分多个层次,自下到上分为G MAP MAP PANE(最底部的地图),G MAP MARKER SHADOW PANE(地标的影子),G MAP MARK-ER PANE(地标),G MAP FLOAT SHADOW PANE(信息窗口的影子),G MAP MARKER MOUSE TARGET PANE(捕捉鼠标响应层),G MAP FLOAT PANE(信息窗口层)[5]。

本系统所用到的Google Map API 功能有:

(1)Google.maps.Map对象:通过Google.maps.Map对象可以创建一个地图并插入到Web页面中;

(2)Google地图控件:利用Google地图控件,可以实现对地图的平移、缩放、比例尺控制等基础操作;

(3)地理标记:地理标记是Google地图的一个重要功能,使用地理标记可以在Google地图中标记点,添加文本注记。标记是通过google.maps.Marker类实现的,实例化一个标记点时需要指定标记点位置和标记所属的地图的ID。

(4)InfoWindows对象:通过InfoWindows对象可以在页面上显示被标记的地理对面更对的空间信息以及非空间信息。

3.4 MYSQL数据库

本系统以MYSQL5.6关系数据库为基础,使用phpMyAdmin作为数据库管理软件,建立空间数据库。

系统中主要用到的MYSQL数据类型有INT/DOUBLE/VARCHAR/BLOB等。其中INT数据类型占用4字节,取值范围为(-2 147 483 648,2 147 483 647),用于表达要素标识等整数值信息;DOUBLE数据类型占用8字节,取值范围为(1.797 693 134 862 315 7E+308,2.225 073 858 507 201 4E-308),0,(2.225 073 858 507201 4 E-308,1.797 693 134 862315 7 E+308),用于记录坐标值信息;VARCHAR数据类型用来记录文本内容,主要是要素的属性等信息,坐标系统的WKT表达也使用VARCHAR数据类型,其大小为0-255个字节,为变长字符串;BLOB数据类型为二进制大数据块,存储二进制形式的长文本数据,长度为0-65 535个字节,设计中使用WKB方式存储的几何数据都是以BLOB数据类型存储的。

4 系统功能的实现

4.1 数据采集功能的实现

空间数据的采集将在WEB浏览器中实现。访问数据采集的Web页面,底图直接显示为Google地图,点击添加要素按钮后,用户可以在地图窗口中开始绘制图形,每绘制一个点,将创建一个该点的地理标记,同时实时的更新地图视图,显示已经繪制的轨迹,绘制完成后点击提交按钮,便将该要素上传到服务器端。用户也可以在Web页面上新建图层,输入图层名称,选择图层的几何类型。实现流程如图3所示:

4.2 数据储存功能的实现

WEB服务器端的PHP页面接到来自网页的请求后,首先通过应用层的代码将来自Web页面的数值类型的数据转化为二进制串形式的数据,然后再连接收据库,将得到的数据插入到数据表中。需要创建图层时,首先要向几何列表中添加一条记录,然后分别创建该图层的要素表和几何表。

服务器端接受到Web前端上传的矢量数据后,需要对数值坐标进行二进制化处理,并且按照WKB标准对处理后得到的二进制值进行连接,将一个几何对象的所有信息都表达在二进制字符串中去。同时几何表中还存储了几何对象的最小外接矩形信息,需要在服务器端对所有的坐标数值进行判断,得到最大和最小的坐标值,和二进制字符串一同作为参数构建SQL语句,插入到数据库中去。实现流程如图4所示:

4.3 数据访问接口的实现

基于MYSQL用户定义函数实现,调用该数据接口,需要在WEB服务器语言PHP中调用MYSQL数据库的用户定义函数。暂时提供了2个数据接口,一个用来查询数据库中已有的所有图层的信息,另一个用来查询具体的某一个几何对象的信息,输入参数为要素的FID。

查询所有图层时,调用数据库中的用户定义函数getLayer(),得到的返回值的类型是数据表,使用mysql_fetch_row函数得到数据表中的每一行记录,返回值$row是数组形式的数据,可以直接使用数组索引访问其中的值。

查询某一个要素的几何信息时,调用要素几何信息查询接口,需要的输入参数为要素的FID,查询的结果以数据表的形式给出,通常情况下,返回的数据表中只有一行记录,得到数据行之后,使用数据行的数组索引便可得到数据行中的每一个单元格的值。实现流程如图5所示:

5 结束语

空间信息已经在日常生活中扮演了越来越重要的角色,人类大部分的活动都与空间信息息息相关,空间信息的采集与存储对于空间信息的使用来说至关重要。本系统基于Google地图进行开发,通过本系统,用户可以更为方便地采集空间数据,采集的数据内容也完全由用户自行决定,增强了空间数据的交互性,使普通用户也可以从数据使用者变成数据提供者,丰富了空间数据的来源。

空间信息通常都具有数据量大,数据不规则等特点,本系统实现了基于关系数据库设计的空间数据库,使用数据库存储空间数据,提高了数据存储和访问的效率。同时提供了数据访问接口,可以使采集的数据被更广泛的使用。

本系统的很多功能还存在着许多缺陷,例如数据的安全性、系统数据处理的效率以及人机交互界面的优化等,这些都是下一步的研究方向。

参考文献

[1] Deakin Mark, Al Waer Husam. From intelligent to smart cities. Intelligent Buildings International,2011,Vol.3(3).

[2] 曲鑫,张伟.云服务平台下的地理信息系统技术研究[J].测绘与空间地理信息,2014,37(9) : 113 -115.

[3] 袁一泓,高勇.面向对象的时空数据模型及其实现技术[J].地理与地理信息科学,2008,(03)

[4] 陈建平.基于Google Map与Ajax的Web GIS应用解决方案研究[D].西北农林科技大学,2009.

[5] 王芳.Google地图开发研究[J].计算机与数字工程,2010(3):146-149.

猜你喜欢

空间数据
基于多层索引及缓存的空间数据管理系统
GI S空间数据处理技术在地图制图中的应用
GIS空间数据与地图制图融合技术
云GIS环境下分布式空间数据集成技术研究
元数据驱动的多中心空间数据同步方法研究
基于文件系统的分布式海量空间数据高效存储与组织研究
嵌入式环境下地理空间数据组织技术研究
客户端空间数据缓存策略
多源空间数据同名实体几何匹配方法研究