WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-10 19:56:58

点击下载

作者:蒋波涛,朱强,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS

WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS试读:

前言

中所表达的,ArcIMS及其相关技术和手段,在不少要在WEB环境中实现基本的空间信息及GIS功能发布的场合还有其用武之地;WebGIS开发须要开发者们了解很多隐藏在控件后面的“所以然”;要真正进入到Web 2.0的天地,自如地追随WebGIS的最新潮流,我们有很多技术概念和术语要了解。对这三个方面的问题,本书都给予了深入浅出的解答与提示。对于要用ArcIMS进行开发的工程师而言,这本实践手册是十分实用的。而对于要进一步涉足第二代WebGIS开发的同仁,这部书的内容也提供了一个不错的台阶和铺垫,是一个不错的过渡。波涛老弟硕士毕业没几年,已有关于GIS开发的一本译作和三本专著问世,可谓青年才俊。有趣的是,他不是GIS专业毕业的,却在不长的时间里捣鼓出这些本销量和反响都不错的GIS开发专著来;他也不是学的软件专业,却把软件开发的许多知识和工具手段运用自如,吃透嚼烂后深入浅出地娓娓道来,给人以帮助与启发。他现在城市规划管理部门工作,以他融会贯通的悟性和脚踏实地的钻研劲,整日浸润其间,在GIS应用开发和城市规划管理业务的结合方面,波涛是否会再给我们带来更多的好东西?想必指日可待。ESRI中国(北京)有限公司 副总裁/首席咨询专家编著往来蒋波涛与朱强、钱旭东先生的新书《WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS》即将出版,本书策划编辑徐定翔和蒋先生以对话的形式交流了一些技术话题,从这些交流中能看到一本原创著作的问世,包含了作者多少深入的思考。博文编辑蒋先生,您好。加上这本书,您在GIS领域已经有三本著作问世了,前两本分别是《ArcObjects开发基础与技巧——基于VisalBasic.NET》和《插件式GIS应用框架的设计与实现——基于C#和ArcGIS Engine 9.2》,此外您还翻译了一本《GIS for Web应用开发之道》。可否请您简单回顾一下这三本书的内容和特点。蒋先生非常感谢读者朋友对这几本书的认可。这三本书的内容都是讲述桌面端应用程序向Web应用程序转变的,这一转变过程正是我个人学习和开发GIS的经历,也是GIS技术发展的趋势。《ArcObjects开发基础与技巧——基于VisalBasic.NET》是2004年我在学习ArcGIS的开发组件ArcObjects时的一个额外成果。ArcObjects是ArcGIS的核心,它包括ArcGIS Desktop、ArcGIS Engine和ArcGIS Server的底层API。这本书对ArcObjects的结构进行了系统完整的介绍,是国内较早的ArcGIS开发书籍。《插件式GIS应用框架的设计与实现——基于C#和ArcGIS Engine 9.2》一书的本意并不是介绍具体的GIS程序,而是一种软件架构的设计思路,它的重点是“插件式的框架”,而GIS只是介绍这种架构的一个载体,但这本书与前一本是有传承关系的,如果说前一本是介绍ArcObjects这种COM式“积木块”,那么第二本就是介绍该如何利用这些积木块来搭建一座稳定可靠的“城堡”。这本《WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS》则是在Web环境下如何实现GIS应用程序的一次经验总结和尝试,它系统介绍了WebGIS开发过程中须要掌握和理解的许多理论知识和开发技术,既有理论,更富含实践之道,具有很高的实用性。博文编辑您的第二本书《插件式GIS应用框架的设计与实现——基于C#和ArcGIS Engine 9.2》算得上是GIS类图书中的畅销书了,出版一年以来,在读者中受到了广泛的欢迎。在这么短的时间内又写这本《WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS》的初衷是什么?蒋先生首先,我想说明的是,《WebGIS开发实践手册——基于ArcIMS、OGC和瓦片式GIS》从资料的搜集到最后成文出版,其实经历了一段非常漫长的时间。我是在2004年左右开始接触WebGIS的,在很长一段时间内,我对WebGIS一头雾水,今天回过头来看,这是很正常的:Web应用开发概念、标准、技术和框架太丰富了,Web的开发工具和Debug手段又远不如桌面端开发那样方便,它与桌面端应用的开发路线有“天壤之别”。在摸索了很长一段时间后,我才逐步了解了诸如ArcIMS服务器和它的HTML/JavaScript客户端开发知识等内容,我也曾经将自己的一些经验进行总结后在Blog上贴出,这些原始资料的积累工作可以追溯到2006年左右。其后很长一段时间,我都没有再做WebGIS方面的开发,后来随着开发经验的丰富、头脑中“技术地图”的完善、Ajax和RIA等技术的兴起、公共WebGIS API的出现,以及自己工作的原因,我对WebGIS有了更深的认识。从2008年开始,我就在琢磨如何写一套WebGIS API,然后能够通过OO的方式实现地图功能——就像Google Maps API那样,这个过程让我全面地了解了WebGIS开发中需要的各种知识。这是本书诞生的前提。在Web应用程序(包括WebGIS)的学习、开发和使用过程中,我经常遇到许多读者和朋友的提问,有些问题确实很幼稚,其实这也不怪初学者,我还没有见过一本深入浅出、联系实际的书籍来帮助他们理清思路,拨开迷雾。有些读者甚至认为拖-放ASP.NET之类的Web控件就是在做开发。强大的辅助开发工具对缺乏基础的开发人员是非常危险的,因为你根本不可能“有效地”操控它们。此外,痴迷这些工具对个人技术能力的提升非常有限,甚至有害。这使我觉得帮助初学者进行一番整理是非常必要的。直到目前为止,国内市面上根本没有以“实践”为出发点和落脚点的WebGIS开发书籍, WebGIS方面的书虽然很多,但它们多以理论示人,难以上手。由于这些原因,从去年年底开始,我和我的合作者们就开始有意识地整理相关的资料,经过近9个月的工作,才得以让本书面世。博文编辑我们知道GIS开发对从业人员有着特殊的要求,他们既要懂地理测绘知识,又要熟悉软件开发方法。对处于不同层次的读者,可否请您对如何阅读这本书才能更好地吸收书中的内容提出建议。蒋先生GIS就其实现技术而言,已经与主流IT融为一体,因此GIS开发人员除了具备地理测绘知识之外,更重要的是要能够紧跟IT的发展步伐,而紧跟的唯一方式,就是“实践”——动手写代码,看别人的代码是看不出所以然来的;其次是要有“质疑”精神,敢于怀疑书本上的内容。我对读者能够挑出我书中的谬误之处会感到非常高兴,只有深入阅读了,才能发现问题。博文编辑国内GIS行业目前的大客户主要是政府,军方,电力、电信行业 ,最后才是民用,您觉得今后GIS行业的发展势趋如何?蒋先生GIS与其他类型信息系统的一个很大不同在于数据,GIS的数据管理和发布都有严格的规定和要求,过严的保密规定在很大程度上限制了GIS的发展,不要说民用,就是在政府各个单位内部,数据共享都是一个政策性很强的问题。但另一方面,互联网上的各种地图应用如“雨后春笋”般出现,在很大程度上改变和影响了人们的生活方式,这也使得GIS得以让更多的人认识它,了解它和扩大它的应用。博文编辑对那些想加入GIS行业的新人,您在学习和工作上有什么建议?蒋先生我本人并非GIS专业出身,了解的这些知识都是有意识地自学的。我想,无论哪一个行业,刚入门的新人在学习和工作上都是有共通点的。首先,学习和工作应该有计划和目标,不要随波逐流;其次是要有耐心,我们学习任何知识都贵在坚持;最后,我觉得每位新人都应该要有意识地丰富和完善自己的“技术地图”,“高手”与“菜鸟”最大的区别在于前者能将各种知识融会贯通,能够在新问题面前迅速地找出种种可能解决方法,这当然是经验积累的结果,如果我们能够有意识地锻炼自己,我相信新手的成长速度会快得多。前言在开始动笔之前,我们曾踌躇再三,如今的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,而如果你对它们的了解程度不仅仅局限在了解名词的水平,而且还知道基本的差异和代码写法,岂不是更妙?!致谢首先感谢宁波市规划局、宁波市规划与地理信息中心和鄞州分局各位领导和同事的关心、支持和帮助,这是本书能够诞生的大环境。感谢白明(ESRI论坛ArcIMS版主YOYO)和ESRI公司(北京)的技术工程师曹鑫对本书所作的技术审校,正是他们的细致把关,才让我们及时地剔除了书中的种种谬误,免得贻笑方家。感谢电子工业出版社博文视点(武汉)团队,正是有幸与这个在IT界声誉卓著的集体的多次合作,才使得本书能够精益求精,不负众望。感谢ESRI中国(北京)有限公司的诸位朋友,特别是蔡晓兵副总裁所作的推荐序,为本书增色不少。我们最后要将感谢献给各自的家人和朋友!联系博文您可以通过如下方式与本书的出版方取得联系。读者信箱:reader@broadview.com.cn投稿信箱:bvtougao@gmail.com北京博文视点资讯有限公司(武汉分部)湖北省 武汉市 洪山区 吴家湾 邮科院路特1号 湖北信息产业科技大厦1402室邮政编码:430074电 话:027-87690813传 真:027-87690595欢迎您访问博文视点官方博客:http://blog.csdn.net/bvbook第 1 章剖析WebGIS对于WebGIS这个“热门”名词,如果你是初次接触,可以先到Google、Cuil [1]或其他搜索引擎中去了解一下;如果你已初窥门径,我们将先给您介绍一些与WebGIS相关的术语:GML、ArcIMS、Ajax、ASP、ASP.NET、JSP、JSF、OGC、Java Applet、JavaScript,此外还有:Flex、SOA、SOAP、GIS服务、RESTful服务和Mashup等,术语还可以列举许多,不过在此只点到为止。当然,罗列这一堆术语的本意并不是“恐吓”读者,以此来夸耀作者的博学,恰恰相反,我们希望能通过本书,为读者从这堆术语的“泥淖”中寻找一条坚实可靠的“出路”,故弄玄虚和名词考证都是作者最不喜欢的。[2]地理信息系统(Geographic Information System,GIS)是在20世纪60年代 [3]出现的,经过近40年的发展,已经产生了重要并且意义深远的成果和进步 。从早期昂贵、基于主机(Host-based)的专业系统到今天进入平常百姓家的那些价格低廉、基于无线网络的移动与嵌入式GIS和GPS设备(手机和导航仪等),GIS的发展方向一直趋向于让普通用户都能从无处不在的地理信息中受益。当然,这既符合IT技术的发展潮流,更暗合GIS的使命——更好地改变了我们的生产、生活和工作方式,而WebGIS则是这一发展潮流的最好注脚之一。Internet网络是人类历史上最重要和最伟大的发明之一,它是人类通信与交流方式的一次重大革命。Internet网络的出现和发展,使得全球范围内的信息共享和[4]快速传播成为可能,从而极大地增强了信息的时效性,并提高了其可靠性 。也正是有了Internet,我们生活的星球才能被称为“地球村”,网络已经对技术、科学和整个社会产生了深刻的影响,这个重要性无论怎样强调都不为过。[5]而作为一种与位置相关的信息管理系统 ,GIS也借助了日益发展的网络技术,诞生出了所谓的“网络GIS”和WebGIS等概念,“互联网逐渐将GIS的各种应[6]用整合在一起,独立的GIS将逐渐消失” ,如今的GIS已经更加离不开网络这一传播媒介。但请读者注意:网络GIS与WebGIS并不能简单地画上等号,后者只是前者的一个子集。抛开WebGIS这一概念名词不谈,对于GIS开发人员而言,WebGIS开发在本质上无非是编写一种交互方式较为特殊的Web应用程序,但随着Web 2.0概念的兴起,Ajax、RIA框架、SOA、SOAP、GIS服务、RESTful服务和Mashup等名词已经让许多GIS学习者眼花缭乱。现在,WebGIS学习的复杂性不在于其内容的深浅,而是出现了太多的“枝蔓”,挡住了我们前进的道路。在第1章中,我们将为读者梳理一番WebGIS软硬件基础的历史,介绍互联网的历史和分布式计算、通信协议、网络GIS概念、WebGIS的定义与实质、主要的WebGIS服务器和开发路线。只有了解它们,我们才能从日益严密的Web应用程序封装中窥见其本来面目。我们将让读者意识到,在这些名词背后,都隐藏着一个越来越被读者忽视的本质——HTTP请求/响应模型。在阅读完这一章之后,你将了解到所谓的WebGIS,无非就是Web+GIS而已,如图1-1所示,但这两者结合产生的力量,远远超过了单体的能量。图1-1 WebGIS=Web+GIS注 释[1]. Cuil,一个诞生不久的分类式搜索引擎,其网址是http://www.cuil.com。[2].第一个公认的GIS是1963年R.F.Tomlison领导的加拿大地理信息系统CGIS。[3].关于GIS的发展历史,推荐读者查阅《地理信息系统与科学》一书第12页的“大事记”。[4].当然,谣言也能很快传播,不过也会更快地消失。[5].严格地讲,将GIS归入一种信息管理系统是不完全的,虽然空间数据管理是其主要的特征之一。[6]. Paul Longley, Michael Goodchild, David Maguire, David Rhind. 张晶,刘瑜,张洁,田原等. 地理信息系统与科学. 北京:机械工业出版社,20071.1 互联网与网络协议1.1.1 互联网历史[1]本书的读者中可能有人在20世纪90年代早期 就已经接触了网络,但互联网的诞生时间更早,和许多我们熟悉的技术一样,它也是军事技术民用化的结果。1969年,世界正处于美苏“冷战”时期,当时的计算机系统都是基于主机的客户终端形式,这种集中式的网络结构很容易遭到破坏。为了适应冷战时期潜在的核战争威胁,美国ARPA(Advanced Research Projects Agency,美国国防部高级研究计划署)提出研究一种非中心式网络的计划,基于这种结构的网络即使某一个节点遭到破坏也不至于毁掉整个网络,其鲁棒性大大高于集中式网络。在第一期研究项目中,ARPA将4家大学的计算机主机进行互联互通,诞生了所谓的ARPANET(阿帕网)。随后,美国本土的多家大学、研究所和军方机构都接入了这个网络。到1973年,远在海外的夏威夷、英国伦敦和北欧的挪威也通过卫星接入了ARPANET。ARPANET虽是先驱,但并不是当时唯一存在的计算机网络。20世纪70年代末到80年代初,计算机网络蓬勃发展,各种网络应运而生,如MILNET、USENET、BITNET、CSNET等,其规模和数量都得到了很大提高。一系列网络的建设,产生了不同网络之间互联的需求,并最终导致了TCP/IP的诞生。1980年,TCP/IP制定;1982年,ARPANET开始采用IP;1983年,ARPANET被划分为ARPANET和MILNET两部分,同时ARPANET全面采用TCP/IP,以取代之前的NCP。到了1986年,在美国国家科学基金会(NSF)的资助下,基于TCP/IP技术的主干网NSFNET建成,它连接了美国若干超级计算中心、主要大学和研究机构,世界上第一个互联网由此诞生,并迅速连接到世界各地,这是互联网历史上一个划时代的大事件。尽管这些网络的建设已经获得了巨大的发展,但其用户基本上仍局限于大型公司、科研院所和军事机构的科研工作者,普通人很难理解和使用网络,直到[2]1989年CERN (European Organization for Nuclear Research,欧洲粒子物理实验室)的Tim Berners-Lee开发出一种通过超链接文本共享信息的技术。Tim Berners-Lee将他的发明称为HTML (HyperText Markup Language,超文本标记语言),他还编写了构成超文本信息系统框架的通信协议,并将这种新的系统称之为WWW(World Wide Web,万维网)。1992年,CERN 开始在其成员机构之外推广WWW,但这个推广过程并不顺利,因为普通用户看到的只是文本界面或图片的链接,而不是今天习以为常的图文并茂的网页内容。20世纪90年代互联网命运出现了转折。1993年,在美国全国超级计算机应用中心的资助下,伊利诺伊大学的天才学生Marc Andreessen和Eric Bina等人成功开[3]发了世界上第一个被广泛用于阅读 HTML语言的WWW浏览器Mosaic (见图1-2所示),它在世界范围内引起了轰动,点燃了互联网发展的燎原烈火,互联网从此开始走入普通人的生活。图1-2 世界上第一个WWW浏览器Mosaic1994年,中国开始启动中国教育和科研计算机(CERNET)示范网建设工[4]程,这是我国第一个全国性TCP/IP互联网 0,除了CERNET外,中国互联网的骨[5]干网络还有ChinaNET、CSTNET等。到了 996年,中国掀起了网络热潮,普通民众也开始上网“冲浪”,中国从此步入网络世界11。小知识:互联网、因特网和万维网互联网、因特网和万维网其实并不是一回事,它们三者的关系是:互联网包含因特网,而因特网则包含万维网。互联网是由若干台电子计算机相互连接而成的网络,即使只有两台机器,不论用何种技术使其彼此通信,也可以称为互联网。互联网标准写法是internet。跨国性的超大互联网不仅有因特网,还有惠多网(CFido,一种全球性的BBS网络),这些网络共同构成了互联网,因此,我们可以将互联网看作是各种网络的大杂烩。因特网是互联网的一种,它是目前全球最大的一个电子计算机互联网,由美国的ARPANET网发展演变而来。因特网是由上千万台设备组成的国际互联网,使用TCP/IP让不同的设备彼此通信。但使用TCP/IP的网络并不一定是因特网,局域网(LAN)和企业内部网(Intranet)也可以使用TCP/IP。因特网标准写法是Internet。因特网是基于TCP/IP实现的,TCP/IP由很多类型协议组成,不同类型的协议又被放在不同的层,其中位于应用层的协议有很多种,如FTP、SMTP和HTTP等。只要应用层使用的是HTTP,这部分因特网就被称为万维网,是我们常用的Web浏览器应用的基础。注 释[1].中国1994年才接入国际互联网,但在此之前国内科研和教育机构已经存在实验性互联网络。[2]. CERN网址http://public.web.cern.ch/public/,该中心最近的一次大新闻是试图通过对撞机制造人工黑洞。[3]. Mocaic后来因为版权原因被迫更名为Netscape,关于Mosaic的巨大影响,读者可以打开IE浏览器的“关于”对话框,去看看第一行的内容。[4].0以上资料来自中国教育与科研计算机网http://www.edu.cn/20041225/3125246.shtml。[5].1关于中国互联网的发展历史,可以浏览CNNIC网站http://www.cnnic.net.cn/index/0E/21/index.htm。1.1.2 计算机是如何互联的计算机诞生的早期,每家电脑公司开发的产品都具有其特殊性,不光是机器硬件,连操作系统都自己编写,各自为政,要将一个程序在不同公司生产的计算机上运行都是天大的难题,更遑论在不同计算机之间实现互联互通了。在ARPANET计划中,要将不同大学的不同独立计算机通过通信线路连接起来,构成计算机网络,就必须克服这个硬件沟壑。显然,计算机之间的通信和信息交换应该遵守一些共同的“游戏规则”,且这些规则必须独立于具体的硬件环境,这就是所谓的协议(Protocol)。ARPANET最初使用的是NCP(Network Core Protocol)而不是TCP/IP,但NCP随着连接用户的增加暴露出了许多缺陷,如缺乏多台计算机的定位区分功能(没有IP)和传输的纠错能力差等。1983年,ARPANET全面采用TCP/IP,它是由Robert E. Kahn和Vinton Cerf在1973年提出的,后者还是NCP的开发者,他们两位被共称为“互联网之父”,一起确定了互联网的基础。1984年,国际标准化组织ISO也颁布了“开放系统互联基本参考模型”(OSIRM,Open System Interconnection Reference Model),但OSIRM标准过于复杂,从未真正被实现过。相反,随着万维网的出现,TCP/IP慢慢战胜了其他网络协议方案,成为今天互联网的事实标准。TCP/IP之所以成功,是因为它具有以下特点:● 开放性,抽象自计算机硬件和操作系统;● 统一分配网络地址,网络中每台计算机都具有唯一的IP地址与其他设备相区别;● 标准化的应用协议,能提供多种可靠的应用服务。TCP/IP的参考模型是一个抽象分层模型,在这一模型中,所有的TCP/IP都被划归到4个层中。每一层都建立在低一层的服务之上,并为更高一层提供服务。TCP/IP的结构从低到高分为如下四层,如图1-3所示。图1-3 四层结构的TCP/IP● 网络连接层(Network Access Layer):它是TCP/IP协议的最底层,负责网络层与硬件设备之间的通信,即数据帧的发送和接收。这一层的协议非常之多,如Wi-Fi、MPLS、Ethernet等。● 网际层(Internet Layer):网际层负责解决网络之间计算机传输数据包的问题。这一层的协议有四个,即IP,负责在主机与网络之间寻址和路由数据包,正是因为拥有IP,网络中不同的计算机才能相互区别;ARP,即地址解析协议,负责获得同一物理网络的硬件主机地址;ICMP,即网际控制消息协议,负责发送消息并报告有关数据包的传输错误;IGMP,互联网管理协议。目前使用的IP是IPv4版本,其IP地址长度为32位,尽管这一IP地址群多达40多亿个,但美国掌握了其绝对的控制权和大部分IP地址,由于IP地址的滥用和浪费,现在已经面临枯竭。目前全世界正在推广IPv6版本的协议,其地址长度为128位,号称“可以为地球上的每一粒沙子都分配一个IP地址”。中国在1998年由CERNET率先建立了IPv6试验网,并获国际组织认可,1999年开始正式分配IPv6地址。● 传输层(Transport Layer):这一层位于网际层之上,用于在计算机程序之间提供通信会话。它有两个主要的传输协议:传输控制协议TCP,它是一种“面向连接”的协议,在通信之前双方必须建立联系,才能为应用程序提供可靠的通信连接,适合于一次传输大批数据,并适用于要求得到响应的应用程序;用户数据包协议UDP,它提供了一种无连接通信,且不对传送包进行可靠的保证。适合于一次传输小量数据,其可靠性则由应用层来负责。● 应用层(Application Layer):应用层是最顶上的一层,顾名思义,它包含了所有与应用程序协作的协议。应用层是大多数与网络相关的应用程序为了通过网络与其他程序通信所使用的协议层。这一层的协议运行于TCP和UDP之上,它们包括HTTP(用于网络浏览)、HTTPS(HTTP的安全版本,许多网上银行和WebMail采用这一协议)、FTP(用于文件传输)、POP3(用于接收电子邮件)、SMTP (用户发送电子邮件)和NEWS(新闻组协议)等。当我们打开如Internet Explorer、Firefox等WWW浏览器时,键入的网址大部分都被解析为http://xxx,这就是采用了HTTP;而在Foxmail或Google等电子邮件软件中设置邮件地址时,使用的则是POP3和SMTP。对于大部分网络用户而言,HTTP[1]和HTTPS是日常上网使用最频繁的应用层协议 2,如图1-4所示。图1-4 登录Google基于的HTTPS协议网络应用程序一定要使用最上层的,即某种应用层协议才能实现互联网上的数据传输吗?答案是否定的,实际上,目前很多网络电视软件、视频通信软件和文件传输软件就是直接使用TCP或UDP在传输数据包,不使用应用层协议也是完[2]全可以的1 ,如图1-5所示。图1-5 QQ可以使用多种协议登录到服务器除了协议,端口号是必须熟悉的另一个主题。由于多个网络应用程序都可能运行在同一台计算机上,须使用某种机制来保证恰当的应用程序在目标计算机上获得和发送来自源机器的数据分组,并保证响应被发送到源计算机的恰当应用程序面前,这可以通过使用TCP 或 UDP的端口号来设置。这就好像在一个办事大厅中,不同的应用程序应该在不同窗口排队,才能办理不同的事务。默认的TCP端口号有许多种,如FTP数据通道端口号为20,FTP控制端口号为21, BBS协议Telnet端口号为23,SMTP端口号为25,而最常用的HTTP协议的端口号为80。当然,为某种服务任意指定某个端口号(但该端口号不能正在被使用)也是允许的,如在同一台计算机上同时安装IIS和Apache均提供HTTP服务时,一个的端口号为80,另一个就不能是80,一般都设置为8080。小知识:新闻组、BBS和FTP由于富客户端(RIA)技术的快速发展,许多几年前需要专门应用软件才能实现的应用和UI效果,目前都可以在WWW浏览器中实现,不管是过去的BBS、E-mail,还是FTP,在Internet Explorer或Firefox等浏览器环境中都能非常容易地“模拟”出来,以至于许多新网民都不知道网络上还有新闻组、BBS和FTP这些曾经风靡一时的“古老”东西。新闻组(NewsGroup)是一种使用电子邮件交互的讨论组,其实现技术与目前WWW上的论坛完全不同,前者使用的是NNTP协议,须要使用特定的客户端,如通过Outlook Express或ThunderBird来访问,它通过邮件的方式进行话题的交流。在网络发展早期,新闻组一度异常活跃,但遗憾的是,这一应用已日渐式微,原来许多知名的新闻组现已不复存在。BBS(Bulletin Board System,电子公告板)是一种使用TELNET协议交互的软件,它是今天WWW论坛的前身。早期的BBS是一种纯文字性的交流方式,需要专门的浏览软件才能访问,如CTerm、FTerm和NetTerm等,但在许多PC操作系统中都内置了telnet软件,使我们无须借助其他浏览软件就能访问各个BBS站点。我们可以点击“开始”按钮,在“运行”菜单弹出的对话框“打开”中键入telnet://bbs.gznet.edu.cn,点击“回车”键,就会弹出一个“华南木棉”BBS站的欢迎页面,如图1-6所示。虽然今天大部分的BBS都提供了基于WWW的浏览站点,但在很多高校和科研机构中,许多用户仍然喜欢使用CTerm等软件通过telnet协议登录BBS。FTP也许是普通人次熟悉的协议,在许多高校和公司内部,为了给指定的用户共享数据文件,都会使用FTP Serv-U等软件搭建一个FTP站点,而不是通过Web页面下载。大部分Web浏览器,都直接支持FTP协议,我们可以在IE的地址栏中输入,通过输入用户名和密码,就能够像管理本地文件一样下载和上传数据了。图1-6 使用Telnet登录“华南木棉”BBS小知识:TCP连接数我们已经介绍过,TCP和UDP可以直接用于数据传输,如QQ的视频聊天、数据传输、PPS的网络电视等,都是基于TCP或UDP的。当一个TCP连接建立时,操作系统中便会产生一个TCP连接线程,如果操作系统对此不进行限制,就可能会被“黑客”制造的无数多个连接线程拖慢运行速度,直到最后死机为止。还记得冲击波病毒吗?它就利用了这个原理!为避免这个漏洞再被人利用,Windows XP系统对TCP连接数进行了限制,默认值是10个。但当带宽足够时,10个线程数反而限制了某些软件的应用,要适当放宽线程数的限制来提高数据传输速度,这也就是类似PPS等软件要求更改TCP连接数的原因。注 释[1].3 TCP和UDP的区别可以浏览http://net.zdnet.com.cn/network_security_zone/2009/0106/1303620.shtml。[2].13 TCP和UDP的区别可以浏览http://net.zdnet.com.cn/network_security_zone/2009/0106/1303620.shtml。1.1.3 WWW的工作协议我们已经知道,WWW是建立在HTTP(Hyper Text Transfer Protocol,超文本传输协议)上的一种网络应用,而HTTP是一种客户端和服务器端(Client/Server)模式的请求/响应(Request/Response)标准。设计HTTP的初衷是为了提供一种发布和接收超文本的方法,所谓超文本,就是我们最熟悉不过的HTML标记文件。在HTTP协议中,客户端与服务器端的通信过程(见图1-7)包含四个步骤:● 先建立客户端与服务器端的TCP连接;● 客户端向服务器端的指定端口发送请求消息;● 服务器端向客户端返回相响应的消息;● 关闭TCP连接。图1-7 一个HTTP会话过程下面是一个典型的HTTP 1.1请求消息:GET / HTTP/1.1Accept: */*Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727) Host: www.google.cn Connection: Keep-Alive请求消息的第一行规定了HTTP服务器使用的方法,本请求采用GET方法,它告诉服务器我们要请求某个资源,这一行也规定了使用HTTP/1.1版协议。其他几个消息向Web服务器详细说明了浏览器的一些信息,如可能接收的信息类型和编码等,它们包括:● Accept 告诉服务器要求接收什么类型的 MIME ( Multipurpose Internet MailExtensions,多功能因特网邮件扩充服务),在该例子里,*/*表示可以接收任何类型的MIME;● Accept-Language告诉服务器本浏览器使用的语言。此后服务器可能利用这些信息对返回的内容进行个性化处理。在本例里,浏览器说明了采用中文(zh-cn)。● Accept-Encoding告诉服务器,返回给浏览器的内容是否编码。在本例里,它可以接受采用gzip或deflate方法压缩的文档。它们是一些数据压缩方法,须要在客户端进行解压。HTTP服务器在该端口接到请求后,给予相应的响应(Response)信息,并关闭TCP连接。下面是一个典型的HTTP 1.1响应消息:响应的第一句“200 OK”表示响应正常,通常情况下,我们经常会遇到诸如“403 禁止”或“404 未找到”之类的响应,那是Response在报告自己的状态。这样,一个会话(Session)过程就完成了。HTTP会话过程非常简单,请求需要什么,服务器就提供什么。HTTP协议有多个版本。在HTTP 1.0版中,完成一个请求/响应过程后,TCP连接就被释放,一个TCP连接只支持一个请求/响应过程,它在通信交互中须要频繁地建立TCP连接。但HTTP 1.1就开始支持持久性连接,这使得一个TCP连接能够支持多个请求/响应过程,这个技术被称为“流水线”,目前普遍使用的HTTP版本[1]为HTTP 1.1 4。在上面HTTP协议的请求中使用了GET类型的请求方法,HTTP协议中定义了7种请求方法,即HEAD、GET、POST、PUT、DELETE、TRACE和OPTIONS,常用的有下面三种:● HEAD要求响应与GET请求的响应一样,但是没有响应体。● GET用于信息获取,它将数据通过URL进行提交,并使用一个“?”字符表示URL地址与数据之间的分隔符;GET提交的数据以“名称/值”形式出现,并以“&”字符来区分不同的名称/值,其传递的值以明文形式出现,但它提交的数据最多只有1024字节(1KB)。GET请求在地址栏中类似http://a.com/news.aspx?id=01&category=02,其含义是:使用http协议,访问a.com站点Web服务器中的news.aspx页面,向该页面传输两个参数,即id为01和category为02。● POST向指定的资源提交要处理的数据,数据不会出现在地址栏中,而是包含在HTTP主体中被提交,更重要的是POST方式没有GET的1024字节大小限制,对于SOAP这样包含了大量XML数据的规范,就必须使用POST方式提交。HTTP虽然位于TCP/IP之上,不过,这也并非必须的,因为TCP/IP只是给HTTP提供一个成熟稳定的传输通道而已。HTTP简单灵活,可靠性高,而且能传输任意类型的数据;同时,HTTP传输的数据与平台无关,只要操作系统支持HTTP协议,Windows平台上的Internet Explorer浏览器访问其他操作系统上Web服务器中的HTML页面就没有任何问题。我们开发的各种WebGIS系统,就是建立在HTTP上的一种特殊Web应用程序。小知识:无状态的HTTP协议我们常说,HTTP是一种无状态的协议(stateless protocol),即在HTTP的请求/响应过程中,无论是客户端还是服务器,都不会记录这个过程的任何信息,每次请求/响应都是相对独立的,即使是某个客户端在几秒钟内再次请求同一个请求,服务器也不会记得哪个客户端曾经连接过它。对于静态的HTML交互,状态是没有意义的,我们访问一个WWW页面,服务器便将静态的文本返回给我们。但在须要交互的WWW应用中,状态就成为一个很重要的问题,比如登录电子邮箱,是基于用户名和密码的,这要求服务器记住是谁在登录,登录是否过期等;在WebGIS中,如果要返回上一次地图页面,服务器必须记住上一次的视图范围数据。从本质上讲,这种无状态是因为整个操作过程是在不同计算机的不同进程之中,造成变量无法被记录。于是,两种用于保持HTTP连接状态的技术就应运而生[2]了,一个是Cookie 5,另一个则是Session。Cookie和Session通过不同的方式保持了客户端与服务器之间交互的连续性,从而保证了一些长事务交互活动实现的可能。注 释[1].4 HTTP 1.1可参考http://www.cnpaf.net/Class/HTTP/200707/20984.html。[2].7 http://www.omg.org/。1.1.4 分布式计算的对象互调技术互联网上的应用程序是基于TCP/IP来进行通信的,但这只是为不同计算机上的软件对象建立了互联的“通道”,它们之间还需要统一的“交流语言”才能实现彼此的沟通。[1]跨计算机的分布式应用在软件组件层次上遵守的某种特定软件标准1 ,是实现异构平台和程序之间互操作性的保证。这种允许运行于一台计算机上的程序调用另一台计算机上的子程序的协议被称为RPC(Remote Procedure Call,远程过程调用)。分布式应用的出发点是实现不同计算机上相同或不同操作系统的软件对象能够互相调用,而编写这样的软件组件。目前已经有三个主要的标准,它们是:● 微软的DCOM(Distributed COM,分布式组件对象模型);[2]● OMG1 (Object Management Group,对象管理组织)的CORBA(Common Object Request Broker Architecture,公共对象请求代理架构);[3]● SOAP 8(Simple Object Access Protocol,简单对象访问协议)。微软的DCOM规范了COM对象与远程计算机上另一个COM对象的交互过程,它规定了COM对象的创建和通信机制,虽然这一规范本身不依赖任何特定语言和平台,但和大部分微软的产品一样,目前只在Windows平台中得到了实现,是微软的私家标准。CORBA由对象请求代理(ORB)、对象服务、公共设施、域接口和应用接口等几个部分组成。其核心部分是ORB,ORB提供了一种机制让对象可以透明地发出请求和接收响应。[4]尽管CORBA可以在不同的平台上执行 9,DCOM可以在微软的平台上运行,但是基于CORBA和DCOM的解决方案必须依赖于同构的应用程序,双方无法互相通信。更糟糕的是,这两种标准都是基于RPC协议的一种二进制标准(其中CORBA基于IIOP,DCOM基于ORPC协议)。在Internet编程环境中,它们无法通过防火墙和代理服务器的“绞杀”,只能适用于局域网环境中。由于DCOM和CORBA无法在Internet环境中稳定实现,促使了SOAP协议的出现, SOAP采用了HTTP和XML这两个已经得到了广泛使用的协议:HTTP用于实现SOAP的RPC风格的传输,XML则是它的编码格式。尽管SOAP的HTTP并不是最有效的传输方式,而且还要在客户端和服务器端进行XML解析,使用的时间较其他协议更多,但HTTP的稳定性和XML的纯文本特性使得它不再受防火墙的阻挡,能够在Internet环境中得到广泛的应用,如图1-8所示。现在一提到SOAP这个名词,就似乎与Web服务紧密相连,但SOAP出现时间早于Web服务。由于SOAP只是现存技术的组合,并无任何新的技术,而HTTP和基于文本的XML数据更是能被所有平台接收,因此SOAP具有天生的互操作性和跨平台性。SOAP目前已经得到了广泛的应用,在ArcGIS Server 9.2中,ESRI就为操作GIS服务器端的对象提供了一套SOAP API,以方便用户与服务器端的对象进行交互。由于所有的ArcGIS Server对象都实现了IRequestHandler接口,而这一接口能够响应SOAP请求,因此与SOAP交互的能力是与生俱来的,开发人员可以通过[5]SOAP直接与服务器对象交互而无须通过Web服务 0。图1-8 两种不同架构的PRC遇到防火墙小知识:XML-RPC如果将Web看作是一个巨大的分布式编程环境,显然,在分布式环境中的远程调用RPC一般都应该基于HTTP进行传输。除了曾经介绍的SOAP以外,另一种常见的基于HTTP的RPC方式,即XML-RPC。XML-RPC是使用 HTTP 作为传输协议和使用 XML 作为编码方式的远程过程调用的。其设计力求简单,并同时允许传输、处理和返回复杂数据结构。虽然与SOAP一样,也是一种基于HTTP的POST式请求,但不同的是它没有复杂的XML结[6]构,下面是一个XML-RPC的典型请求 1:目前,许多blog 程序的本地写作软件,如Windows Live Writer都可以使用 blog提供的XML-RPC API与blog进行数据交换。注 释[1].16它们都是基于HTTP、ORPC等协议之上的。[2].17 http://www.omg.org/。[3].8 http://www.w3.org/TR/soap/。[4].但事实证明,CORBA协议的实现也依赖不同厂商的具体产品。[5].0 ArcGIS Server的SOAP协议可见:http:/edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/ArcGIS/SOAP/overview.htm。[6].1 XML-RPC的标准可见:http://www.xmlrpc.com/spec。1.2 网络GIS“网络GIS是GIS发展过程中某一时段的GIS产品与应用形式,也可以是所有[1]GIS体系下的统称。” 2根据这一定义,我们可以将所有基于互联网的分布式空间信息管理系统都归纳到网络GIS的概念之中,网络GIS能够实现空间数据管理、分布式协同作业、网络发布和地理信息应用服务等多种功能。传统的GIS系统都是单机版的,无论是软件还是数据均部署在一台计算机上,要求较高的软硬件环境,其处理能力完全依赖客户端的配置,无法实现数据的多人操作和编辑,且部署成本非常高;而网络GIS则充分利用了互联网上的计算机,增强了地理数据的共享和协同处理能力。网络GIS是GIS应用的一次飞跃,较[2]单机版的GIS系统,它具有以下优势 3:● 拓展了GIS的应用领域和服务范围,让更多的人可以使用GIS,从而获得更优质的空间信息服务;● 为更多的用户提供了透明的操作方式;● 降低了用户购买GIS软件系统的成本;● 增强了空间信息服务的时效性。虽然网络GIS的最典型代表是WebGIS(B/S模式的GIS),但除此以外,C/S模式的GIS系统、Web服务GIS和移动与嵌入式GIS都为网络GIS增添了丰富的内容和形式。注 释[1].2张书亮, 闾国年, 李秀梅, 姜永发. 网络地理信息系统.北京:科学出版社. 2005[2].2孟令奎, 史文中, 张鹏林. 网络地理信息系统原理与技术. 北京:科学出版社. 2005

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载