前言
在开始动笔之前,我们曾踌躇再三,如今的ArcGIS Server等大型GIS服务器发展得如火如荼,提供的快速开发工具高效而强大,再来撰写一本以ArcIMS为主轴的WebGIS开发教程是否有其现实意义和实用价值?但之后了解的许多情形,让我们终于下定了这一决心:
■ 如果你只想在Web上发布一张地图并提供简单的查询操作,那么ArcIMS足够了;
■ ArcIMS 的 ArcXML 交互方式简洁,可足以让每个开发人员从中了解基本的WebGIS原理,这是学习其他更复杂技术的基础;
■ Ajax的大量使用,使得纯浏览器端的应用开发更加简单和方便;
■ WebGIS开发不是简单地拖放Web控件,而是拥有自己的一套幕后逻辑;
■ ……
这是一堆技术上的原因。
第二个让我们下定决心的现实是,随着许多GIS服务器客户端应用程序(ADF)的封装越来越严密,开发人员甚至无须编写一行代码就能得到基本功能的Client。在“向导式”快速开发的背后,越来越多的WebGIS 开发人员甚至连基本的 Web知识都不再具备——既然拖拉一下地图控件就能实现“强大的”功能,为什么我们还要想更多的问题呢?倘若真是如此,这样的“技术人员”可替代性是否太强了?
第三个让我们下决心的原因是与 Web 相关的东西太多太复杂,基于浏览器的应用程序的开发比桌面端应用程序复杂得多(开发人员要考虑不同的浏览器环境)。作为一种Web实现,WebGIS自然也不能够免俗,当开发商将一堆堆名词和术语包裹在WebGIS表面时,即使不甘心只会一路点击“Next”的初学者都会有力有不逮的感觉,逐渐地,你将无力剥开它表面那层厚厚的包装,不信,你去翻翻ArcGIS Server的ADF看看!
如之奈何?
在这本书中,我们对这三个问题进行了既有区分、又相统一的回答:
首先,我们介绍了 ArcIMS 这一重要的 GIS 服务器和它的交互语言 ArcXML,尽管ArcIMS在底层架构上与ArcGIS Server等毫无联系,并且有多次传言说它将被ESRI舍弃,但作为一种仍然得到广泛应用的GIS服务器,对初学者和有经验的Web开发者而言,仍然具有非常重要的实用价值,至少,你能通过它明白所谓的WebGIS开发到底是怎么回事。
由于要解释WebGIS开发是怎么一回事这个问题,我们舍弃了ArcIMS的Web ADF介绍,虽然这是一个非常优秀的快速开发框架,但却封装了太多的信息。再加上 Ajax 技术在Web上的影响,我们开始使用Ajax技术来编写一个与ArcIMS服务器进行交互的纯浏览器端应用。当然,这一过程借鉴了 ArcIMS HTML/JavaScript 客户端的原型,但在请求发送和响应处理上却大大不同。最后,我们将所有的 js 文件都内联到一起,以一个 js链接的方式嵌入HTML页面中进行应用(如果你使用过Google Maps API或OpenLayers API,就会发现这种用法的简洁性)。
在开发完这个ArcIMS客户端后,我们开始介绍WebGIS开发的外延知识:OGC、SVG和瓦片式GIS。这一部分的内容并非要深入讨论某个主题,它是用来告诉我们的WebGIS开发人员,除了 ArcIMS,你还要了解这么多基本知识以扩充自己的知识面,这样才能让你建立起自己大脑中的“知识地图”,从而更快地吸收和领悟新的知识。
总之,本书的最终意图不只是为了告诉读者WebGIS该如何开发,而是要尽可能地将主流WebGIS开发过程中所使用的那些业已被封装的技术和知识,通过一种完整有序的方法进行介绍,使得无论是WebGIS的初学者,还是打算奔向更复杂的WebGIS服务器的有经验者,都能了解一些“幕后”的秘密——例如,在地图上进行量测使用的绘图技术因为浏览器的不同而分为VML、SVG,甚至是Canvas,而如果你对它们的了解程度不仅仅局限在了解名词的水平,而且还知道基本的差异和代码写法,岂不是更妙?!