基于栅矢结合的WebGIS脚本库设计与实现

时间:2022-10-18 07:10:00

基于栅矢结合的WebGIS脚本库设计与实现

摘要:随着WebGIS应用从企业级应用向大众化应用的转变,如雨后春笋般的涌现出一大批WebGIS大众化应用开发商和产品。该文首先比较了当前主流的WebGIS地图服务产品的API,分析其优缺点,然后提出了基于栅格、矢量地图结合的WebGIS脚本库的体系架构和设计思路,接着详细阐述了地图数据的组织如瓦片金字塔模型和表格等,最后总结了脚本库设计开发中应注意的若干问题。

关健词:WebGIS;瓦片金字塔;脚本库

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)10-2418-02

The Design and Implementation of WebGIS Script Libraries Based on Grid Vector Union

ZHONG Wei-xiong

(Information Technology College, China University of Geosciences, Wuhan 430074, China)

Abstract: Along with the transformation of the WebGIS application from professional to popular, large quantities of WebGIS popularity application developers and products emergence as a mushroom. This article has firstly compared current mainstream WebGIS map service products API, and analyzes its good and bad points, then proposes WebGIS script Libraries system construction and the design mentality based on grid vector union. The author has proposed detailedly the organizations of map data such as tile pyramid and table,lastly summarizes the questions which in the script libraries’ design should pay more attention for.

Key words: WebGIS; tile pyramid; script libraries

WebGIS是Internet技术应用于GIS开发的产物[1],自Google成功推出Google Earth后,WebGIS开始从专业领域的企业级应用向大众化应用转变,随后如雨后春笋般的涌出一大批基于Web的地图服务开发商和产品。国外的有Microsoft的Visual Earth,美国国家航空和宇宙航行局联合出品的NASA World Wind,国内有图盟的MapABC、图为先的mapbar、灵图的51ditu、Sohu的Go2Map、亿动的都市圈、阿拉丁的E都市等。这些WebGIS地图服务商和产品的涌现,推动了WebGIS应用的普及,促进了WebGIS技术的进步和发展,也为研究和设计出更好的方法和框架提供了现实依据。

WebGIS地图服务成图的工作流程如图1所示:客户端通过AJAX方式将地图请求的各种参数与服务器端交互,服务器端根据请求的参数通过GIS服务器取得相应的地图数据,并将该地图数据以一定的策略展现在客户端[2]。由此可以看出,脚本库主要负责客户端与服务器端参数的交互,并按照一定的策略将地图以适当的方式展现在客户端。

1 当前主流地图API比较与分析

1)GOOGLE MAP API:Google提供了三种API,即Javascript版、flash版、静态地图,拥有充足的开发资源和文档资源,强大的自定义组件和控件功能。其API操作简单高效,符合一般性系统开发需求。进行开发之前需要在其主页上下载API所需的密钥。

2)MapABCAPI:MAPABC接口全部采用JavaScript进行调用,脚本使用比较方便,但是生成的地图格式为全部为flash格式,暂不支持其他格式的地图。进行开发之前需要在其主页上下载API所需的密钥。

3)其它地图API:如51tidu,yahoo地图API,微软Virtual Earth API,MAPBAR等。

51ditu、Mapbar:国产地图服务,特点类似MapABC,全JavaScript的调用方式,在WEB上调用方便,但接口灵活性差,不合适WAP网站的开发。

yahoo地图API:接口功能与Google类似,接口类型相比google更为方便和灵活,但是目前雅虎地图API服务还不支持中国地图。支持静态地图生成。

微软Virtual Earth API:功能较为全面,接口设计灵活性,可封装性也很好。支持静态地图服务端生成。

总体来说,GOOGLE API的接口丰富,灵活但较为复杂,二次开发可以实现更多的功能但上手有一定难度;而MapABC API的接口较少,采用傻瓜式的封装,使得二次开发很容易上手,但相对来说能实现的功能比较有限。

因此,对企业级的专业领域的应用,脚本库可以借鉴参考GOOGLE MAP API的封装;而对于大众化的通用应用,脚本库可以借鉴参考MapABC API的封装。在实际脚本库的开发中,我们应根据不同的需要,设计不同的封装模式。

2 体系架构和设计思路

脚本库的体系架构可以选用当前流行的Flex+Actionscript开发模式,也可以选择传统的DOM+Javascript开发模式。两种开发模式相比,前者拥有更快的响应速度、更绚丽的界面表现、更丰富的界面元素、无浏览器兼容性问题等优点[3],但也存在投入大、产品线长、中文资料稀缺等缺点,实际开发中,应根据实际需要和情况选择不同的开发模式。

通过对目前主流地图API的分析,我们将脚本库设计成1+1的方式,即核心库加UI库。核心库可分为全局方法类、地图基本显示类、地图查询类、地图绘图类等。UI库可分为鹰眼、导航条、右键菜单、点定位、flash、地图中心准星、仿真三维Toptip、进度条、版权Log、放大镜、标注、测量、操作状态、比例尺、VIP信息点等。

结合MAPGIS IMS脚本库,地图显示流程图的设计如下:

1)初始化核心库和部分UI库。

map=IMSMaps(“zdims”,IMSMapConfig); //地图参数

map.addcontrol(IMSNavigation,…); //导航条

map.addcontrol(IMSEagleMap,…); //鹰眼

map.addcontrol(IMSOperStatus,…); //操作状态

map.addcontrol(IMSLoader,…); //进度条

map.addcontrol(IMSScale,…); //比例尺

map.addcontrol(RtMenu,…); //右键菜单

上一篇:基于数据元的数据交换规范研究 下一篇:项目教学法在中职VC#.NET程序设计教学中的实践...