Web GIS原理与应用开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-07 07:47:20

点击下载

作者:刘光,曾敬文,曾庆丰

出版社:清华大学出版社

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

Web GIS原理与应用开发

Web GIS原理与应用开发试读:

前言

计算机科学技术的飞速发展为GIS(地理信息系统)提供了先进的工具和手段,使GIS得到了快速发展,应用日益广泛。进入21世纪后,互联网技术的普及更使GIS的发展发生了质的变化,互联网已成为GIS新的操作平台。互联网与GIS的结合即Web GIS,改变了地理信息的获取、传输、发布、共享和应用的方式。在互联网发布地理信息,为用户提供空间数据浏览、查询、专题图制作与空间分析功能,从而实现地理信息的操作与共享,已经成为GIS发展的必然趋势。

Web GIS概念的首次提出是在1994年,指在互联网上部署GIS,旨在解决冗余数据、昂贵数据的整合以及分布处理能力,将利用新的技术、市场和决策系统来开启我们的世界。Web GIS是一个分散式的地理信息网络服务,可让地理信息通过OGC标准和W3C的界面互相沟通存取,凭借良好的互操作性达到以往需要庞大数据量才能实现的功能,使用者可以随意使用在Web GIS里的地理空间数据。Web GIS可让各个符合国际标准的地理信息数据库之间通过API方式沟通,从而保证数据不再局限于单一数据库中,可形成网格数据库。Web GIS是人类社会团体、组织和民众协同合作所建立的信息架构,摆脱以往GIS只适用于专业人士的状况,真正地让使用者搜索生活中的各种信息。

早期的Web GIS虽然拥有技术上的先进性,但是推广至一般用户较为困难,然而由于近几年Web 2.0 Mapping系统的发展,出现了崭新的应用,让以往需要大量数据才能实现的Web应用,现在只需要使用Web 2.0网站提供的API即可实现。Google、Yahoo!、Microsoft等公司纷纷推出属于自己的地图API,大大降低了以往开发电子地图的门槛,让许多以Google Map、Bing Map等电子地图为显示底图的应用网站如雨后春笋般地发展。例如,有显示性侵害犯罪的MapSexOffenders.com、反映芝加哥犯罪的www.chicagocrime.org;结合照片与影像的Flickr与Panoramio;让使用者创造属于自己的地图,并让Google Map和其他网页结合的My Map+;也有提供爱好旅游的使用者通过系统机制和blog分享旅游经验,期望建立旅游社群的MyTripBook;提供飞机航班及时信息的fboweb.com;结合天气信息的Weather Underground;租房信息的housingmaps.com。这些应用都显示了目前电子地图正受到大家的重视,相信未来Web GIS 2.0会更加蓬勃发展。

构建Web GIS 2.0应用是一个系统工程,包含数据加工处理、数据存储管理、地图制作、地图服务发布、专题数据发布、空间分析功能发布以及系统开发。在该过程中,需要使用多个软件与工具。这些软件与工具既有商业的,同样也有免费与开源的。利用开源软件构建Web GIS 2.0应用就是本书介绍的主要内容。

第1章在简单回顾GIS发展历程之后,着重介绍Web GIS的发展以及Web服务的重要性,同时还将介绍自由及开源软件以及在使用过程中存在的优缺点。最后将介绍客户端开源软件QGIS的安装与基本使用。

第2章介绍Web GIS的系统架构与Web地图的构成。此外,还介绍用于创建地理Web服务的开源软件GeoServer的安装与基本应用,包括GeoServer的Web管理页面及图层预览等。

第3章介绍了在自由及开源软件领域存储与处理空间数据的多种选择,列出了空间数据常见的开放格式,各种数据存储结构和格式的优点。最后以实践的方式介绍了如何使用QGIS与GDAL来处理GIS数据,以及如何在PostGIS中创建空间数据库并导入空间数据。

第4章着重介绍了开放地理空间联盟制定的WMS规范。虽然WMS并没有使用最新的技术,却是一个被广泛使用的规范,是Web GIS的基础。此外,还介绍了如何结合QGIS与GeoServer发布带高级符号的WMS服务。

第5章介绍了地图切片的利弊,以及创建与维护地图缓存的策略。最后通过两个实践演示如何在实际工作中创建地图切片。

第6章介绍了当前主流的Web地图API,并着重介绍了OpenLayers的基本使用方法。

第7章介绍了在客户端负责绘制矢量数据的方式与方法。这是当前Web GIS的专题图层普遍采用的方式,将所有复杂的符号系统和地图绘制功能转移到客户端,使服务器只需要提供原始的矢量数据和属性数据。这意味着地图引擎可以更有效地响应,从而增强交互性以及提升性能。

第8章介绍了引入主流JavaScript框架,例如Dojo、jQuery等,以便增强Web地图的用户体验。此外,还介绍了如何通过专题制图,以更丰富的形式展现空间信息。

第9章介绍了WFS及其服务的发布、访问与应用,并介绍了如何通过该服务实现基于Web的空间数据编辑。

第10章介绍了WCS服务规范及其在多维数据中的应用,以及如何利用GeoServer将带有时间与高程信息的多维数据发布为WCS服务。

第11章介绍了WPS及其服务的发布、访问与应用,并介绍了如何通过WPS服务实现基于Web的等高线生成以及空间数据的处理。

第12章介绍了“开放数据”的不同含义,并介绍了开放数据OpenStreetMap及其多种数据下载方法。此外,还介绍了混搭应用及其开发方法。

本书源代码的下载地址为:http://pan.baidu.com/s/1pKSLvVP。如果下载有问题,请电子邮件联系booksaga@126.com,邮件主题为“求Web GIS原理与应用开发源代码”。

本书除了封面署名作者之外,参与本书编写的人员还有刘增良、韩光瞬、唐大仕、刘小东、贺小飞、李珍贵、陈艳玲、杨海、唐伯旺、黄泽清、李凤英、仇诗良和戴海燕等。

由于编者水平、经验有限,书中肯定存在一些疏漏和错误,希望能得到广大读者的批评和指正。编者2016年6月第一章WebGIS概述随着计算机、网络和数据库等技术的发展,以及应用的不断深化,地理信息系统(Geographic Information System, GIS)技术的发展呈现出新的特点和趋势,基于互联网的Web GIS就是其中之一。Web GIS除了应用于传统的国土、资源、环境等政府管理领域外,也正在促进与老百姓生活息息相关的车载导航、移动位置服务、智能交通、抢险救灾、城市设施管理、现代物流和大数据分析等产业的迅速发展。本章在简单回顾GIS发展历程之后,将着重介绍Web GIS的历史以及Web服务的重要性,同时还将介绍自由及开源软件(Free and Open Source Software, FOSS),以及在使用过程中存在的优缺点。最后将介绍一个客户端开源软件QGIS的安装与基本使用。本书的后续内容在创建地图服务与Web GIS应用时,需要大量使用地理空间数据,因此需要使用QGIS来预览并操作这些空间数据。1.1GIS的发展

从一定意义上讲,地理信息系统是计算机和信息系统技术在地理科学中运用发展的产物。因此地理信息系统不仅受地理信息系统的应用和需求的推动,同时也受计算机和信息科学技术的推动。

20世纪60年代末,世界上第一个地理信息系统——加拿大地理信息系统(CGIS)诞生,该系统主要用于自然资源的管理和规划;随后,美国哈佛大学研制出SYMAP系统。地理信息系统因日益引起各国政府和科学家的高度重视而迅速发展。GIS的发展经历了20世纪70年代的大量试验开发阶段,20世纪80年代的商业开发和运作阶段以及20世纪90年代以用户为主导的阶段。在GIS发展初期,只有地理研究人员、地质调查局、土地森林管理部门、人口调查等专业部门和研究人员对其感兴趣,而目前GIS已深入到政府管理、城市规划、科学研究、资源开发利用、测绘和军事等广大的领域。在21世纪,地理信息系统已远远不是地理学界或测绘学领域的概念,而将成为人们采集、管理、分析空间数据,共享全球信息资源,为政府管理提供决策、科学研究和实施可持续发展战略的工具和手段。其内涵从狭义的地理信息系统(管理地理信息的计算机系统)到更广泛的空间信息系统(Spatial Information System),并逐渐形成地球信息科学(GeoInformatics)。

从20世纪60年代以来,计算模式的发展已经经历了从单机计算、集中计算到C/S模式、B/S模式(三层结构模式)的不同阶段,现在正处于以Web服务(Web Services)为主要特征的面向服务的计算模式。

就技术层面而言,地理信息系统的发展也经历了四代,如图1.1所示。从GIS中引入的网络技术方面来看,其中第一代(20世纪60年代~80年代中期)是以单机单用户为平台、以系统为中心;第二代(20世纪80年代中期~90年代中期)开始引用网络,实现了多机多用户的GIS;第三代(20世纪90年代中期~21世纪初)引入了互联网技术,开始向以数据为中心的方向过渡,实现了较低层次的(浏览型或简单查询型)B/S结构;第四代(21世纪初至今)引入了Web服务,开始了面向服务的较高层次的Web GIS。图1.1 GIS的发展1.2Web GIS及其发展

在以前的地理信息系统中,基本上以系统为中心,不同系统之间壁垒比较分明,数据共享与服务共享困难。在30多年的时间里,形成了许多GIS软件,它们在不同的环境中独自发展,有自己的文化背景、领域背景和技术背景,形成了自己的数据模型和功能组织结构。它们在功能和问题描述、实际操作上差别甚大,加上内部空间数据组织不同或者互相保密,形成了不同的壁垒,为信息共享增加了许多困难。

由于互联网技术和Web技术的成熟与大规模普及应用,GIS开始面向传统行业和广大民众,Web GIS开始出现和发展,并逐渐成为GIS应用的一种重要方式。

Web GIS是将Web技术应用于GIS开发的产物,是一个交互式的、分布式的、动态的地理信息系统,是由多台主机、多个数据库和无数终端并由客户机与服务器(HTTP服务器及应用服务器)相连接所组成的。在Web GIS中,空间信息应用主要采取的是B/S(Browser/Server,浏览器/服务器)方式。

Web GIS的基本思想就是在互联网上提供地理信息服务,让用户通过浏览器从Web GIS服务器上获取地理数据和地理处理服务。Web GIS使全球范围内的用户拥有使用分布式地理信息的能力,用户可以从互联网的任意一个节点,通过Web浏览器访问或共享由一个或多个Web GIS服务器发布的数据和功能,而不必购买商业GIS软件。

Web GIS的真正意义在于,它将GIS从专业应用推向了大众化服务,同时为地理信息共享提供了方便而有效的途径。1.2.1 传统Web GIS的不足

网络技术及分布式计算技术给GIS提供了更好的支持,同时也提出了更高的要求。随着网络信息基础设施和技术的不断发展与完善,分布式地理信息服务正成为人们获取地理信息的主要手段。与传统方式相比,分布式地理信息服务具有更广泛的访问范围、平台独立性、低系统成本、更简单的操作等优点,是当前GIS发展的重要方向。

但是,在2005年之前,传统的Web GIS(称为Web GIS 1.0)还有相当多的不足,主要有如下几点:(1)Web GIS的主要功能和应用是用于地图的发布,这类系统基本上是浏览型或功能相对简单的查询型系统。虽然有少量对空间数据的操纵,但这种操纵的功能很弱,无法进行复杂的一体化操作,离全面的互操作及分布式的地理信息系统的要求还很遥远。(2)Web GIS中主要是服务器端与客户端的通信,由于服务器端与客户端的地位没有形成对等的实体,因而难以建立分布式的地理信息系统。(3)Web GIS中传递的数据主要是以矢量形式表达的少量地图数据或者是以栅格形式表达的地图,这样的地图数据在各个应用系统中的格式不统一,语义也不统一。由于缺乏统一的标准,数据的共享难以实现。(4)Web GIS中实现的操作,在各个系统中没有统一描述的机制(虽然也有一些系统制定了一定的查询语言,如GeoSQL,但这不是所有的系统都采用的),也没有对这些操作和服务提供注册和发现的机制,因此服务的共享难以实现。(5)Web GIS还没有形成一套有效的集成机制。新一代的GIS要求具有有效的分布式空间、数据管理和计算,包括:多用户同步空间数据操作与处理机制;数据、服务代理和多级B/S体系结构;异构GIS系统互连与互操作;空间数据分布式存储与数据安全;空间数据高效压缩与解压缩;同时要求强大的应用集成能力,包括有效的遥感、地理信息系统、全球定位系统集成;强大的应用模型支持能力;GIS与MIS(管理信息系统),特别是ERP(企业资源计划)的有机集成;GIS与OA(办公自动化)的有机集成;GIS与CAD(计算机辅助设计)的有机集成;GIS与DCS(决策支持系统)的有机集成;有一定实时能力、微型化、嵌入式GIS与各类设备的集成等。

综上所述,GIS中大量的数据不断积累、各种层次的软件也越来越多,Web技术的发展给GIS提出了更高的要求,GIS的分布式、可互操作性显得越来越重要,这恰恰是当前Web GIS要着重解决的问题,这也是新一代(即第四代)GIS的一个重要发展方向。

这个时期主要的商业Web GIS产品有MapInfo公司的MapXtreme产品系列、ESRI公司的IMS产品系列以及Intergraph公司的Geomedia Web Map产品等,我国也推出了Geo-Surf、GeoBeans与SupperMap IS等国产化的Web GIS产品。而大型的面向公众的Web GIS门户网站则非常少,在国外主要以MapQuest为代表,在国内主要有图形天下(Go2Map)和城市通(ChinaQuest)。1.2.2 从Web站点发展为Web服务

随着Web技术、组件技术、分布式系统等技术的发展,在21世纪初出现了Web服务技术,并逐渐引起了人们的注意,并成为分布式异构GIS进行互操作集成的首选技术。

在Web应用的不断发展过程中,人们发现在Web应用和传统桌面应用(比如企业内部管理系统、办公自动化系统等)之间存在着连接的鸿沟,人们不得不重复地将数据在Web应用和传统桌面应用之间转换,这成为了阻碍Web应用进入主流工作流的一个巨大障碍。

从1998年开始发展的XML技术及其相关技术已证明可以解决这个问题,而随后蓬勃发展的Web服务技术则正是基于XML技术的针对这一问题的最佳(在当时看来)解决方案。Web服务的主要目标就是在现有的各种异构平台的基础上构筑一个通用的、与平台和语言无关的技术层,各种不同平台之上的应用依靠这个技术层来实施彼此的连接和集成。Web服务与传统Web应用技术的差异在于:传统Web应用技术解决的问题是如何让人来使用Web应用所提供的服务,而Web服务则要解决如何让计算机系统来使用Web应用所提供的服务。

将Web服务应用于GIS,则可以使传统的地理信息系统由独立的C/S结构或B/S结构,实现到基于Web服务体系的GIS的跨越。

从OGC(Open Geospatial Consortium,开放地理空间信息联盟,在1994~2004年该机构名为Open GIS Consortium)制定的规范名称中也可以看出向Web服务的发展趋势,从OGC01-065:Web Feature Server Implementation Specification到OGC02-058:Web Feature Service Implementation Specification(如图1.2所示),原先用Server,后来用Service,这实际上体现了从传统的Web GIS向Web服务观念的转变。图1.2 传统Web GIS与基于Web服务的GIS 的对比1.2.3 从SOAP发展为REST

在Web服务发展的初期,XML格式化消息的第一个主要用途是应用于XML-RPC协议,其中RPC(Remote Procedure Call,远程过程调用)代表远程过程调用。在XML远程过程调用(XML-RPC)中,客户端发送一条特定消息,该消息中必须包括名称、运行服务的程序以及输入参数。

之后为了标准化,跨平台又产生了基于SOAP(Simple Object Access Protocol,简单对象访问协议)的消息通信模型。SOAP是在XML-RPC基础上,使用标准的XML描述了RPC的请求信息(URI/类/方法/参数/返回值)。因为XML-RPC只能使用有限的数据类型种类和一些简单的数据结构,SOAP能支持更多的类型和数据结构。优点是跨语言,非常适合异步通信和针对松耦合的C/S,缺点是必须在运行时做很多检查。

随着时间的推移和SOAP的推广情况,大家很快发现其实世界上已经存在了一个最为开放、最为通用的应用协议,那就是HTTP,使用SOAP的确让进程间通信变得简单易用,但并不是每个厂商都愿意将自己的老系统再升级为支持SOAP,而且SOAP的解析也并不是每种语言都内置支持,比如JavaScript。而HTTP正好完美解决了这个问题,因此可以设计一种使用HTTP协议来完成服务端与客户端通信的方法,于是REST(Representational State Transfer,表达性状态转移)应运而生。REST一般用来和SOAP作比较,它采用简单的URL方式来代替一个对象,优点是轻量、可读性较好且不需要其他类库支持,缺点是URL可能会很长且不容易解析。1.2.4 从三层架构发展为多层架构

早期的Web GIS通常是典型的三层的B/S架构,如图1.3所示,包括前端的Web浏览器,后台Web服务器以及数据服务器,而GIS服务功能则内嵌在Web应用程序中。图1.3 典型的三层Web GIS架构图

但是为了在更大程度上方便地理信息数据及GIS功能的共享,以及方便二次开发,通常将GIS服务单独部署,这时的系统架构如图1.4所示。图1.4 四层架构的Web GIS

在上述系统架构中,可以利用现有的GIS服务,例如Google、Microsoft、百度、高德的地图服务,也可以利用商业ArcGIS Server或开源的GeoServer等地理信息服务软件,将地理信息发布为服务,在系统客户端利用JavaScript调用这些服务,从而在系统中集成地图及GIS功能。

正因为Web服务的独立性以及Ajax等交互技术,Web GIS的浏览器端程序可以访问多个Web服务资源,而不仅仅是本系统拥有者所开发的Web服务,这就演化为如图1.5所示的混搭架构。图1.5 多层架构的Web GIS

混搭技术指整合网络上多个资料来源或功能,以创造新服务的网络应用程序。该词源自于流行音乐将两种不同风格的音乐混合,以产生新的趣味的作法。虽然在古老的HTML 2.0版本中早有这个概念(将图片提供视为一种服务,一个网页中的文字与图片可以来自不同的网站,一个图文并茂的网页就是一种原始的混搭),一般还是将混搭技术视为Web 2.0的特性之一。Web技术的这种发展为GIS的实施提供了一种新的模式。一个用户可以从一个服务器获得一层信息,再从另一个服务中获取其他数据或专业模型,将它们融合在一起,进而产生基于Web的新的GIS应用模式。这种新的模式将极大地拓展GIS的应用范畴和服务领域。1.2.5 从Web GIS 1.0到2.0

早期的Web GIS是依据当时的网络环境提出的,近年来由于Web 2.0(主要包括Web服务、REST与AJAX等技术)的迅速发展,原本Web GIS中所依赖的方法与技术也不断在更新,表1.1显示了Web GIS 1.0与Web GIS 2.0之间的一些重要区别。表1.1 Web GIS 1.0与Web GIS 2.0之间的重要区别

Web GIS 1.0主要关注的是静态二维地图,Web GIS 2.0主要关注二维动态地图和对三维地图的研究(例如Google地图、Microsoft必应地图和ESRI ArcGIS Explorer)。这些Web GIS 2.0新增的技术提升了用户体验,而且让使用地理网络技术的用户拓展了一个数量级。Web GIS获取地理信息的方式同时也发生了转变,从使用FTP(文件传输协议)来传输地理信息方式,转变为直接使用数据流的Web服务和一组API。另一个重要变换是使用混搭技术。1.3Web服务

上一节中简单介绍了Web服务,由于Web服务是当前Web GIS核心内容,因此有必要更深入地详细介绍。1.3.1 Web服务的重要性1.3.1.1 从数据共享的角度看空间信息Web服务

空间数据共享一直是GIS发展的瓶颈。地理空间数据是研究地球形成演化、探讨人类生存环境、减轻自然灾害、合理开发资源和促进社会可持续发展的重要科学依据。随着网络技术及Web GIS的飞速发展和应用,更加迫切要求社会各部门能够共享地理空间数据以及与之相关的资料,实现地理空间信息的全球共享。地理空间信息共享的重要性主要体现在:

• 为决策全球化问题同时提供大量的科学地理数据。

•地理信息系统(GIS)发展的强烈要求。

• 为使用空间信息的社会各部门节省大量的人才、时间和金钱。

• 便于实现空间信息的规范化和标准化。

• 可以加强空间信息的高效管理、维护、重复利用和有效增值。

• 为数字地球的建设奠定基础。

空间信息共享是指使得查询、浏览、获取、交换、使用和再加工地球上与人类生存直接或间接相关的信息能够做到方便、快捷、准确、安全和全面,包括对部分信息处理资源的自由使用。空间信息共享强调空间数据集之间的相互透明访问和信息用户对数据集的透明访问与使用,注重从空间信息的语义层次、数据模型层次和数据结构层次消除空间信息描述方法上的差异性以及表示方法上的差异性,对空间信息给出统一的描述和表示,达到空间信息本质上和形式上的共享。

空间信息共享活动涉及了3个主要概念:空间信息资源、空间信息的获取与处理和空间信息应用。而这样也就出现了3种不同的角色:空间信息提供者、空间信息处理软件和提供者——就是通常所谓的GIS以及用户。

空间信息共享要解决可达性、互操作性和易用性。

可达性是指用户能存取到数据。通过空间信息Web服务,用户可以通过其中提供的数据服务,来查找、获取用户感兴趣的数据,这种数据可以分布于网络上,并由不同的服务商来提供不同区域、不同专题、不同质量的数据。

互操作性是指在不同的GIS之间能互相操作、对数据能进行相同的理解。GIS互操作的关键就是解决空间信息异构问题。而信息具有语法和语义,可以分层次讨论信息异构问题。因此在互联网环境中的空间信息共享,通过空间信息Web服务,可以进行语法及语义差别的消除工作。在消除空间信息资源的语法差异方面,通过Web Services可以在数据的请求者与服务者之间用统一的数据格式,这种数据格式包括GML在内,它们已逐渐形成标准并在Web服务中使用。在消除空间信息资源的语义差异方面,语义Web等方面的进展也可以对此有所帮助。

在数据共享所采用的技术方面,包括数据格式转换,通过API直接读取,是比较低层的方式;基于DBMS的集成,则可以使数据更统一,具有一定的互操作性;在基于Web Services进行集成的系统中,数据有统一的Schema描述,数据之间在进行接口时有统一的协议和标准,可以有效地实现数据的共享,如图1.6所示。图1.6数据共享方式1.3.1.2 从软件复用的角度看空间信息Web服务

GIS技术经过长期的发展,特别是近年来的长足进步,已经积累了大量的基础软件及应用软件,这些软件的功能不同、编程方法不同、编程接口不同且用户界面也不相同。在新的网络日益发展、软件技术飞速进步的今天,如何有效地发挥这些软件的功能,充分利用已有的软件或软件构件,来实现功能更强的软件或快速实现一个应用系统,也是一个重要问题。存在大量的可复用构件是有效复用的基本前提,而有效地管理大量构件,提供方便的构件存储、构件检索和构件提取等功能,则是成功复用的必要保证。Web服务系统则为这种复用和管理提供了一种技术支持。

首先,将现有的GIS系统中的功能改造成Web服务是可行的。由于Web服务采用的技术基础是XML,它是一种规范化的文本,易于被各种编程语言进行处理,这使得可以利用现有的GIS系统中的功能进行分解、重组、规范化,从而提供Web服务接口是可以实施的。

其次,在Web服务中的对象实际是网络上分布的对象。这些对象不论其内部如何实现,但在这些对象之间是靠通用的接口来进行通信的,这些接口遵守各种层次的协议,如XML、SOAP、WSDL等。对于空间信息Web服务中的服务,还有与空间信息处理相关的协议,如WFS(Web Feature Service,网络要素服务)、WCS(Web Coverage Service,网络地理覆盖服务)等。一个系统可以方便地调用远程对象,而不论这种对象是在哪种平台上,也不论这种对象是用什么编程技术来实现的,这样就通过Web服务的对象复用实现了更高层次的对象复用。

另外,Web服务是服务的松散集合,可以方便地发布,并可以通过程序自动或人工地进行查找和调用,这就给利用已有的Web服务带来了方便。例如,可以将现有的多个不同供应商提供的地图显示服务集合起来,再形成一个新的、面向专题的地图服务。1.3.1.3 从系统集成的角度看空间信息Web服务

在一定意义上Web服务技术是一种系统集成的技术。Web服务用于GIS是一种更好的进行GIS系统集成的技术。

GIS系统的集成技术经历了以下的发展过程。

1.基于对象技术的RPC方法

多年以来,应用程序分布式集成计算方法的演化基本上都是基于远端过程调用(RPC, Remote Procedure Call)机制。RPC是指应用程序对运行在远端计算机上的代码进行功能调用。为实现该调用的请求,在相互协作的计算机之间,需要使用特定的协议支持来对信息数据进行打包、发送和接收。

目前基本上每种主要的对象技术均有其自己的RPC技术。Microsoft组件对象模型(COM)使用DCOM/COM+, CORBA使用IIOP, Java使用RMI。这种以“分布式对象”为标志的集成分布式系统,在应用于集成更广泛的分布式系统时具有很大的不足。由于这些应用程序接口需要“严格匹配”,并与目标系统的专用技术密切相关,所以其连接非常脆弱,很难实现真正的跨平台、异构系统的集成。由于这些相互关联的组件可能各不相同,所以开发和维护的费用非常高。由于在等待远端所访问资源的响应时,对组件进行的同步调用经常“阻塞”,所以其可扩展性也存在固有的缺陷。

2.基于消息中间件技术的RPC方法

基于消息的中间件技术引入了关联的方法,以便使用消息传送技术集成更大地域范围中的分布式系统,改进了对象集成技术的可扩展性和可管理性。由于这样通常不会阻塞应用程序的调用,应用程序可以“发送并忘记”信息,从而使操作更有弹性和可扩展性。Microsoft、IBM、BEA等公司都提供消息队列与事务处理中间件产品,支持分布式应用系统的集成。

基于“消息中间件”的集成技术的一个主要限制就是它的开放性。首先,即使系统最初可以接受开放数据格式,它们仍然基于专用程序很高的技术,并使用专用的接口和专用的内部数据表示方法;其次,购买这些技术、集成和后续维护昂贵,且这些技术通常需要在应用程序连接的两端同时运行特定的软件或各有一份客户许可协议,这样增加了成本、消耗时间并增加了集成的复杂性,集成的范围也受到限制。因此需要一种开放的系统集成技术,使用符合工业标准的传输协议、过程调用和数据表示方法,以支持平台分布式系统的低成本集成与互操作。

3.SOAP风格的Web服务方法

早期Web服务方法起源于XML-RPC技术。在1998年,Userland、DevelopMentor与Microsoft一起发布了XML-RPC(http://www.xmlrpc.com)。XML-RPC提供了一种简单的机制,使处于不同环境下的应用之间,可以通过互联网来进行远程过程调用。它采用XML作为编码标准,HTTP为传输协议。XML-RPC通过HTTP请求向RPC服务器提交请求,通过HTTP响应Response获得RPC的调用结果。这种XML-RPC技术突出地强调了XML和HTTP的作用,使用应用的集成可以跨平台地进行。后来,IBM、Microsoft、SAP等公司共同在此基础上逐步提出了Web Services的概念,并制定了一系列服务调用、发布、集成的协议,使Web Services成为新一代的系统集成方法。

SOAP风格的Web服务将应用逻辑封装起来,对于用户只提供标准接口。对于客户端,服务器上的数据和应用逻辑是透明的,因此它能够灵活组织网络资源,较好地解决地图的共享问题。但是基于SOAP的Web服务依赖于定制,每个SOAP消息使用独特的命名资源的方法,每个SOAP应用需要定义自己的接口,SOAP的这些特点对于服务间的互操作的实现十分不利;另外,SOAP协议栈并不是专门为GIS而设计,没有考虑GIS数据具有空间参考、海量存储等特点,除了简单、小规模的GIS应用,SOAP协议栈很难不加改动地应用在地理信息服务领域。

4.REST风格的Web服务方法

REST为解决上述问题提供了新的契机,它以更贴近WWW基础协议的方式来实现Web服务,大大简化了Web服务的设计与调用。因此当前更流行的是基于REST风格的Web服务。

空间信息Web服务就是将这种新的技术应用于地理信息系统,解决地理信息系统中的多源、异构、分布系统的集成问题。1.3.2 REST及REST风格的Web服务

因为REST风格的Web服务与复杂的SOAP和XML-RPC相比而言明显更加简洁,越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的;国内百度地图、高德地图提供的地图服务也是REST风格的。REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高、而安全要求不高的场景。本书后面内容中发布与使用的也是REST风格的Web服务,因此这里再详细介绍其特点。1.3.2.1 REST

单纯就REST术语的出现而言,它是由Roy Fielding在2000年的论文中首次提出的一种软件架构。

REST基础概念包括:(1)在REST中的一切都被认为是一种资源。每个资源由URI标识。(2)对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。也就是说使用统一的接口,而不像SOAP风格的服务那样,每个服务的名称都是不同的。(3)无状态。每个请求是一个独立的请求。从客户端到服务器的每个请求都必须包含所有必要的信息,以便于理解。(4)资源的表现形式则是JSON(JavaScript Object Notation)、XML或者HTML,取决于读者是机器还是人,是消费Web服务的客户软件还是Web浏览器。当然也可以是任何其他的格式。

REST架构风格最重要的约束有如下6个方面:

• 客户/服务器

通信只能由客户端单方面发起,表现为请求/响应的形式。

• 无状态

通信的会话状态应该全部由客户端负责维护。

• 缓存

响应内容可以在通信链的某处被缓存,以改善网络效率。

• 统一接口

在通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。

• 分层系统

通过限制组件的行为(即每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。

• 按需代码(可选)

支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展。1.3.2.2 REST风格的Web服务

REST风格的Web服务(也称为REST风格的Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下3个方面资源进行定义:

• URI,比如:http://example.com/resources/。

• Web服务接受与返回的互联网媒体类型,比如:JSON、XML、YAML等。

• Web服务在该资源上所支持的一系列请求方法(例如POST、GET、PUT或DELETE)。

表1.2列出了在实现REST风格Web服务时HTTP请求方法的典型用途。表1.2 HTTP 请求方法在REST风格Web服务中的典型应用1.3.3 查看在线的Web服务

那么如何访问这些REST风格的空间信息Web服务呢?一般包括以下4个步骤。(1)构建请求URL。

URL由服务的端点加参数构成。

首先确定端点。每个GIS服务都有一个端点,例如一个典型的WMS(Web Map Services,网络地图服务)地图服务的端点为:

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi? SERVICE=WMS

然后确定操作。不同GIS Web服务支持不同的操作。不同的操作会返回不同的结果。地图服务可以输出地图、识别某要素。输出地图可以生成地图,同时识别出地图服务层的属性表。例如WMS提供GetMap操作,返回指定范围的地图图片。

接着确定参数。不同的操作需要不同的参数。例如,如果请求地图图片,需要提供地图范围的四周角点坐标参数,也就是地图覆盖范围。

最后确定输出格式。

例如一个访问美国雷达地图的URL格式为:

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi? SERVICE=WMS&REQUEST=G etMap&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=&VERSION=1.3.0&LAYER S=nexrad-n0r&WIDTH=877&HEIGHT=276&CRS=EPSG:900913&BBOX=-15252263.28954773, 2902486.4758432545, -6671748.242369267,5602853.811101243(2)提交URL请求到服务器。可以不通过编程发送URL请求。例如,只需要在网页浏览器的地址栏中输入网址。每种编程语言都有不同的提出请求方式。(3)服务器处理请求,并运行Web服务代码,然后将结果返回到客户端。该结果通常是一张图片或包含信息的字符串。(4)解析和使用响应。

并不是所有的请求都调用Web服务代码,一些Web请求内容仅仅返回一个文件。而这就是切片地图工作原理,也就是切片地图服务快的原因。在后面的内容中将更详细介绍切片地图。现在来观察一个指定缩放级别、行与列的切片的请求:

http://a.tile.openstreetmap.org/15/11068/19742.png

该请求下钻到服务器的文件结构中,并将请求的PNG图片作为响应返回给客户端。在服务器端除了检索文件之外,并没有运行代码,因此也可以说并没有调用Web服务。但是,这类简单的Web请求同样是许多Web GIS的重要组成部分。

并不是所有的Web服务都是用同样格式的URL与参数。本书介绍了Web服务最常用的格式,特别是那些开放标准与开源软件的Web服务。

虽然我们在访问Google地图、必应地图以及百度地图等网站时,并不需要使用上述复杂URL,但是浏览器确实是在发送成百上千这样的请求到服务器上。下面通过Firebug这一Mozilla Firefox浏览器的插件,介绍查看浏览器在后台如何发送这些请求的方法。(1)单击Firefox浏览器上的“工具”选项,然后单击“附加软件”,在弹出的小窗口中,单击右下角的“获取扩展”选项,在打开的页面中搜索Firebug,最后在搜索结果的页面中下载Firebug并安装。(2)重新启动Firefox浏览器,打开网址为http://map.baidu.com/的百度地图网站。(3)单击状态栏中最右方的灰色昆虫按钮(),或使用快捷键F12启用Firebug插件,它会将当前页面分成上下两个框架,并且此时灰色按钮变成红色()。如果有两个显示器,最好使用快捷键Ctrl+F12,在另一个窗口打开Firebug。(4)在Firebug窗口中,切换到“网络”面板。如果是第一次使用,则需要使用“网络”标签旁的下拉箭头启用监视网络功能。(5)在百度地图窗口中进行漫游、放大缩小等操作。(6)这时在“网络”面板中会显示发送的许多Web请求,大部分是请求地图切片。将鼠标悬停到某个请求上,如果请求返回的不是图片,则会显示完整的URL,否则还会显示响应图片的缩略图,如图1.7所示。(7)展开请求,可以查看请求更为详细的细节,包括发送的参数、头信息、响应以及缓存等。图1.7 利用Firebug查看浏览器发送的请求

Firebug是Mozilla Firefox浏览器的开源扩展,提供了很多工具,可以监视、编辑和调试任何Web站点的级联样式表(CSS)、HTML、文档对象模型(DOM)和JavaScript。Firebug包括一个JavaScript控制台、一个日志记录API以及一有用的网络监视器。利用Firebug可从各个不同的角度剖析Web页面内部的细节层面,可以很轻松地调试和优化Web和Ajax应用程序,给Web开发者带来很大的便利。

其他最新的浏览器一般也都包含类似的“开发人员工具”(Internet Explorer)、“开发者工具”(Google Chrome)菜单。1.3.4 OGC的Web服务规范

在GIS分布式、互操作方面,一些组织(如OGC, UCGIS等)正在制定相应标准和进行一些实验项目,其中OGC在空间信息Web服务方面制定了一系列规范,统称为OWS。

在OWS服务体系中,主要包括如下6个部分,如图1.8所示。图1.8 OWS的组成(1)地理数据服务(Data Service)。

提供对空间数据的服务,主要有WFS、WCS。地理数据服务返回的结果通常是带有空间参照系的数据。(2)描绘服务(Portrayal Service)。

提供对地理空间信息进行可视化的能力。给定一个或多个输入,描绘服务会产生渲染后的输出,例如地图的制图描绘、地形的透视图、影像的注解图、特征地物在时间和空间上的动态改变等,主要有WMS。(3)处理服务(Processing Service)。

提供对地理空间数据进行操作的服务和增值服务,主要有WPS(Web Processing Service,网络处理服务)、Geocoder(地理编码服务)、Gazetteer(地名辞典服务)、Coordinate Transfer Service(坐标转换服务)等。(4)目录服务(Catalog Services)。

提供对各种服务、数据及相关资源的描述信息(即元数据)集合的发布与查询,包括服务目录、样式目录、数据目录、设备目录以及其他类型的目录。(5)编码(Encodings)。

所有OGC框架的编码规范都采用XML Schema来定义。这些编码描述了特定的词汇表,用于在应用客户和服务之间、服务与服务之间封装成消息的数据传输。OGC的规范定义或计划定义的编码主要包括GML(Geography Markup Language,地理置标语言)、SLD(Styled Layer Descriptor,样式化图层描述符)以及Service Metadata(服务元数据)等。(6)客户端应用(Client Application)。

即客户端的基本应用,如地图的显示、地图浏览以及其他一些增值服务。1.4自由及开源软件、开放规范与开放数据

当前商业GIS软件的使用和维护费用越来越高,例如包含客户端与服务器端一整套的ESRI ArcGIS软件售价约为70万元人民币。而且其销售策略是,若购买了服务器端软件则必须购买客户端软件,其理由是用户既然使用了其服务器端软件来发布服务,那必然就需要使用其客户端软件来处理数据。这对一些比较小的Web GIS应用来说,远远超出了其可承受的范围。并且众多商业软件GIS的数据和操作并非完全能够转换和共享,造成一些信息孤岛。不过在商业GIS软件的对面活跃着开源GIS。OGC成立于1994年,致力于研究和建立开放地理数据交互操作标准,使用户和开发者能进行互操作。国际地理空间开发基金会(Open Source Geospatial Foundation)成立于2006年2月,其使命是支持开源地理信息软件和遥感软件的开发及推动其更广泛的应用,并对其支持的项目提供组织、法律和财政上的帮助,促进OSGeo基金会基于地理信息开发标准软件及其互操作技术的开发、推广和普及。OSGeo中国中心于2006年9月成立,帮助中国地区的用户和开发者更好地使用OSGeo基金会提供的源代码、产品和服务。1.4.1 自由及开源GIS软件

自由及开源软件是一种可以归类为既是自由软件又是开源软件的计算机软件。也就是说,任何人被授权后都可以自由地使用、复制、研究和以任何方式来改动软件,并且其源代码是开放和共享的,因此人们被鼓励志愿地改善软件的设计。这种软件是相对于商业软件而言,而后者是在版权的严格限制之下,并且通常其源代码对于用户是不开放的。

当前存在许多包含了各种层次的自由及开源的GIS软件,例如大型的桌面GIS有QGIS和GRASS GIS等,目前比较流行的服务器端软件有Geoserver、MapServer和QGIS Server等,还有开源的GIS数据库项目如PostGIS/PostgreSQL Spatial Database,另外还有一些数据转换工具(如OGR和GDAL)以及地图投影算法库(如Proj4和Geotrans)等开源项目。这些软件大多都得到OSGeo的支持。

GRASS是大型的GIS系统,最早由美国军方建筑工程研究实验室构建维护,后来贡献给开源社区,目前GRASS已经覆盖大多数GIS系统的操作函数,有超过300个经典算法。GRASS就是一个开源版本的ArcGIS。QGIS是一个用户界面友好的桌面GIS系统,使用基于QT的图形库实现,大名鼎鼎的KDE图形和Google Earth也是基于QT构建。而且QGIS可以很好地支持GRASS的算法接口,成为了GRASS的一个重要的前端表现工具,QGIS就是一个简化版本的GRASS。GRASS和QGIS都是跨平台的桌面GIS软件,可以运行在很多操作系统上。本书将介绍在将数据发布为Web服务之前如何使用QGIS浏览并操作数据。

MapServer底层采用C语言来编写,基于CGI脚本实现,页面调用支持PHP、JSP、JavaScript等多种语言,并对OGC的WMS和WFS提供支持。GeoServer基于Java和GeoTools库开发,它的功能全面遵循OGC开放标准,GeoServer对发布WFS-T和WMS提供便捷的支持,并以XML文件描述所有地图服务。本书将介绍如何用GeoServer来发布空间信息Web服务。

PostgreSQL是一个开源的基于对象的数据,PostGIS则是为PostgreSQL提供空间支持,类似ArcGIS的空间数据引擎ArcSDE。本书也会介绍如何使用PostGIS来存储空间数据。

对于需要使用API将地图图层组合起来并显示在网页中,其中最为成熟的是OpenLayers。OpenLayers是一个用户开发Web GIS客户端的JavaScript包,实现访问地理空间数据的方法都符合行业标准,采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。本书将会介绍如何使用OpenLayer来访问空间信息Web服务。其他对应的FOSS API包括Leaflet、ModestMaps、D3以及Polymaps等。1.4.2 开放规范的使用

这里要介绍的是两类开放规范。(1)开放数据格式。

如果某数据格式有完备的描述文档,对于各种GIS软件都能读写,并且格式的发明者没有宣称任何版税的权利,那么该数据格式就是开放的。

文本格式的开放数据格式包括KML(Keyhole Markup Language, Keyhole标记语言)、GeoJSON与TopoJSON等,JPEG与PNG是栅格中开放的数据格式。ESRI Shapefile(shp)简称为Shapefile,是美国环境系统研究所公司(ESRI)开发的一种空间数据开放格式。目前,该文件格式已经成为了地理信息软件界的一个开放标准,这表明ESRI公司在全球的地理信息系统市场的重要性。Shapefile也是一种重要的交换格式,它能够在ESRI与其他公司的产品之间进行数据互操作。与此相反的是ESRI的文件地理数据库(File Geodatabase),该格式是封闭的,除了ESRI的工具之外,其他软件不能打开与创建。(2)开放规范。

GIS界最主要的开放规范就是OGC制定的一系列规范(已经在“1.3.4 OGC的Web服务规范”中进行了介绍)。国际标准化组织(ISO)技术委员会211(TC211)也是最主要的空间信息标准组织之一。目前ISO/TC 211已经完成或正在制定的地理信息国际标准约有40余项,包括《地理信息参考模型》《地理信息概念模式语言》与《地理信息术语》等。

此外,ESRI与多个其他组织合作进行开发,正在推动开放式GeoServices REST规范的使用。此规范为Web客户端利用REST技术与GIS服务器进行通信提供了标准方法。通过ArcGIS for Server发布的Web服务遵守此规范。这意味着非ESRI的开发者可以自由地创建应用来发布与访问符合该标准的Web服务。虽然GeoServices REST并没有得到OGC的采纳,但这是一个商业软件自愿公开规范的典型例子。1.4.3 开放数据的作用

开放数据是一类可以被任何人免费使用、再利用、再分发的数据。在其限制上,最多是要求署名和使用类似的协议再分发。

Data.gov中包含了许多由美国政府收集的开放数据。此外,开放街道地图(OpenStreetMap,缩写OSM)也是一个广泛使用的开放数据源,如图1.9所示。OSM项目由英国人Steve Coast创立,概念启发自维基百科网站,是一个构建自由内容之网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图,并且让廉价的移动设备有方便的导航方案。本书将在后面的内容介绍如何从中获取数据。图1.9 北京西站附近开放街道地图数据1.5实践1:QGIS的安装与基本使用

在将数据发布为Web服务之前,需要进行收集数据、格式转换、数据编辑、样式设置等这些大量的数据准备工作,这些准备工作是创建Web GIS的一部分。这些工作需要使用客户端软件,本书介绍使用的是QGIS这一FOSS软件。

在该实践中,将介绍如何安装QGIS及其矢量数据的处理操作。(1)下载Shapefile数据。

请从前言中给出的下载地址下载本书提供的资源。这里所使用的数据位于“Data\Ottawa”目录中,是加拿大安大略省渥太华市的数据。(2)下载QGIS安装程序。

读者可以访问QGIS官方网站(www.qgis.org),在其主页单击“Download Now”按钮,进入下载页面。对于Windows操作系统的用户,可根据操作系统是32位还是64位,选择QGIS Standalone Installer Version 2.6(32 bit)或QGIS Standalone Installer Version 2.6(64 bit)。本书编写时最高版本是2.6,如果读者在阅读时QGIS推出了更高版本的,可以下载高版本的。

对于32位的Windows操作系统的读者,也可使用本书提供的安装程序,即位于Tools文件夹中的QGIS-OSGeo4W-2.6.1-1-Setup-x86.exe文件。(3)安装QGIS。

安装时一切都选择默认设置即可。安装完成后,桌面上不仅包含了QGIS Desktop程序快捷键,此外还包含了其他4个应用程序的快捷键,包括GRASS GIS、OSGeo4W等。(4)添加矢量文件。

打开QGIS Desktop程序。若要加入矢量文件,可以通过窗口左边的“浏览器”定位到要加入的文件,然后将其拖到“图层”管理器中即可。也可使用按钮,打开“添加矢量文件”对话框,然后通过“浏览”按钮找到需要的文件。不过要说明的是,虽然一个Shapefile同时包含几个文件,但是只需要选择文件扩展名为.shp的即可。按照上述两种方法之一打开roads.shp文件。(5)设置符号。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载