李源泰,李红波,赵俊三
(昆明理工大学国土资源工程学院,云南昆明650093)
开源GIS在WebGIS中的应用初探
李源泰,李红波,赵俊三
(昆明理工大学国土资源工程学院,云南昆明650093)
由于开源GIS的快速发展和功能逐步的完善,尝试利用开源GIS软件实现在网络GIS中的应用,通过运用空间数据库PostGIS、开源OGC服务器GeoServer和WebGIS客户端OpenLayers实现全球H1N1流感疫情地图的发布。目的在于为小型地理信息系统项目探索一些免费开源的解决方法和思路。
开源GIS;WebGIS;PostGIS;GeoServer;OpenLayers
软件开源目前已经成为IT界的一种发展趋势,越来越多的软件加入到开源系统中。在GIS领域开源GIS也是一股逐渐成长并强大的力量,和昂贵的GIS商业软件相比,开源GIS软件不用背负数据兼容、易用性等问题的包袱,开发者能够集中精力于功能的开发,因此开源GIS软件普遍功能很强,技术也非常先进,其背后是来自技术狂热者和学院研究生的大力支持。开源GIS软件目前已经形成了一个比较齐全的产品线。例如,综合GIS软件GRASS;数据转换库OGR、GDAL;地图投影算法库 Proj4、Geotrans;也有比较简单易用的桌面软件 Quantum GIS,uDig;Java平台上有 Map Tools、GeoServer、Map Server则是优秀的开源WebGIS软件。各种空间分析,模型计算尤其是开源GIS领域的强项。
由于开源 GIS已经形成了一系列的成熟的产品,所以完全可以基于开源GIS开发成熟的应用系统。而且毫不逊色于那些昂贵的商业GIS软件。本文目的在于通过探索开源GIS在WebGIS中的应用。实现一个简单的全球H1N1流感疫情分布地图。
虽然实现一个简单的全球H1N1流感疫情地图只是一个很简单的 WebGIS应用,可以不用空间数据库存储,但是使用空间数据库在WebGIS应用中是必不可少的。首先是速度问题,通过数据库对数据优化访问数据比从 shapefile等数据文件中访问的性能更高。其次是多用户支持,空间数据一般都是参考数据,这通常意味着需要在多个用户中共享。存储在数据库中的数据能通过一个标准接口(JDBC、ODBC、PERL/DBL等)来远程访问。最后是空间查询,这也是采用数据库的最大优点。
PostgreSQL是一个功能强大、支持良好的开源空间数据库。PostGIS利用了PostgreSQL的扩展性能,提供了一个强大的空间数据库解决方案。PostGIS提供的空间信息服务功能有:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。
GeoServer是OpenGIS Web服务器规范的J2EE实现,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer可以比较容易的在用户之间迅速共享空间地理信息。
GeoServer主要特性包括:兼容WMS和WFS特性;支持PostGIS,Shapefile,ArcSDE,Oracle,VPF,MySQL,Map Info;支持上百种投影;能够将网络地图输出为JPEG,GIF,PNG,SVG,KML等格式;能够运行在任何基于J2EE/Servlet容器之上;嵌入OpenLayers支持Ajax的地图客户端;除此之外还包括许多其他的特性。
OpenLayers是由MetaCarta公司开发的,用于Web-GIS客户端的JavaScript包,通过BSD License发行。它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范,OpenLayers采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。
采用OpenLayers作为客户端不存在浏览器依赖性。由OpenLayer采用JavaScript语言实现,而应用于Web浏览器中的文档对象模型(DOM)由JavaScript实现,同时,Web浏览器(比如IE,Firefox等)都支持DOM。OpenLayersAPI采用动态类型脚本语言JavaScript编写,实现了类似与Ajax功能的无刷新更新页面,能够带给用户丰富的桌面体验。
OpenLayers所能够支持的格式有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在Openlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。Open-Layers所能够利用的地图数据资源"丰富多彩",在这方面提供给用户较多的选择,比如WMS、WFS、GoogleMap、MSVirtualEarth、WorldWind等。当然,也可以用简单的图片作为源。
在WebGIS框架下实现基于开源GIS的H1N1流感疫情图,其结实现构图如图1所示。
图1 开源WebGIS结构图
4.1 导入空间数据库
首先,下载 shp格式的世界矢量地图,网上有很多免费的矢量地图资源,通过在其属性表里增加两个字段:H1N1和Death字段分别代表确诊人数和死亡人数。并添加最新的各国疫情数据。然后将 shapefile格式数据导入到PostGIS空间数据库。最简单的方法是使用Postgres_home/bin文件夹中的工具shp2psql。它会检测shapfile文件然后创建一个CEEAT TABLE语句和相应的AddGeometryColumn方法,遍历.dbf中的每一条记录,然后创建一个SQL INSERT语句。
shp2psql-s 4326 world_admo.shp World_H1N1> World_H1N1.sql
然后用psql命令将数据导入到PostGIS数据库中,在命令提示符下键入:psql-U postgres postgis 4.2 创建OGC Web服务 GeoServer有一个方便好用的可视化管理界面,可以很方便地添加PostGIS数据。首先新建一个新的名称空间:点击Config->Data->Namespace->new,建立新的名称空间 MyNamespace;然后是新建数据源:点击Config->Data->Stores->new,从下拉框选中PostGIS,设置ID点击New,设置连接PostGIS数据库所需的值;然后保存设置并提交。 然后添加一个新的FeatureType。这里最重要的是设置Style。为了很好的表现H1N1疫情分布情况,就应该根据疫情的严重情况分级显示。这就要新建一个Styled Layer Descriptor(SLD)文件。SLD文件其实就是一种XML格式文件。如果熟悉XML就很容易编写和修改SLD文件。 一种较为方便快捷生成 SLD文件的方法是通过uDig生成。uDig是一个非常友好易用的开源桌面GIS应用程序。利用uDig可以方便的对地图进行可视化的样式设置,方便编辑SLD样式文件。点击XML可以查看生成的SLD文件,设置合适的样式后点击Export就可将此SLD文件导出。导出的SLD文件可以在GeoServer中直接使用,但是这时的样式与图层数据表的名称是相关联的,通用性较差。为了获得最好的通用性,参照GeoServer样例的SLD文件手工进行代码优化后再导入GeoServer。 4.3 Openlayers框架实现Web浏览 OpenLayers作为一个用于开发WebGIS客户端的JavaScript包。其中最关键的类就是Map类,它就像一个容器,web页的div通过以id或name的形式获得map对象,然后layers和control在加载到map上,表现为地图。 实例化一个地图类OpenLayers.Map。 map=new OpenLayers.Map('map'); 以WMS的格式实例化图层类OpenLayers.Layer。 在Map对象上加载Layer对象,并用map.zoomTo-Extent函数使地图合适地显示。 map.addLayer(world_h1n1); OpenLayers中的事件有两种:一种是浏览器事件(比如 onclick,onmouseup等),另一种是自定义的事件。自定义的事件像addLayer,addControl等。 在IE浏览器下的效果如图2所示。 图2 全球H1N1流感疫情地图 通过应用开源GIS实现全球H1N1流感疫情地图的发布。可以看出开源GIS并不是GIS技术狂热者手中的玩具,其功能目前已经相当完善,并能充分完成在某些行业的应用。GIS的要旨是开放,包括体系结构的开放,数据模型的开放以及我们开发者思想观念的开放。而开源GIS正是在开放、集成、标准和互操作上有其独特的优势。 [1] Scott Davis著,蒋波涛译.GIS for Web应用开发之道[M].北京:电子工业出版社,2008 [2] 周文生,毛锋,胡鹏.开放式WebGIS的理论与实践[M].北京:科学出版社,2007 [3]DaiN,M and elL,Ryman A著,姚军,徐锋译.EclipseWTPWeb应用开发[M].北京:人民邮电出版社,2008 [4] James Lee,Brent Ware著.徐祥生 译.开放源码网站开发指南[M].北京:清华大学出版社,2003 [5]高昂.开源GIS客户端项目实践指南[J].程序员,2007(06):23-27 [6] 张大鹏,张锦.基于开源WebGIS软件的110指挥中心警情分析系统[J].科技情报开发与经济,2008(11):32-36 [7] OpenLayers技术文档. http://dev.openlayers.org/docs/files/ OpenLayers-js.htm l.[EB/OL]2009-06-01 Application of Open Source GIS to WebGIS LI Yuantai,LI Hongbo,ZHAO Junsan With the rapid developmentof theopen sourceGIS and thegradualimprovementof its functions,thispaper attempts to fulfill the application of WebGIS w ith the help of the open source GIS and realize the map's of the global epidem ic of influenza H1N1 through the use of spatial database PostGIS,OGC server GeoServer and theopen source client OpenLayers.This paper aims to explore some free open source solutions and ideas for the small geographic information systems projects. open source GIS;WebGIS;PostGIS;GeoServer;OpenLayers 2009-07-17 项目来源:国家自然科学基金资助项目(70973047);房价驱动社会福利聚集与扩散的演化机理及调控绩效研究,李红波,昆明理工大学。 P208 B 1672-4623(2010)02-0100-03 李源泰,硕士,研究方向为三维GIS与虚拟现实 (VR)技术。5 结 语
(Faculty of Land Re source Eiginee ring,Kun ming Uni ver sity of Sci ence and Technol ogy, Kun ming 650093,China)