采用Oracle的Google地图兴趣点抓取和发布的WebGIS系统
2015-02-21章欣欣何原荣
章欣欣, 何原荣
(厦门理工学院 计算机与信息工程学院, 福建 厦门 361024)
采用Oracle的Google地图兴趣点抓取和发布的WebGIS系统
章欣欣, 何原荣
(厦门理工学院 计算机与信息工程学院, 福建 厦门 361024)
通过Google Maps API开发实现对兴趣点的抓取,以Oracle Spatial点对象字段实现存储,借助Oracle Maps开发WebGIS系统,实现Google Maps兴趣点数据快速抓取,并与对应的属性和地图符号在Oracle中一体化存储,最终实现同数据库中已有的矢量和栅格数据的叠加和集成发布.对桂林市漓江流域旅游资源空间数据构建进行应用实践,结果表明:该系统可帮助开发者快速构建集兴趣点位置、属性、显示符号为一体的空间数据库,大大缩短开发周期并有效降低开发成本.
Google Maps API; 兴趣点; Oracle Spatial; Oracle Map.
针对兴趣点数据(POI)的采集和获取是构建专题地理信息系统(如旅游[1]、大众生活服务)的基础,常见数据采集的方式包括传统测绘、从专业资质认证机构购买、遥感影像解译等[2].但这些方式在资金成本、技术门槛、采集周期等方面都有较高的要求,对于一般中小型IT企业、学校研究机构,以及个人开发者而言,往往无法满足[3].如何以较低的成本,快速、简易、准确地获取所需的兴趣点数据,是当前地理信息系统(GIS)应用推广亟待解决的问题.Google拥有全球最大数据量、覆盖最完整的兴趣点定位数据资源,同时,提供地图应用编程接口Google Maps API供用户提取坐标,并在此基础上进行GIS的二次开发.因此,基于Google地图或者其他可提供API接口的地图服务产品,进行兴趣点数据的提取是目前快速获取所需数据的有效手段.直接利用Google Maps、加载本地数据、通过文件格式转换、借助抓取程序是基于Google数据的GIS常见的4种开发方式[4-7].Oracla作为目前商用关系数据库代表产品之一,具有高性能、可靠性强、支持多用户并行操作和分布式处理等优点.在此基础上,从Oracle 7.1.6开始,通过Oracle Spatial模块进一步扩充和完善空间数据存储与操作功能,使其在空间数据库方面走在世界前列[8-12].本文基于Oracle的空间扩展部件,通过Google Maps API开发抓取兴趣点,并集成录入相应的属性存储于Oracle中;利用存储的SVG符号和已有的空间数据,借助Oracle Maps开发WebGIS系统,实现Google Maps兴趣点数据快速抓取入库与集成发布.
图1 系统流程图
1 系统功能设计
Google 地图API基于JavaScript,其可将Google 地图嵌入用户自定义的网页中,还提供了一系列地图处理(距离、面积测量)和向地图添加自定义内容的服务.在使用API之前,需要在Google上申请一个API密钥,将申请的密钥嵌入网页的〈Script〉标签中,即能调用Google Maps API.
系统主要完成地图浏览、经纬度抓取、属性录入、 SVG符号化及WebGIS快速发布等功能. 系统流程,如图1所示.
2 开发与实验
1) 地图初始化.在页面中指定一个文档对象模型(DOM)节点,创建一个div 标签元素作为地图容器,可指定地图的显示样式,一般代码如下
〈div id=“map” style=“width: 1348px; height: 611px;”〉〈/div〉
在初始化地图之前,需先以对象变量的形式创建一个Map Option地图对象,其包含地图缩放级别、地图中心等元素.代码如下
var mapOption={
zoom:9,
center:lanlng,
mapTypeId:google.maps.MapTypeId.ROADMAP,
title:“选为地址”,}
如果将地图的中心设为某一已知待定点,则还需创建一个latlng值,提供坐标位置信息,将其作为构造函数的参数传递给Map Option.通过google.maps.Map对象初始化地图,如图2所示.代码如下
map=new google.maps.Map(document.getElementById(‘map’),mapOption)
2) 经纬度抓取.鼠标左键点击地图上的任意一点,返回该点的经纬度,并显示在文本框内.在点击地图之前,需在页面中添加一个Click事件监听器,以响应用户在地图上的点击,并获取所点击点的经纬度,如图3所示,具体代码如下
google.maps.event.addListener(map,‘click’,function(event) {
lat.value=event.latLng.lat();
lng.value=event.latLng.lng();
addMarker(event.latLng);});
图2 地图初始化显示效果 图3 兴趣点抓取与属性编辑界面
然后,将提取抓取的点数据坐标及属性数据传递到本地服务器进行保存,Oracle数据表的SQL语句如下
String sql = “insert into NEWPOINT values(“‘
+mc+”’,MDSYS.SDO_GEOMETRY(2001,21418,MDSYS.SDO_POINT_TYPE(“‘+x+”’,“‘+y+”’,null),null,null))”;
其中,x,y为在Google Maps抓取的经纬度坐标,mc为输入的属性字串,提交后完成一个抓取点的空间信息和属性信息的存储.
3) SVG地图符号绑定.由于Oracle Spatial尚没有地图符号管理工具,缺乏关联的符号使数据的内容过于单一,难以辨认.为了将抓取并存储在Oracle的坐标点按地图图式进行Web可视化,Oracle Spatial 提供地图符号数据表USER_SDO_STYLES,如表1所示.采用SVGDEVELOPER或Inkscape等SVG图形工具绘制相应的地图符号,保存成*.svg文件后,上传到CLOB类型的DEFINITION字段中.
表1 Oracle Spatial 符号数据表USER_SDO_STYLES的存储结构
以旅游景点地图符号为例,采用Inkscape绘制符号存储到CLOB字段的代码如下
〈?xml version=“1.0” encoding=“utf-8” standalone=“no”?〉
〈svg width=“640” height=“480” version=“1.1” xmlns=“http://www.w3.org/2000/svg” xmlns:xlink=“http://www.w3.org/1999/xlink”〉
〈circle cx=“241.5” cy=“112.5” r=“64.5” fill=“none” stroke=“#000000” stroke-opacity=“1” transform=“matrix(1,0,0,1,3,5)”/〉
〈polygon points=“305 119,206 170,211 59” fill-rule=“evenodd” fill=“#00000” fill-opacity=“1” stroke=“#000000” transform=“matrix(0.002,-0.405,0.6149999,0.003,172.742,200.953)” /〉
〈line x1=“222” y1=“141” x2=“222” y2=“141” stroke=“none” stroke-opacity=“0”/〉
〈line x1=“228” y1=“143” x2=“228” y2=“143” stroke=“none” stroke-opacity=“0”/〉
〈line x1=“241” y1=“148” x2=“226” y2=“143” stroke=“none” stroke-opacity=“0”/〉
〈line x1=“217” y1=“139” x2=“217” y2=“139” stroke=“none” stroke-opacity=“0”/〉
〈rect x=“222” y=“118” width=“7” height=“42” fill=“#000000” stroke=“#000000” transform=“matrix(1.3,0,0,1,-67.65,0)” /〉
〈rect x=“260” y=“119” width=“9” height=“41” fill=“#000000” stroke=“#000000”/〉
〈/svg〉
采用Map Builder连接数据库后,在列表中可以显示相关的符号样式,绑定到相应的抓取的点图层的显示效果,如图4所示.
图4 SVG符号显示效果图
4) 集成发布.采用文中程序调用Google地图框选抓取桂林市漓江流域旅游资源调查中所需要的景区、餐馆、酒店、购物、会展等5类数据集,如图5所示.构建兴趣点数据库,与采用Oracle Map Builder导入的同样为WGS-84坐标系的遥感背景图层进行叠加,基于Oracle Mapviewer发布数据界面,如图6所示.对比结果表明:基于Google API开发抓取兴趣点到本底数据进行集成发布,方法是可行的,不仅可以实现兴趣点数据的快速采集,也能充分利用已有的本地化数据资产,为进一步集成开发提供了高效的数据源构建渠道.
图5 原始兴趣点在Google地图中的显示效果 图6 抓取的兴趣点在Oracle Map中的显示效果
3 结束语
通过Google Maps API实现对兴趣点的抓取,以Oracle Spatial点对象字段实现存储,可与其对应的属性和地图符号实现一体化存储,借助Oracle Maps开发WebGIS系统,实现Google Maps兴趣点数据快速抓取入库,及其与已有的矢量和栅格数据的集成发布.帮助应用开发者快速构建空间数据库、集成发布,大大降低开发周期.结合已有的桂林市漓江流域(城区)旅游资源调查实验数据,验证了这一技术方案的可行性与优越性.
[1] 骆炎民.泉州旅游交通WebGIS的设计与实现[J].华侨大学学报(自然科学版),2007,28(1):23-26.
[2] 王建敏,黄旭东,于欢,等.遥感制图技术的现状与趋势探讨[J].矿山测量,2007,35(1):38-41.
[3] 杨立法.基于Google Maps API V3的地理数据采集技术[J] .遥感技术与应用,2013,28(5):791-798.
[4] 彭璇,吴肖.Google Map API 在网络地图服务中的应用[J].测绘信息与工程,2010,35(1):25-27.
[5] 游兰,彭庆喜.基于Google Maps API 的地图解析研究与实现[J].湖北大学学报(自然科学版),2010,32(2):161-164.
[6] 戴兵.基于Google Maps API的校园地图设计[J].电脑与技术,2008,15(2):184-185.
[7] 崔金红,王旭.Google 地图算法研究及实现[J].计算机科学,2007,34(11):193-195.
[8] 孙晓茹,赵军.Google Maps API 在WEBGIS 中的应用[J].微计算机信息,2006,22(7):224-226.
[9] 巫细波,胡伟平.Google Maps 运行机制以及应用研究[J] .华南师范大学学报(自然科学版),2009,54(2):106-110.
[10] 范新南,陈鹏.COM与WEB技术在地理信息系统中的应用[J].微计算机信息,2003,19(2):75-77.
[11] 何原荣.矿区环境高分辨率遥感监测及信息资源开发利用[M].北京:科学出版社,2014:77-84.
[12] RAVIKANT K,ALBERT G,EURO B.Oracle Spatial空间信息管理: Oracle Database 11g[M].管会生,译.北京:清华大学出版社,2009:26-42.
(责任编辑: 钱筠 英文审校: 吴逢铁)
WebGIS for Google Maps Point of Interest Grabbing and Publishing Based on Oracle Spatial Database
ZHANG Xinxin, HE Yuanrong
(College of Computer and Information Engineering, Xiamen University of Technology, Xiamen 361024, China)
The point of interest (POI) grabbing is realized by using Google Map API, then data is stored in term of point type provided by Oracle Spatial. With the aid of Oracle Maps, a WebGIS system is subsequently developed for the purpose of fast POI grabbing and integrative storage of POI data, as well as its corresponding properties and SVG symbols. Application has been carried out for the Lijiang River Vally tourism resources in Guilin city. The results show that the system can help developers to construct Spatial database very quickly, which combines the location of POI, properties, as well as the displaying symbols. Additionally, it is effective to shorten development cycle and reduce the system cost.
Google Maps API; point of interest; Oracle Spatial; Oracle Map
1000-5013(2015)06-0659-04
10.11830/ISSN.1000-5013.2015.06.0659
2015-10-08
章欣欣(1983-),男,讲师,博士后,主要从事遥感图像处理、土地利用变化建模的研究.E-mail:zhangxinxin@xmut.edu.cn.
国家自然科学基金资助项目(41401475, 41471366); 福建省自然科学基金资助项目(2013J01165); 福建省中青年教师教育科研项目(A类)(JA14231); 厦门理工学院高层次人才科研启动项目(YKJ13022R)
P 208
A