智慧地图:Google Earth、Maps、KML核心开发技术揭秘(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-27 13:36:38

点击下载

作者:马谦

出版社:电子工业出版社

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

智慧地图:Google Earth、Maps、KML核心开发技术揭秘

智慧地图:Google Earth、Maps、KML核心开发技术揭秘试读:

前言

Google Earth的前身是Keyhole Earth,它的第一个版本推出至今已经有四年了,而且Google Earth的版本更新非常快,几乎每隔几个月就有新版本推出,同时其KML脚本也不断有新特性浮出水面。与此同时,这本书也是伴随着Google的发展更新至今。

纵观Google的发展,Google的每一个技术革新都能造福全人类。对于新技术而言,今天的人们需要有快速反应的能力,并且在现实应用中取得立竿见影的效果,如今Google的产品线几乎触及互联网和桌面软件的每一个角落。例如,搜索引擎有大名鼎鼎的Google;地图产品有Google Earth、Google Maps、Google Maps Mobile,其中Google Maps Mobile是基于移动平台的又一力作;桌面产品从Google桌面搜索引擎到图像处理软件、智能输入法、三维建筑建模软件SketchUp等应有尽有;办公产品包括了Google Web Office、Gmail、Gtalk等各种协助办公的利器。可以说Google公司的产品已经囊括了大部分的软件应用,它已经成为了网络互联时代信息整合的领袖级航母。

编写本书的目的

笔者在2005年第一次接触Google Earth时候萌生了写作本书的想法。当时的Google Earth像一阵超级龙卷风一样,它的免费卫星图片以精细的效果给人留下了深刻的印象。笔者正好当时也从事一个市县级土地更新利用调查项目,经朋友的介绍第一次接触了Google Earth, Google Earth作为一个免费使用的软件,在卫星图片的质量和精度上丝毫不逊色于飞机航拍的专业照片效果。激动之余深感Google Earth的精妙——科技才是第一生产力。

本书初稿写成于一年前,其间经过了很长时间的跨度,加之技术的发展和Google的飞速更新,另外API的变化也可以用日新月异来形容,为了能跟上更新速度,笔者又重新把Google地图的有关新闻、新技术、新发展、3G上的概念等重新做了梳理和添加,对API和KML也重新做了彻底更新、分类、整理,力求符合当前官网上的最新版本。

Google Earth当时如果能够应用到诸如国土资源规划和调查等事务上,其前景会是更加可观的,不但可以省去了航拍的环节和日后维护的成本,并且还会带动一大批相关产业的发展,可谓一举多得。加之后来的Google Maps/Google Maps Mobile的问世,也会带来越来越多的应用问题,这就是笔者写作本书并把它推出来与读者见面的原因。

本书的特色

●全新的内容、大量的实例代码

作为一个“三维空间版”Google搜索引擎,Google Earth/Google Maps一直以快速、实用为主的原则不断改进,因此在编写Google Earth、Google Maps开发书籍的时候,也需要同时关注着这些改动,并紧跟发展趋势。因此本书中的一些图片和所举事例基本上引用了Google Earth的最新版本,同时结合了大量的实例代码。这些实用的代码片段是本书的另一个亮点,几乎每个接口中的属性和方法都有一段对应的代码实例,这些代码清晰明了,既可以作为其他软件项目开发的参考,也可以作为教学的资源。

其中的实例代码均经过调试,可作为读者参考之用,也欢迎广大读者通过网络与我们进行交流,共同探讨。

●重点内容的重点讲解

本书特别对于KML的使用做了详细的介绍,KML作为Google Earth/Google Maps的执行脚本,起着重要的作用。例如,Google Earth就没有提供绘制地理要素的接口方法,取而代之的是KML脚本,通过它可以做出很多实用的效果,并且在未来的一段时间里,笔者估计KML会成为Google Maps Mobile的首选脚本。因为相比于其他的平台,移动平台目前的图形图像与三维的API还不是十分完善,存储数据的功能也不强大,因此作为泛XML脚本的KML有着强大的优势,本书的第3章我们对KML的开发编程进行了充分的阐述,并且在后面的章节中也给出了相关联的应用。

●流行开发架构案例的详解

同时本书还介绍了很多目前流行的开发架构,阐述了其中的概念、原则、机制和方法,例如COM、AJAX等。第5章关于Google Earth API的介绍中,不仅描述了COM的机制和原理,还给出了实用的代码,并且结合新旧两个版本的Google Earth接口进行了对比,并指出相应的开发注意点。在第6章中,以重点讲解例子的方式给出了一个完整的AJAX结合Google Maps开发的案例,从讲解AJAX的技术背景慢慢深入,从这个实例的后台数据库的设计到前台的界面规划,都给予充分、详细的讲解。

读者对象

本书可作为Google Earth/Google Maps使用者、GIS/WebGIS开发人员、Google地图开发人员和兴趣爱好者的参考书。学习Google Earth、Google Maps的开发人员只要循序渐进、按部就班地阅读本书,就可从入门到精通,如果还能上机调试代码,则能够取得事半功倍的效果。如果读者以前有过实用Google Earth/Google Maps的经验,并且对之有比较深入的了解,则可以直接跳过第2章而阅读后面的章节。

希望本书可以成为读者的良师益友。

主要内容

本书共分6章,内容简介如下。

第1章 介绍了Google的背景及Google Earth的一些新功能与应用,对比其他现有的同类产品与GIS软件的异同。然后介绍了Google Earth的开发应用前景——Google Earth的前景喜人。

第2章 主要介绍了Google Earth和Google Maps的基本使用,其中讲解了Google Earth的不同版本、使用政策,以及安装和重点使用技巧,也讲述了Google Maps的一些使用方法,重点介绍了移动平台上的Google Maps Mobile的使用方法。相比于Google Maps,笔者认为Google Maps Mobile将是日后Google的主推产品。

第3章 主要介绍了KML脚本的使用,讲解了从KML的起源到KML炫目的应用,再分析KML每一个函数、节点、参数的定义,并结合每一个小例子说明其如何使用。本章最后给出了一个结合SketchUp建模的应用例子,并列出了建模的每个步骤。

第4章 讲述Google Maps API。其中讲述了HTML/JavaScript的基本编程方法,从Gmail账户的获取(开发Google Maps需要有Gmail账户)、Key的申请到每一个函数的使用,参数的定义,并列出了每一个开发过程中会遇到的问题和注意事项,包含了大量的代码。本章的最后,还给出了一个实际的应用例子并详解之。

第5章 讲述Google Earth API,并结合Delphi这个优秀的教学语言逐步讲解,同时给出了c#的参考代码,省去了读者花时间去学习其他语言的过程,以清晰明了的语法给出Google Earth API接口的定义和使用,包含了大量使用的代码。本章最后也详解了一个应用实例。

第6章 结合目前流行的AJAX和其他一些开发小工具,给出了一个完整的AJAX+Google Maps开发的案例,并且在一些诸如JavaScript编程的小技巧上给出一些经验性的总结,体现了当前计算机技术的发展方向。

最后感谢电子工业出版社的田小康老师能慧眼识金,给予笔者这个难得的能够研究这个课题机会,感谢我的亲人和朋友们,他们在我写作此书的伊始就给予了我无私的帮助和专业的指导,感谢你们的关心和鼓励。

本书写作过程时间仓促,加上笔者水平有限,难免存在不当之处,恳请广大读者批评指正,您的批评建议是给予我的最好帮助。

第1章 Google Earth/Google Maps简介

本章简单介绍Google Earth/Google Maps的背景及其使用前景等内容。

1.1 神奇的Google

“一个人只要知道去哪儿,全世界都会给他让路。”正如David Starr Jordan所说,Google就是一个知道自己去哪儿,并且明白将要做什么的公司。从斯坦福大学的盖茨楼360室的两人办公室以爆炸式的速度变成分支机构遍及全球的跨国公司,每一秒Google都迅速并准确地处理着来自世界各地的数以千万计的搜索请求,把分散在世界各个角落的数据汇聚成有用的信息,再以高效、巧妙、便于理解的方式传递给用户。“完美的搜索引擎可以加工和理解世界上的一切信息,这正是Google前进的目标。”这是Google创始人之一的拉里·佩奇的一句振奋人心的话。全世界都看到了Google从1998年成立以来,正神奇地把互联网期待已久的梦想变为现实,一次又一次飞快地推出震撼性的服务和功能,吸引着全世界媒体目光的聚焦,以其无限的潜力吸引着最聪明的人才和风险投资源源不断的加盟,Google已经成为了快速、创新和财富的代名词。

Google一轮又一轮的股价神话,Google超级搜索引擎的产业链,Google依靠其网络优势而推出了一系列服务,谁能想到这就是拉里·佩奇曾经拼写错误名字而造就的Google。

据可靠的互联网统计数据表明,2006年全球网站访问排名中,增长最快的就是Google,增长率达到了13%,而微软和雅虎的企业网站访问增长率只有5%。为Google网站访问排名作出贡献的两大服务的其中之一就是Google Maps地图搜索服务,访问的增长率达到了62%(Google Maps的网址是http://maps.google.com)!

如今,Google的触角已经不仅仅局限在互联网搜索引擎和广告收入,它不是一家安分守己的公司,Google有着足够的财力和人力去制作任何自己感兴趣的软件,大到包括被软件霸主Microsoft视为根据地的操作系统领域,小到一个拼音输入法工具,着力渗透到计算机软件的每一个角落,Google正用前所未有的超凡魅力征服着整个世界。

1.2 Google的地图服务

Google是网页搜索界的翘楚,推出了很多专利搜索技术,不过传统的网页基本上是基于“二维”字符搜索的,而Google地球的出现彻底改变了人们对网络搜索的概念,将网络搜索拓展到了“三维空间搜索”的范围。

1.2.1 什么是Google Earth和Google Maps

1.Google Earth

Google Earth是由Google公司于2005年推出的世界上第一款在桌面系统上浏览全球高精度卫星图片和三维数据的商业软件。Google Earth采用了C/S架构,用户可以通过它连接Google庞大的图像数据库搜索,查看地球上任何一个地方的卫星照片(包括其上的文字标注、图片、三维建筑、专题影音等)。这些卫星图像一般是2~3年前拍摄的照片,其分辨率最高可以达到0.61m,这个精度可以分辨出行人!

Google Earth包括一个免费的版本,可以在Google的网站上免费下载学习使用。目前Google Earth拥有很大的用户群,有各种各样Google Earth的爱好者社区,每天都会推出大量的关于Google Earth最新的资讯。例如,电视剧爱好者可以在Google Earth上找美剧《越狱》的拍摄地,驴友能寻找世界各地的死火山,美食家能寻找纽约街头的美食等。预计在不久的将来,Google Earth将变成一个可以供世界各地人们交流、娱乐的虚拟地球,如图1-1所示。图1-1 Google Earth

Google Earth使用了一种影音数据流技术将卫星图像以数据流的方式传输到客户端,用户可以在地图未完全显示的情况下进行视角切换和缩放,大大加快了交互时间和程序的反应速度。

2.Google Maps

Google Maps是Google在2006年推出的一款可以在网页浏览器上搜索、浏览地图的服务软件,它可以提供和Google Earth一样的卫星地图,还包括了着色为底图的地图,如图1-2所示。普通用户可以在maps.google.com上访问它的站点,高级用户可以把它作为网页元素放在自己的网页里。Google Maps采用了异步传输和无刷新技术,较好地解决了数据的传输和网页更新的问题,将用户的交互体验提升到了一个新的高度,以近乎流畅的浏览风格颠覆了人们对传统Web GIS操作的印象。

Google Maps还推出了可以在手机上使用的版本——Google Maps Mobile,如图1-3所示。目前可以运行在PalmTreo、黑莓、Windows Mobile等各种智能手机上。随着全球3G技术的发展和市场的逐步成熟,相信基于移动通信平台的GIS应用需求会呈现指数级的增长。图1-2 Google Maps图1-3 Google Maps Mobile

较传统的地图浏览器而言,Google Earth/Google Maps的优势也是Google搜索业务的优势——先进的搜索技术和庞大的搜索数据库,而Google地图业务的出现也反过来提升了Google在搜索领域的地位,将原先的“二维度”的基于关系表的搜索升级到了“三维度”空间搜索的高度,几乎可以搜索到任何和地理要素相关联的东西。而且Google Earth/Google Maps的搜索数据库还在不断地更新,几乎每个月都有新的卫星图片补充进来。

1.2.2 Google Earth和Google Maps产品出现的社会背景

美国的空间基础设施建设,从空间技术到空间数据商业利用的立法建设都很完备,空间基础设施投入资源巨大,需要国家全面参与。空间基础设施一开始时的所有投入都是为了军用目的,随着社会的发展和时代的变革,民用领域对空间数据的应用需求也不断增大,就像所有的涉及军用转民用的技术一样,遥感数据的民用也属于较为敏感的领域。美国于1992年和2003年分别出台了以下两个关于遥感应用的政策。

●Land Remote Sensing Policy Act of 1992(1992土地遥感政策法案)。网址:http://www.nasa.gov/offices/ogc/commercial/15uscchap82_prt.htm。

●U.S.Commercial Remote Sensing Policy 2003(2003美国商业遥感政策)。网址:http://www.fas.org/irp/offdocs/nspd/remsens.html。

这两项政策的出台极大地刺激和带动了美国民用遥感行业的发展。

在美国有很多商业遥感公司,如空间影像公司(Space Imaging Inc.)、地球观测公司(Earth Watch)、轨道图像公司(Orb Image)等。世界上最大的天基图像供应商Space Imaging,于1999年发射了世界上第一颗高解析度商业卫星IKONOS(依柯诺斯),IKONOS全色波段的图像分辨率能达到1m,多光谱波段的图像分辨率能达到4m,该公司还提供了美国军方高分辨率的卫星影像数据。

又如Earth Watch公司,拥有目前世界上分辨率最高的商业卫星QUICKBIRD(快鸟卫星),能提供分辨率达到0.61m的全色波段图像(据最新的消息表明,这个纪录又被刷新到了0.4m)和2.5m的多光谱波段的图像。Google Earth/Google Maps的高分辨率级别图像中就有很大一部分来源于Earth Watch公司旗下著名的DIGITAL GLOBE网络卫星图像数据库。

Orb Image公司拥有OrbView卫星,能提供1m全色波段和4m多光谱波段、近红外的图像,也建有Orbnet Digital Archive数据库,可以通过Internet给用户提供卫星接入服务。1999年该公司和全球著名的GIS领先厂商ESRI合作,推出了OrbView Cities计划,用于城市规划方向的研究。

这些企业的技术实力在全世界都是一流的,他们不仅仅拥有自己的卫星,而且在北美、欧洲、日本等还拥有自己的地面卫星接收站,还建有庞大的卫星图像数据库,更重要的是各种遥测机构和卫星地图商业代理机构遍布全世界。他们的用户不仅包括普通的商业用户,甚至还包括像美国国家航空和航天局(NASA)、国家图像测绘局(NIMA)这样的用户,同时为民用和军用提供卫星影像数据,构成了一条完整的遥感产业链。而且,我国很多城市也都有这3家公司的代理机构。

Google Maps的着色底图,是由NAVTEQ公司提供的,这家公司是世界一流的电子导航地图的供应商。在2006年度增长最快的100强企业排名中,它排在第5位(Business Weekly提供)。经过二十多年地图数据的投资和积累,NAVTEQ占据了欧洲、北美的汽车GPS导航地图数据行业的主导地位,比如宝马公司、福特公司、马自达公司和美国军方都是NAVTEQ的重要客户。这是一家充满活力并且有深厚技术背景的公司,相信所有人都会被NAVTEQ对自己的介绍所深深打动:“NAVTEQ是思想者、革新者和梦想家,我们是开拓者、战略家、研究员……”(翻译自网页资料http://www.navteq.com/about/corporate.html)。全世界汽车定位导航市场的兴起,让NAVTEQ赚了个盆满钵溢。如今,这家公司的目光已经盯上了互联网和3G移动通信市场,而此时Google也正好推出了相应的Google Maps和Google Maps Mobile。

通过以上的介绍,我们不难发现:Keyhole甚至后来的Google Earth、Google Maps、Google Maps Mobile等地图产品的推出,与美国基础科学的发展是密不可分的,其涉及的领域相当广泛,包括Internet网络建设、卫星遥感技术、海量数据库管理技术等诸多高科技领域。更重要的是,美国市场经济发达,能够培育出民用遥感需求的巨大市场,再加上经济政策、商业风险投资、企业跨国合作、人才流动等方针政策建设的完善,才使得Google Earth、Google Maps的孕育成长有了深厚的土壤。

以下列出了上面所提到的内容的网址。

●DIGITAL GLOBE数据库:http://www.digitalglobe.com/。

●Space Imaging Inc.公司网址:http://www.spaceimaging.com/。

●Earth Watch公司网址:http://www.earthwatch.org/。

●Orb Image公司网址:http://www.orbimage.com/。

●国家航空和宇宙航行局(NASA)网址:http://www.nasa.gov/。

●NAVTEQ公司网址:http://www.navteq.com/。

1.2.3 概念的产生——数字世界与数字地球

数字世界(Digital World)的概念于1995年被美国提出,此项目的主要目标是通过虚拟地球承载信息,并通过交互增加终极用户和地理科学的体验,最终将地理数据与信息社会的方方面面合二为一。随着地理信息科学的发展,特别是遥感(RS)、全球卫星定位系统(GPS)、地理信息系统(GIS)等主要地理科学技术的飞速发展,人类在技术上获得了从天上到地下的全方位监控地球的能力,并且在遥测、影像(采集、传输、校正、自动识别等)、地理空间海量数据库、软件工程技术、互联网技术方面取得了根本性突破,为下一个数字地球(DigitalEarth)概念的产生奠定了基础。

随着人类社会的进步,对自然环境、自然资源的重视已被世界各国提上了议事日程。如何更好地保护好自然环境,加强对自然资源的循环利用,增强社会生产的可持续性;如何将地理信息与环境、资源等社会信息结合起来,需要一个强有力的地理科学支持,数字地球的概念由此而生。它的产生和发展对于以地理信息为依据综合不同类别的社会资源数据起到革命性的贡献,同时对国家的空间基础规划建设、数据的标准化进程、基础信息网络的建设等提出了更高的要求。

可以说,数字地球既是高科技的结晶也是思维方式的变革,它要求人们站在全球的大环境下思考如何更深入地共享数据、整合资源。

1.2.4 技术的沉淀——3S技术在美国

美国的基础设施建设非常完备、深厚,涵盖了工业、农业、国防、教育、公共安全、医疗体系等各个方面,无论是政策、法律法规、金融渠道、市场环境、人才教育、人文环境都发展得较为合理,这些构成了孕育数字地球的摇篮,因此数字地球的概念出现在美国是必然的。

所谓3S技术是3个英文短语的缩写,分别是Remote Sensing(遥感,RS)、Geographical Information System(地理信息系统,GIS)、Global Positioning System(全球卫星定位系统,GPS),因为同时具有3个“S”字母,所以合称3S。RS作为其他两个“S”的排头兵,对整个3S的飞速发展起到至关重要的作用。

在美国,从事遥感业务的公司就有多家,如空间影像公司(Space Imaging Inc.)、地球观测公司(Earth Watch)、轨道图像公司(Orb Image)等。这些公司的科技实力不容小视,不光拥有自己发射的卫星,而且经过多年数据经验的沉淀,已经积累了丰富的影像资料,拥有一流的影像数据库,并且市场化渠道建立得也很出色,与之合作的国家也不少,如中国很多国土规划测绘机构、教育研究团体都从这里购买过卫星照片数据。

如果你认为如图1-4所示的是明信片上的照片的话,那么你就错了。这其实是Google Earth中卫星图片上纽约城市的一角,楼房、高架桥、汽车,甚至房顶上的中央空调冷凝器都拍得清清楚楚,Google的高清晰照片将城市的每一个角落都描绘得那么清楚。图1-4 纽约城市一角

很多世界一流的GIS软件供应商都是美国的,例如本书的主角Google公司,虽然从狭义的GIS概念上讲Google Earth/Google Maps都缺少了GIS系统的重要一部分——拓扑分析及与之相关的各种分析功能,但是它们的问世仍然引起了GIS领域的震惊。传统的GIS企业,如老牌GIS厂商ESRI,它的ArcInfo/ArcGIS系列几乎囊括了地理科学数据信息处理的各个环节,同时跨越多个计算机平台,也提供了目前主流的不同架构的GIS解决方案;再如专为中小型企业GIS在Windows平台上提供专业级的GIS软件和解决方案的Mapinfo;还包括正在跻身于GIS行业的AutoCAD推出的AutoMap及Bentley公司的MicroStation等;同时在开源领域还有著名的GRASS系统、Mapserver服务器系统等;另外还有其他各种大大小小的GIS软件公司,这些足以说明美国在GIS市场需求的庞大。

在GPS应用领域更是不必多说,GPS本身就是美国军方的科研成果,GPS接收设备从基站到手持天线,各种设备名目繁多,如知名的户外GIS手持机品牌高明(Garmin),它同时也是世界上最大的导航仪生产商。

3S的研究与应用在美国十分热门,随着互联网的普及,特别是无线网络的发展,会有越来越多的实用信息与地理信息绑定起来,再通过各种终端屏幕展现在人们的面前。今后的3S应用将逐步被世界上的每一个人所感知。

1.2.5 市场的驱动——民用市场的兴起

在美国,自从20世纪60年代起发射的卫星总数有一半都是军方的。过去在冷战时期美苏争霸的大环境下,任何具有军事价值的卫星图片都受到严格的监管,民用市场一直是个空白。而前苏联在1987年开放了分辨率为近5m精度的卫星图片,促使了美国人也逐步开放这一领域的民用限制。

早在1988年,美国就开放了分辨率精度为10m的卫星图像民用市场销售限制,使得民用遥感市场对高分辨率的图像需求大增。据悉到目前为止,美国商务部至少颁发了9种商业遥感卫星许可证。

目前的遥感卫星影像市场中,最高纪录是能分辨到0.4m的全色波段卫星图像,由Earth Watch公司的商业卫星QUICKBIRD所保持。这些卫星影像图片被广泛应用到农业、林业、城市规划、抢险救灾、车辆导航等各个领域。

就目前火热的车辆导航市场来说,NAVTEQ公司是世界一流的电子导航地图的供应商,也是Google Maps着色地图的供应商,是2006年度增长最快的100强企业之一。经过20多年地图数据的投资和积累,NAVTEQ成了欧洲、北美的汽车GPS导航地图数据市场的老大,如宝马公司、福特公司、马自达公司和美国军方都是NAVTEQ的重要合作伙伴。而在中国,车辆导航市场更是发展得如火如荼。由于政府对于地图数据的政策限制,国外的地图数据供应商还不能直接进入这个领域,因此给了国内很多GIS公司机会,如城际通、凯立德等都是比较知名的导航软件商。如图1-5所示的是一幅导航地图。图1-5 导航地图

从数字地球概念诞生之前的几十年到现在,可以看到民用市场正在以无比惊人的速度发展,也许随着科技的发展、时代的进步,数字地球的概念会发生变化。它或许不是人们的最终目标,但是我们必须相信,市场才是推动科技进步的摇篮。

1.2.6 政策的支持

数字地球研究的投入与完成,靠的不单单是某一个科研机构或者某一国政府,而是靠全世界成千上万的个人、公司、研究团体、科研院校等合力而为之。而像空间基础设施建设、基础信息网络的建设更加不能单靠某一个公司或者团体就可以完成,它需要国家甚至多国的战略合作才可以。

这些基础设施的规划建设投资巨大,并且通常与军事用途有密切的联系,众所周知的全球卫星定位系统就是美国军方20世纪70年代参与实施的。一开始是为了给美军提供陆、海、空全方位、全天候的精确定位,并且这些遥感卫星同时负责监控和检测各种军事目标,然而随着冷战的结束和全球经济的复苏,民用市场对GPS有了越来越强烈的需求,最终通过一系列宽松的政策,神秘的GPS才走向普通大众的生活。

政策对于尖端科学技术的应用是有巨大影响的,如前面提到的美国于1992年和2003年分别出台的两项关于遥感应用的政策,这两项政策的出台极大地刺激和带动了美国民用遥感行业的发展。

例如,使用精密卫星图片的Google Maps使用卫星图片的同时也使用着色地图,两种地图可以准确地相互叠加,没有发生任何人为偏移,同时Google Maps提供了经纬度与屏幕坐标转换的接口方法,此举方便了用户利用现有着色地图准确定位和查看,推动了免费地图数据最大限度地被挖掘利用。目前在手机移动平台上,Google Maps Mobile已经推出了可以连接GPS数据端口的功能,手机只要连接上GPS就可以在屏幕上定位当前的位置了。而这个移动平台的GIS项目正被越来越多的手机厂商、移动平台生产商,以及各个软件公司或者专业人员所关注,据测手机移动平台的GIS市场有上百亿美元的规模。

美国政府对待高精度的卫星图片服务的出口态度正趋于缓和,过去服务于本国或者盟友的卫星定位、数据采集、监控等高科技工具也可以服务于国际市场。这一方面填补了市场的空白,另一方面也促进了本国基础设施的充分利用,而且在针对别国的国防科技发展战略上也能起到一定的抑制作用,可谓一举多得。

以上说明了政策对于数字地球的深入发展起着决定性的作用,美国如此,世界各国亦然。政策的宽松必然带来经济的自由与繁荣,能够促进科技的进步。

1.3 Google Earth和Google Maps的历史

2004年10月,Google收购Keyhole公司,将Keyhole的地图服务整合进其核心搜索业务中。在http://www.searchengineguide.com的网站上,有很多对于Google整合Keyhole地图的评论和展望,刚开始有人支持也有人为此感到忧虑。

Keyhole公司是美国加州一家提供数字地图服务的公司,其发展过程也很有传奇色彩。2001年,Keyhole获得了Sony宽带的资金发展其Groundbreaking计划,逐步发展出一套Key-hole’s Groundbreaking EarthStream实时影像数据串流技术,并成功应用于航测图像的互联网传输浏览的应用领域。在很短的时间内Keyhole就争取到了一万多名用户,其中还包括《财富》1000强企业和一个政府跨部门机构。2003年,Keyhole更是获得了包括有资深政府背景的In-Q-Tel公司、国家测绘局等机构在内的资金支持,从此一举确立了其在地理航测图像和三维地理建模领域的领导者地位。

Keyhole的地图数据来源很广泛,通过一切渠道取得航测图像。同时,它也是美国数字地球公司DigitalGlobe(http://www.digitalglobe.com)和美国空间成像有限公司Space Imaging Inc.(http://www.spaceimaging.com)的客户之一。DigitalGlobe是一家提供高解析度商业卫星图像的公司,这家企业的业务遍及全世界。我国的国土资源部门、测绘机构与DigitalGlobe也有广泛的合作。DigitalGlobe目前最先进的卫星Worldview可以提供解析度为0.4m级的商业卫星图像,现在我们能够在Google Earth上看到的分辨率最高的图像解析度在0.61m,而Space Imaging公司则拥有世界上第一个全色卫星图像解析度达到1m的IKONOS卫星。这两家商业遥感公司,目前在世界商用卫星图像解析度排名上占第一、第二位,Keyhole很大一部分的卫星图片来源于这两家公司。

2004年,Keyhole加盟了Google,并于2005年推出了Google Earth。对于终端用户而言,Keyhole和现在的Google Earth功能上差不多,但Keyhole当时推出的软件是收费的,而之后的Google Earth却有一款免费(Free)版本,只要不用于商业目的,用户可以免费地使用这个软件和卫星图片数据。如此一来全世界都知道了Google Earth的存在,这个免费(Free)版本极大地促进了Google的推广,而且在某种意义上也培养了Google Earth Plus和Pro付费版本的用户群。

随后,Google在2006年很快又推出了Google Maps。Google Maps使用了两种地图底图,一种是传统的着色地图底图,另一种是和Google Earth一样的卫星图片。Google Maps彻底地改变了人们过去对于WebGIS的认识,它应用了AJAX技术,以无刷新的用户交互,流畅的地图浏览图像,轻而易举地挤入了WebGIS阵营,成为WebGIS领域的一匹黑马。

虽然从传统狭义的WebGIS概念上来讲,Google Maps还不算真正的WebGIS程序,缺少诸如拓扑分析的功能,但是这些都不是问题。而且随着未来市场需求的变化与扩张,相信在不久的将来,这些问题都会以另一种方式解决,这也是后起之秀的优势所在。

1.4 Google Earth/Google Maps在Google产品中的地位

20世纪90年代,美国国家地理信息与分析中心和大学地理信息科学研究会联合提出了数字世界(Digital World)的概念。1998年美国副总统科尔提出了“数字地球(Digital Earth)”的概念,从而推动全世界GIS产业的大发展,GIS开始逐步从地理研究院校、政府和军事机构走入民用市场。而7年之后,Google以全新的理念推出了一个足以震撼整个GIS业界的软件产品Google Earth,虽然Google Earth从严格意义上说不是一个典型的GIS软件,但是其他的GIS厂商不能无视它所带来的冲击。世界著名的ESRI(Environmental Systems Research Institute Inc.)公司,以ArcGIS全套GIS产品闻名于世,面对Google Earth的推出,也很快推出了一款类似功能的软件——ArcGIS Explorer与之抗衡。我们应该感谢Google Earth这个“搅局者”的及时出现,才使得我们在面对几个GIS大厂商主导的世界里有了更多的选择。

而在另一领域,以往的几个网络主导搜索服务商更是被远远地甩在后面,Google并没有明确谈论推出Google地图服务的真正原因,或许网络上存在着各种各样的评论和分析,对于Google的众多产品线而言,地图服务应该是其搜索业务的一部分。Google地图特别是Google Earth的推出,把过去的“非空间”网络搜索上升到了“空间搜索”的高度。虽然这过去是由Keyhole公司推出的一项服务内容,但是Google再一次用它独特和敏锐的眼光,发现了空间搜索的真正价值所在——地图搜索的加入为网络搜索引擎增添了一个维度,甚至两个维度!

而基于Google Earth的好戏好像才刚刚开始,在写这本书的时候,据传Google已经有收购YouTube公司的意向,Google的目光不仅仅只锁定在0.61m分辨率的地球表面,它要勾勒更加精细的视野和娱乐空间,创造出真正的“虚拟现实”的世界。

Google Maps是Google利用AJAX技术的一个成功典范,Garrett在他的Blog中详尽地阐述了Google Maps后面的故事,它的推出又一次撼动了WebGIS的传统地盘。Google Maps采用基于iframe隐藏帧的AJAX方案,以几乎流畅的用户体验,提供了决然不同于传统WebGIS的地图,用户可以无须像过去那样单击提交表单,然后等待服务器传递新的地图影像,而是只要继续做自己想做的事情就可以了。与此同时,地图数据正以异步的方式在后台逐渐传递过来,直到传递完毕,然后显示在Web页面上……这一切都那么自然流畅。

另一个令人惊喜的是移动平台Google Maps Mobile的诞生。这是一个可以运行在多个不同移动平台上的程序,如诺基亚手机采用的Symbian系统,摩托罗拉手机采用的Linux系统,黑莓手机的Java系统等都有相对应的版本。用户只要下载正确的版本然后安装即可,完全没必要进行任何多余的设置。Google Maps Mobile也提供了两种地图供用户选择——着色地图和卫星地图。其速度的快慢完全取决于用户手机CPU的频率与无线网络的速度。这种服务目前还处于推广阶段,通过它人们可以随时随地地连接GPS来定位自己的位置,进行精密的导航,查询距离自己最近的商业服务地点,当然还有很多目前尚未想到的各种应用,相信随着3G时代的到来,改变人们生活方式最大的必然是移动平台的便捷与无处不在的数据。

Google Earth/Goolge Maps/Google Maps Mobile是Google进军真正的“虚拟世界”的一大步,也是在当下火热的导航市场树立的一面旗帜。通过构筑虚拟的地球承载各种信息,接近人对空间的感知,全面超越传统的平面数据形态,将数据的表现形式扩展到立体的全球空间甚至太空领域,可以说Google伸向未来时空的触角就是从Google Earth开始的。

1.5 拥有Google Earth的虚拟生活

在Google Earth还没有诞生之前,或者说Keyhole还没有诞生之前,在Linux的桌面上经常能用到一个叫“桌面地球仪”的产品,但是这个产品不是联机的,无法像Google Earth那样把精确的卫星数据下载到本地进行研究,根本没办法与其他媒体内容驳接。

而在Google Earth(Google Maps)上,通过地名搜索功能,首先就可以将世界各地的不同角落与用户连接在一起。Google Earth有个很有用的图层对象,这个图层加载了不同属性的数据,有著名的名胜古迹,也有壮观的人工场景图片,有《国家地理》杂志的拍摄地点,也有学校医院的标注地。其他的诸如餐馆、饭店、加油站、旅馆更是举不胜举,每天都在更新之中,这些有的是Google Earth标注的,更多的是世界各地的Google Earth lover自发标注的,有各种不同的文字内容、图片……这些东西是Google Earth大地上的耀眼珍珠,正是由于有了这种多元文化的存在,世界才会变得很精彩,而Google Earth成了一个很好的承载体。

例如,你可以在周五的晚上打开Google Earth,一边策划着明天和朋友去郊外骑自行车运动的整个行程,一边在Google Earth上标注行车路线和各个休息地点,然后通过Google talk或者Gmail与朋友们联系,经过讨论,确定了明天的最终行踪方案。然后你把这些路线保存成KML文件,放在网络上共享给你的朋友们,这样大家都可以在电脑上看到你的路线。第二天带上出行装备和相机就能上路了。欢聚了一天之后,回到家,把拍摄的照片放进你的网上相册,在KML脚本中填上这些图片的链接地址,然后发给诸位朋友或者放在你的博客上,这样其他人也可以通过加载你的KML分享你们一路的出游风景了,如图1-6所示。图1-6 假日休闲的Google Earth生活

爱动的朋友可以出外郊游,爱静的朋友也可以选择在Google Earth上看视频。如果你是个标准的美食家,那么就可以把Google Earth定位到纽约,打开相应的图层,放大到某个街区,观看某一个美食专栏视频节目,顺着一路搜索过去,虽然只能饱饱眼福,相信也会给生活增添不少乐趣。

Google Earth(Google Maps)有很多玩法,同时也有不少实用功能,因为它们所采用的地图都是经过处理过的精确卫星影像数据,在很多地方,甚至能达到城市精密测量的规范,所以在城市规划或者土地规划、建筑设计、房地产项目规划等诸多领域有很强的应用性。例如,房地产开发商可以通过Google Earth或者Google Maps标识好楼盘的位置与规模,然后通过互联网展示给顾客;建筑设计单位也可以在预先建模时来约束和修改建筑的外观、朝向、颜色等形态。

Google Earth(Google Maps)的这些特点相信一定会博得大家的喜爱,同时随着Google在互联网的强势推广,Google Earth(Google Maps)的知名度会越来越高,也会越来越深入大众的生活。

1.6 相关产品及应用前景

1.6.1 类似的相关产品简介

1.桌面地球仪

在1999年,笔者曾在自己的机器上安装Red Hat Linux操作系统的时候,第一次接触了一个很有意思的桌面小程序,叫“桌面地球仪”。在Linux系统的桌面,可以通过桌面地球仪观看世界各地的城市位置、时间等。当时的桌面地球仪还是单机版的,无须联网就可以使用,但是没有提供详细的航空图片,感觉就像是一个桌面的小玩具而已。

2.WorldWind

WorldWind俗称“世界风”,是NASA的主打产品,同Google Earth类似也是显示卫星数据的,在后面的章节中有详细的介绍。

3.Geoportail

Geoportail是个类似于Google Maps的网站,是法国一家网站推出的反映法国全境卫星地图的地图服务,在后面的章节中也有详细介绍。

4.Mapserver

严格地说,Mapserver不能与以上几个并列放在一起,因为以上几个不但有服务器端,客户端程序也有丰富的数据,而Mapserver只是个Web服务器端程序而已。但是不得不承认基于其上的WebGIs网站已经遍布世界各地,其反映的内容从德国的小镇到加拿大的校园,影响很广,加之是开源(Open Source)项目,参与的人数众多。

5.LocalLive地图

LocalLive地图是微软的地图,经过几次升级后,目前的微软地图已经在速度和用户体验方面有了一定的进步,在后面的章节中会有详细介绍。

6.51ditu

51ditu是一个国内地图数据供应商,在www.51ditu.com上可以浏览,在提供地图数据的同时提供了很多实用的附加服务。

7.Mapbar

Mapbar也是另一个国内的地图数据供应商,与前面介绍的国内地图网站类似,Mapbar的特点是地图在网页上显示的效果非常漂亮。网址为www.mapbar.com。

8.Mapabc

Mapabc也是一个国内的地图数据供应商,与Google合作。例如,用户在Google Maps的中文网站上就可以浏览Mapabc的地图数据,Mapabc同时也拥有自己的网站www.mapabc.com。

9.Global Time

2007年11月New York Times《纽约时报》报道了一个关于在Google的Android手机平台上运行移动式Google Earth的新闻,引起业界一时轰动。在YouTube网上甚至还公布了一段视频。事后人们发现那个看似Google Earth的东西其实是另一个世界时小程序,通过这个小地球仪,可以反映出世界各地不同时区及其对应位置,和前面提及的“桌面地球仪”是一回事。

不过可以预期的是,在手机智能化的未来,随着无线网络带宽和速度的增加,以及手机硬件的升级和整合,在移动平台上运行Google Earth不会只是个梦想。特别是未来整合定位、定向模块的智能手机问世之后,或许在手机上安装更具三维效果的Google Earth会是一个非常不错的选择。

10.E都市

E都市(http://www.edushi.com/)是国内一家提供三维实景地图服务的公司的旗下产品,该产品通过对建筑物按比例建模来逼真地模拟街区场景,将会在后面的章节中略做介绍。

11.City8

City8是国内一家提供照片实景地图服务的公司(http://www.city8.com/),该地图产品通过采集街区的照片,然后通过计算机一系列拼接和纠正算法来模拟街区地图,很具有“现场感”,在后面的章节中也略做介绍。

1.6.2 微软的产品

其实微软很早也提供了地图GIS软件MapPoint,其目的是整合微软的所有数据平台的数据,如Office文档和表格。另外还想通过地图数据承载各种不同的属性数据,为用户提供企业级的数据规划服务。

这个系统可以运行在Pocket PC、Windows Mobile、Windows系统上,微软为这个数据整合系统可谓是投入了很大的成本,其数据是由微软公司维护的,包括欧洲和北美的所有地图数据,终端用户可以免费浏览。地图数据不仅仅包含地理要素,还包含各种商业应用,是一款比较先进的产品。如图1-7所示的是在local.live.com上面的截图,Live Search Maps的后台使用的也是MapPoint服务。图1-7 微软的Live Search Maps

在Local Live网站上,可以搜索地名、商业店铺、学校、公共设施等很多东西,而且近期推出的新服务包括三维实景地图,以应对Google Earth、Google Maps的强势进攻。

但是在中国地区的卫星图会很模糊,几乎没有什么实际用途,对于中国地区的地名搜索可以显示出对应的结果,但无法反映出地图内容。

1.6.3 NASA的产品

NASA(National Aeronautics and Space Administration,美国国家航空和航天局)也推出了一个与Google Earth类似的产品WorldWind,国内的玩家称之为“世界风”。打着航空航天局的旗号发布卫星图片,可谓是“根正苗红”。不过Google Earth原来的老东家Keyhole也是有着政府背景的一家实力型企业,从卫星图片的质量上来讲,WorldWind在某些地区的图像质量和细节方面处理得比较好。但是从全球的整体而言与Google Earth也可谓是不分伯仲,而且后者在图像的显示、速度上面因为采用了Keyhole’s Groundbreaking EarthStream实时影像数据串流技术,使得Google Earth有了极大的适用性和高效性。

或许因为知名度不及Google Earth的原因,WorldWind总是带着“专业性很强”的特点,其实WorldWind也和Google Earth的产品定位类似,同样是一款地理普及型的软件,在熟悉了操作之后,同样也能简单迅速上手。

目前,WorldWind有英语、法语、德语、捷克语、丹麦语等各种版本的界面,但是目前最新版本还不支持中文。

当前1.3.5.0版本的WorldWind已经增加了火星和月球的卫星数据,通过这两个类似软件,用户可以浏览火星和月球表面的样子。Google目前也推出了对应的软件,例如登录http://www.google.com/mars/就可以看到Google Mars的图片,如图1-8所示。图1-8 NASA的WorldWind图像

最新的版本可以在地址http://worldwind.arc.nasa.gov/download.html上下载。

1.6.4 Google Earth/Google Maps的应用前景

Google Earth几乎可以应用于传统的GIS领域,大到如社会学科基础研究科目之一的人口的统计(例如中国的人口普查)、疾病的控制(例如2003年的SARS)、社会福利的发放、失业人口的分布、洪水汛情的监控等,小到如车辆船舶的导航、手机平台的信号定位等。也可以用于地理信息的传统领域,如水利设施建设规划(例如三峡大坝的规划)、房地产项目的规划等。以上这些领域,借助于Google Earth/Google Maps清晰准确的卫星图像提供的地理信息,完全可以进行二次开发,利用Google Earth提供的开放接口,结合现有行业业务模型的算法,开发出区别于过去着色地图的GIS系统。

Google Earth的应用前景相当的广泛,作为大众化的地理信息平台,可以应用于农业、国土、矿产、文物古迹保护、林业、海洋、城市规划等诸多过去GIS应用的传统行业。不过这些领域的应用,有的过于专业化,还需要进行软件的二次开发。

基于Google Earth平台的优势在于接口开放和数据的免维护,并且由于是大众化的软件,其普及率比较高,用户培训的成本很低。特别是数据的免维护特点,可以为用户节省大笔的使用维护成本,较之于过去传统的GIS系统有很大优势,而且数据覆盖面广,卫星图片精度较好,完全满足普通民用业务的需要(例如城市的区域规划、房地产项目的规划等)。对于中小企业的GIS开发、应用的业务而言,Google Earth的免维护、低成本无疑是两个非常吸引人的优点。而Google Maps比较符合目前B/S程序大行其道的潮流,拥有和Google Earth一样的优势,而且相比众多国内的WebGIS地图服务商而言,Google Maps的经纬度标注是免费并且开放的,这也与国家的相关保密政策有关。

其缺点在于基础数据不在自己手上,业务系统容易产生严重依赖性。而且我国地区的卫星图片更新速度也不是很快。据Google官方的资料表明,Google卫星图片在全世界范围内的更新跨度一般在3年左右,对于一些要求实效性、及时性比较高的业务而言(例如年度大比例尺土地更新调查),Google的卫星图片在更新时间和精度上目前还无法满足要求。而且国内遥感数据大众开放的政策目前还不明朗。

不过我们有理由相信,随着中国市场化程度的提高,改革开放步伐的加快,Google地图在中国的发展今后会更好。

1.7 类似技术的发展

法国也于2006年推出了一个号称可以与Google Maps抗衡的地理搜索项目——Geoportail,该项目整合了全法国境内多达3700幅拓扑图及40万幅航空影像图,据称能达到0.5m的精确度,而且该项目还是由法国前总统希拉克亲自部署的。

登录http://www.geoportail.fr之后,可以看到如图1-9所示的画面。图1-9 法国Geoportail项目

总的来说,这幅地图的清晰度效果应该在1:4500~1:6000左右,符合它所标称的“0.5m”的精度。而且色彩很鲜明,整个图面要比Google Earth中的地图色调亮出不少,右侧的操作栏是Geoportail的工具栏,可以放大和移动,在操作习惯上和Google Maps有稍许不同。

但是Geoportail除了地理图片之外,附加数据就少了很多。其实Google Earth/Google Maps拥有的最宝贵的财富就是除了地图数据本身以外的东西,如各种图层、附载在地图上的各地的文字介绍、插图、视频等。

另外,Google Mars(Google火星)和Google Moon(Google月球)这两个的应用原理与Google Maps一样,都是采用AJAX异步传递数据的,前台操作方式也都一致,只是图片内容有所不同。Google Maps的地图是地球上的图片,而Google Mars显示的是火星上的多光谱波段合成照片,Google Moon则是全色月球表面的照片,分别如图1-10和图1-11所示。图1-10 Google Mars照片图1-11 Google Moon照片

这真是创意大胆的作品,以前只有在专业资料中才能查询到的火星、月球照片,现在在互联网上通过简单地输入网址就可以轻松地看到了,真是不可思议!

如图1-12和图1-13所示的是截自NASA的WorldWind(世界风)的火星和月球的照片,虽然风格与上两图不同,但是也同样引人注目。图1-12 火星图片图1-13 月球图片

另外国内近年来也有不少新颖的地图服务出现,不仅有传统的二维的电子矢量地图,而且还出现了如三维的实景地图、360°照片实景地图等,如图1-14所示。图1-14 本地图截自http://nanjing.edushi.com/新街口附近

把上图再放大一些,用户可以清晰地看到每条道路的名称、附近建筑物的名称,还包括其他诸如商场、停车场、旅游景点、麦当劳、银行等信息,如图1-15所示。这种地图因为采用了与建筑物外观相似的三维模型,所以比较直观,而且色彩鲜艳宜人。相比传统二维地图要先进许多,不过估计先期制作成本也比较高,而且基于第三方通用平台上(例如Flash),相比Google Earth和Google Maps,这种三维实景地图是将前两者优点相结合,将三维效果搬到了Web页面上,解决了Google Earth需要装客户端程序的尴尬。

但就地图之上的附载内容而言,国内的地图服务比Google旗下的两款产品要少得多,这也是国内同行需要努力追赶的地方。Google的数据收集网络每秒钟都在全世界的互联网上搜索重要的相关信息,然后提供给旗下的不同数据服务使用,加之Google有效的推广政策(例如在Google Earth上的三维建筑设计大赛等),更是吸引了全世界专业人员的目光,任何人都可以下载Google SketchUp工具方便地制作三维建筑,并且加以注释后上传到Google Earth上供全世界的用户浏览,像Google这样的“全世界”范围内调用资源“免费”为其服务的招数,国内的同行还需要研究和学习。图1-15 本地图截自http://nanjing.edushi.com/

还有一种三维实景地图照片,近年也在国内出现。通过专业人员实地拍照采集(通常是驾驶影像采集车)后,通过计算机进行纠正和拼接,模拟出类似360°的空间“包裹”效果。通过照片拼接而成的整图幅效果,由于采用了专门的纠正算法,所以在空间上相对正常和连续,加之实景拍摄,“现场感”比较强烈,不失为一种较好的新型GIS工具。

例如图1-16中的4幅图,截自city8网站上北京蒋宅口附近的一座天桥画面。因为书中无法提供连续的动画效果,所以就截取了4幅连续的图,可以看出画面在拼接处呈现“鱼眼镜头”似的效果,不过丝毫不影响观看,只是在最后一副图上由于逆光的缘故,图片局部有些曝光过度。图1-16 本图截自http://bj.city8.com/蒋宅口附近的天桥(注意4幅图的连续性)

这种虚拟现实的GIS在采集成本上比较高,后期制作成本估计相对较少,现场感强烈,非常适合对空间感和方向感不太好的用户使用。但是也有一些明显的缺点,例如汽车遮挡视线、车速影响、光线影响等。当然这些都可以通过再次采集、局部更新地图等手段来改正。

这些目前都是国内出现的新型的类似Google Earth/Google Maps的技术、服务,可以说是另辟蹊径,是对地图服务市场的补充与扩展。但是地图平台上的负载内容仍需要加强,由于涉及不同地区、不同行业、不同专业的信息整合,通过地图厂商一家之力无法完成,因此如果能借助市场的力量来共同努力,相信这些技术在未来是很有前景的。

1.8 小结

本章介绍了Google及Google Earth、Google Maps的历史和其背后的故事,阐述了政策、商业运作、金融市场、人才市场的合力是造成数字地球诞生在美国的根本原因,并最终展望了Google Earth、Google Maps应用的未来。

Google是个充满活力的公司,而Google Earth和Google Maps及许多奇妙的应用不仅仅是玩家的宝物,也是个实用的工具,这点需要读者在后面的章节中仔细品味。

第2章 Google Earth/Google Maps使用基础

本章内容将阐述Google Earth和Google Maps的使用方法。这一章是GE和GM开发的基础,阅读完本章之后,希望开发者能够对GE和GM软件的使用有一定的认识,以此作为基础,进行下一步的开发学习。

在本章的内容中,为了叙述的需要会提到一些专有的名词或概念,这些名词和概念将在后面的章节中进行详细和深入介绍,而某些概念涉及法律上的知识,需要咨询相关专业人士,读者在此可不必深究。

2.1 Google软件使用的法律问题

在使用软件的时候,知识产权问题是需要重视的,如何处理和规避这些法律问题,是企业软件系统首要解决的任务,Google Earth和Google Maps的使用也同样存在这样的问题。

2.1.1 Google Earth的使用许可

Google Earth有面向个人用户和企业用户的两类服务,其中面向个人用户的有Free版、Plus版和Pro版,目前最高的版为5.1.3509;面向企业用户服务的有专业的企业用户解决方案。对于个人用户的试用与研究,可以采用Free(免费)版,Google对于Free版的使用有很多限制,如不能用于任何商业目的,这同样适用于Plus版的Google Earth。

The Software is made available to you for your personal, non-commercial use only. You may not use the Software or the geographical information made available for display using the Software, or any prints or screen outputs generated with the Software in any commercial or business environment or for any commercial or business purposes for yourself or any third parties.——摘自Google Earth(Plus or Free)License Agreement

具体内容用户可以查看http://earth.google.com/support/bin/answer.py?answer=34344&topic=1141(英文)。

对于Pro版而言,只是增加了更多的功能,用户可以合理地在工作中使用Google Earth,但仍然不能在没有获得Google公司授权的情况下将Google Earth的地图数据用于任何商业目的。

具体的许可文件内容可以查看http://earth.google.com/support/bin/answer.py?answer=25095&topic=1141(英文)。

而Google Earth的企业解决方案,出于量身定做的需要,在与Google公司联系后才能获得这种服务,所以服务本身就需要签订一份授权协议,在此不进行深入探讨。

在使用Google Earth进行开发的时候,需要考虑到知识产权的处理,请读者注意。

2.1.2 Google Maps的使用许可

Google Maps和2.1.1节提到的Google Earth在软件的架构上有着本质的不同,所以在使用方式上就截然不同。Google Maps一般用于Internet上的网页浏览,虽然通过COM封装,也可以在网页中使用Google Earth,但是后台传输的东西却是不同的,Google Maps传输的是图片,所以Google Maps重点对于地图图片资料的使用进行了详细的法律约定,具体内容可以查看http://ditu.google.com/help/terms_maps.html(中文)。

本节内容请读者自行查询Google公司的相关法律资料,在此只提醒读者重视知识产权,并非对于Google相关法律条款进行解释。读者如果存在这方面的疑问,请咨询专业人士。

2.2 Google Earth/Google Maps的安装使用环境

本节主要讲解Google Earth对于计算机软件环境和计算机硬件的要求,给出了包括Google公司推荐配置在内的一种软、硬件搭配,并分析了在不同环境下Google的使用效率;并且给出了在不同的浏览器中使用Google Maps的对比。

Google Earth作为一个C/S架构的软件,运行过程中使用本地计算机的资源,并且在显示地图的时候使用逼真的渲染效果,对于用户的计算机硬件的配置要求比较高。加之Google Earth支持多个操作系统平台,如包括微软的Windows操作系统和Linux、Mac等其他操作系统,为了降低跨平台重复开发和国际化界面的成本,现在新版本的Google Earth其GUI窗体采用了Troll Tech公司的Qt类库(版本号3.3.6)编写。这个类库在跨操作系统平台与界面本地化上较有优势。但如果在Windows下使用,效率还是不如调用Windows自带的API高。而在地图的渲染处理上,使用了OpenGL和DirectX两种方式供用户选择。总的来说,对于使用Windows操作系统的用户而言,推荐用DirectX模式,这样可能效率会高一些,并且对一些细节的表现(特别对于色彩的表现)可能会比OpenGL模式下更有优势,但是这个模式目前还有一些缺陷,在以后的章节中会详细介绍每种模式的优缺点。

Qt类库:是一个基于C++的跨平台用户界面与图形的类库,基于Qt类库编写的程序可以运行在Windows、Macintosh和Linux或其他泛UNIX系统中,详细信息请查询:

Qt的官方网站http://qt.nokia.com/

Qt的中文论坛http://www.qtcn.org/bbs/home.php

2.2.1 Google Earth的软硬件环境

1.软件环境

Google Earth支持的操作系统包括常用的Windows 2000、Windows XP,另外还包括其他一些操作系统,具体每个操作系统的版本号如表2-1所示。

对于不同的操作系统,运行Google Earth的最低硬件配置也不相同,这些最低配置参数如表2-2所示。

以上数据可以从http://earth.google.com/userguide/v4/上查询。

2.基于Windows操作系统的典型硬件配置

运行Google Earth对计算机硬件要求较高,特别是计算机的CPU和显卡运算速度的高低对于Google Earth的运行速度有很大影响(当然对于软件本身的设置和一些第三方软件的使用也能显著加快其速度)。这里列出Google公司推荐的硬件配置,如表2-3所示。

显然表中所列的为目前计算机市场上流行的主流配置,对于一些配置比价低的计算机来说,只要配置适中加上软件设置得当,也可以较为顺利地运行Google Earth。这里列出低配置的硬件列表,如表2-4所示。

还有一些低端的或者配置比较老的笔记本电脑,没有独立的显卡,采用集成显卡。不过只要CPU在P41.8以上,内存在512MB以上,也可以流畅地使用Google Earth。

2.2.2 Google Maps的使用条件

Google Maps的使用和操作系统的关系不大。作为网络应用程序,对浏览器有一定的要求,基本支持大部分流行的浏览器,这些浏览器名称及版本号如表2-5所示。

Google Maps是AJAX应用的经典例子,它的工作方式是本地JavaScript脚本和服务器服务交互,异步运行完成地图的浏览显示和一些简单的搜索与分析工作。Joel Webber写过一篇著名的关于Google Maps后台工作方式的分析文章,文章指出其实际使用的就是DHTML技术。所以只要当前的浏览器支持DHTML,并可以解释JavaScript脚本,原则上就可以运行Google Maps。在某些时候会出现选择正确的浏览器却无法显示或者错误显示地图的问题,原因一般是由于浏览器的设置不正确导致的。

各种浏览器具体如何设置,请参见Google Maps网站上的帮助文档,地址为http://ditu.google.com/support/bin/answer.py?answer=16539&topic=10789。

AJAX读做“阿贾克斯”,是目前流行的一种对于由HTML、JavaScript技术、DHTML和DOM组合技术的描述。AJAX提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来,它使浏览器可以为用户提供更为自然的浏览体验。具体的介绍请参见本书后面的章节。

2.3 Google Earth的安装

读者可以在Google的网站http://earth.google.com/download-earth.html上下载最新的Google Earth Free版软件。Plus版本和Free版本的Google Earth下载地址都是一样的,是同一个软件,不同的是够买了Plus版的使用许可之后,可以单击Google Earth Free版的“升级至Plus版”选择项,升级成为Google Earth Plus。目前Google推荐的安装方式是在线安装,这样的好处是保证普通的终端用户能够下载到最新发布的程序,保持全球范围内版本和功能的一致性。

如果需要Google Earth Pro版,就需要购买。可以先去Google地球的网站https://registration.keyhole.com/choice_kh_initial.html上下载一个,下载的软件是一个使用期限为7天的试用版,继续使用需要购买。购买的费用可以在http://earth.goolge.com网站上查询,在此不再赘述。

下面以Windows操作系统上的安装为例,一步步进行介绍。(1)双击Google Earth安装程序,运行后,会出现画面。用户需要选择语言,最新版Google Earth目前提供了英语、法语、德语、意大利语、日语和西班牙语这6种语言版本供用户选择。但没有提供中文版,老版本的Google Earth提供了简体中文版,这里介绍的版本是4.0.2742。(2)在此选择默认的英语,单击【Next】按钮进行下一步操作。Google Earth此时进入下一步自动安装状态,此时用户可以进行其他操作或者耐心等待。(3)自动出现一个欢迎画面。(4)单击【Next】按钮出现Google Earth的使用许可文件对话框。在此用户需要仔细阅读,然后选择【I accept the terms of the license agreement】选项,表示接受此许可要约,【Next】按钮由灰色不可用状态转为正常状态。(5)单击【Next】按钮出现安装类型的提示对话框,提示用户选择完全安装(Complete)或自定义安装(Custom)。

●选择【Complete】单选按钮,则Google Earth会自动按照默认设置安装,Google在后面注明推荐大部分初级用户选择此选项,作为高级用户。

●选择【Custom】单选按钮,则Google Earth将提供用户自定义安装目录和数据缓存目录的选择。

安装类型的提示对话框如图2-1所示。

在步骤(5)选择【Complete】单选按钮的用户可跳过步骤(6)、(7)。(6)单击【Next】按钮出现选择Google Earth程序安装目录的提示对话框。用户可以自行定义安装的位置,一般定义的依据为硬盘空间的大小。根据Google Earth的推荐,用户自己选择的盘符下的空间至少要有400MB的空间,并且如果考虑到数据缓存的问题,需要结合步骤(7)一起阅读。

单击【Change】按钮,弹出“Choose Folder”对话框,通过这个对话框选择需要安装的位置,然后单击该对话框上的【确定】按钮,如图2-2所示。图2-1 安装类型的提示对话框图2-2 选择安装目录对话框(7)单击【Next】按钮出现选择Google Earth缓存数据存放目录的对话框。在这个对话框中用户可自行选择Google Earth缓存的位置,如图2-3所示。Google Earth会缓存用户以前浏览过的地方的图像,在显示的过程中首先查看本地缓存内是否有过此处的图像,所以选择数据缓存目录的位置需要一定的技巧。

一般能模拟“异步”读写硬盘为好。例如,用户有两个以上的实体硬盘(并非硬盘逻辑分区),分区为实体硬盘A划分为C、D两盘,实体硬盘B划分为E、F两盘,可以将步骤(6)中的安装目录安装在与操作系统同一个实体硬盘所在的逻辑分区中(如C盘),而将数据缓存目录的位置选择在另一个实体硬盘上(如E盘)。那么运行Google Earth的时候对硬盘的读写效率是比较高的。如果用户的计算机是硬盘阵列,就不必考虑这么多问题,此时操作系统会自行分配盘片,读取效率会更高。

此处对于如何设置硬盘以提高操作系统与程序的读写效率的技巧,读者可以参阅相关资料和书籍,或咨询专业人士,本书在此不进行深入介绍。(8)单击【Next】按钮弹出提示准备安装的对话框。如果确定要安装,单击【Install】按钮,Google Earth就会进入自动安装的对话框,安装进度会在对话框上显现出来。(9)程序自动跳转到询问是否发送安装信息至Google,并且Google保证不会发送任何个人信息,用户如果勾选【I will allow this information to be sent】复选框,则将发送信息。默认是勾选该复选框的,用户要注意,如图2-4所示。图2-3 数据缓存文件夹选择对话框图2-4 发送安装信息对话框(10)单击【Install】按钮,此时进入安装尾声,Google Earth会在最后提示用户安装附加的一些软件模块和服务。过去的Google Earth安装包中是没有安装附加软件的选择项的,新版本则加上了,估计这是Google的营销战略手段之一。下面介绍一下附加的模块和服务。

●【Install Goolge Toolbar to launch Google Earth Searchs From your web browser】:如果选择该选项,下一步将安装一个Google Earth的工具栏插件至IE浏览器中。

●【Set Google as my default search angine in Internet Explorer】:如果选择该选项,表示安装程序会将www.google.com设置为IE浏览器的默认页面。

●【Yes, I want to launch Google Earth now.】:如果选择该选项,在安装结束后将自动启动Google Earth程序。(11)单击【Finish】按钮结束安装。

整个安装到此结束。用户可以看到:在Windows的【开始】菜单中多了一个【Google Earth】菜单,并且有4个子菜单,如图2-5所示。而且在桌面上也会有一个快捷方式图标,如图2-6所示。图2-5 【Google Earth】子菜单图2-6 【Google Earth】桌面图标

选择【Google Earth】菜单,即可启动Google Earth程序。

对于有使用计算机经验的读者来说,可以略过这一节。下面将继续讲述Google Earth的使用。

2.4 Google Earth使用基础

本节主要讲解以下几个知识点:

●地图渲染方式的选择。

●网络连接和离线使用。

●Google Earth和Google Maps传输了什么。

●Google Earth和Google Maps的地图服务器。

●Google Earth界面和相关的地理基本常识。

2.4.1 关于Google Earth的版本

自从4.2.xx版本起的Google Earth已经可以支持包括中文在内的很多种语言,本章介绍的Google Earth版本为5.1.xx(英文版)。读者可以自行对应中英文菜单。相比之下,这两个版本在外观上的区别不大。

对于进行诸如外包业务的开发者来说,这是个福音,Google Earth自4.2.xx版本开始就可以支持多种语言,如表2-6所示。

2.4.2 地图服务

知名的internetnews网站在2005年6月下旬,曾经登载过一篇名为《Google To Earth》的访谈,当时Google Maps还没有推出。文中谈到随着宽带的发展,用户可以看到Google Earth会成为一个类似Web Service的产品,无须下载安装。而Google果然将这个设想变成了现实,这就是Google Maps。

Google Earth和Google Maps在浏览卫星图片的时候(矢量底图图片除外),使用同一个地图服务器和同一个80端口。当然,Google Maps是为多人同时访问设计的,为了平衡网络负载,使用了多个服务器。但是其中一个和Google Earth是共用的,域名地址为kh.google.com, IP地址为66.249.93.91。

2.4.3 地图渲染模式的选择

Google Earth启动之后,我们首先看到的是白底色的Google Earth启动画面,此时程序正在检查系统是否符合运行Google Earth的条件。Google Earth有如下两种运行模式:

●DirectX模式(Google Earth推荐使用的默认模式)。

●OpenGL模式。

如果用户是首次运行Google Earth程序,那么软件此时会询问是否将DirectX模式设置为固定默认模式。同理,如果用户在【开始】菜单中选择【Set Google Earth to OpenGL mode】(在OpenGL模式中启动Google地球)命令,软件也会询问是否将OpenGL模式设置为固定模式,并将这个设置记录保存在注册表中(本书后面开发技巧中将详细介绍),以后第二次运行Google Earth则不会再出现提示框,如图2-7所示。图2-7 启动模式设置提示框

OpenGL是一个跨平台的工业标准图形处理类库,其最大优势在于硬件无关性。OpenGL模式的采用使得Google Earth可以跨硬件在支持各种OpenGL的软硬件平台中运行,免去了跨平台开发的成本。但是,与DirectX相比,OpenGL屏蔽底层硬件的可编程性这个优点在某种程度上反而成了劣势。在微软的Windows操作系统平台上,使用DirectX 8.0或者更高的版本在像素渲染上有极大的优势和灵活性,对于终端用户而言,在渲染的效果和效率上都比较有优势,推荐使用。但是DirectX的一个不足之处就是在Google Earth中使用KML脚本绘制线条的时候,“粗细”效果显示不了,显然DirectX类库肯定是可以支持线条的粗细属性的。这一点或许是Google Earth的一个Bug,可能在下一版本的软件包中,Google会修改这个Bug。希望读者在日后的开发工作中要格外注意,因为在一些与图形相关的业务中,如在GIS(Geographic Information System,地理信息系统)的开发中,线条的粗细效果经常会用到,此时可以采用OpenGL模式解决这个问题。

对于此项设置在本书后面章节的专题开发中会有更详细深入的介绍。

2.4.4 网路连接和离线使用

Google Earth软件还会检测当前用户是否已经连接到Internet,以执行下一步的Login Server过程。这个过程主要针对Plus版用户有实际作用,对于Free版的Google Earth没有什么特别作用。但是如果此时连接不到Internet, Google Earth则会弹出一个提示当前无法登录Google服务器的提示框,如图2-8所示,4.xxx版本的Google Earth不会显示地球模型,然而从5.xxx开始的版本中Google Earth却提供了离线浏览的功能。

从以上提示框的信息中我们可以知道,当Google Earth无法登录到服务器上的时候,其显示的地图不是由Internet上获取的,而是本地的缓存里保存过的地图。这些缓存数据是用户以前浏览过的地区的地图和一些照片。

对于这个问题,虽然Google Earth在连接Internet的状态下,每次浏览都把卫星图片数据和一些非空间的数据(如图标、照片之类的相关资料)存储在本地缓存中,然后在每次连接服务器的时候也是首先检查本地的缓存,在技术上应该可以基于缓存数据实现离线使用。但不知出于什么原因,目前Google官方并没有推出离线查询的Google Earth软件包。图2-8 Google Earth连接不了网络

如果在使用过程中断网的话,那么Google Earth也会弹出另一个对话框,而且这与在server操作系统上和Workstation操作系统上弹出的对话框是不一样的。

这些对话框是用Qt类库进行开发的,即使在Windows操作系统上也是如此。在基于Google Earth API进行开发的时候,如果想要捕捉这些对话框,可以使用一些专门的小工具,其使用技巧将在本书的后面章节中详细介绍。

2.4.5 Google Earth的主界面

Google Earth的主界面包括地图窗口、搜索窗口、地名窗口、图层窗口、主菜单、工具栏6个部分,如图2-9所示。图2-9 Google Earth主界面

主界面中最引人注目的就是以黑色星空为背景的地球模型窗口了。在地图窗口上,用户会发现所有的国界都用黄色的线条勾勒出来,这个是Google Earth默认自带的以KML形式生成的,但是用户无法将它导出为KML或者KMZ的格式。

2.4.6 看看地球

当开始打开程序的时候,首先映入眼帘的是一幅三维的地球图片,还有左边的一些功能组件,我们首先简略介绍一下这些默认展示的组件功能。

1.默认地球图片

通常情况下,国内的用户不管是使用什么版本的Google Earth,三维地球总是将中国地图对准地图窗口的。以默认的方式保存当前的观察角度、高度参数,并且在下次打开的时候也会显示同样的画面。

用户也可以将自己喜欢的地点作为每次打开Google Earth时的默认地点,通过选择【View】→【Mark this my start location】命令就可以做到这一点,如图2-10所示。图2-10 设置默认地点的菜单

2.鼠标和键盘功能

大部分用户进入Google Earth程序的第一件事就是用鼠标拨弄“地球”,通过拖动鼠标和滚动鼠标滚轮缩放地球,然后找到自己的家在哪里。在Google Earth的地图窗口中,用户仅仅凭借鼠标就可以快速地“到达”任何一个地方,地图窗口支持以下一些鼠标事件。

●单击:单击的作用对于地图来说有实际用处,可以调出信息包。

●双击:默认的双击可以放大地图,查看更大比例尺的卫星图片。

●左键拖动:可以模拟像抓住某个东西再拖动的动作一样,抓住地图,并拽向任何一个方向。

●右键拖动缩放:按下鼠标右键后,鼠标的形状会变成上下箭头,表示可以上下拖动地图,实现放大和缩小的功能。

●鼠标滚轮滚动:前后滚动鼠标滚轮,可以实现地图的放大和缩小。

同时,Google Earth的地图窗口还支持以下快捷键。

●方向键(↑、↓、←、→):可以移动地图。

●加、减号(+、-):可以缩放地图。

●【Shift+←/→】组合键:地图旋转;【Shift+↑/↓】组合键:地图视角倾斜。

●【n】:恢复视角,但不能恢复倾斜。

通过以上对地图窗口的操作,用户可以快速浏览地图。

3.地名搜索

有些城市我们只知道它们的名字,却不知道方位,这时候就需要用到Google Earth的搜索功能,如图2-11所示。

Google Earth现在已经支持中国城市的搜索,如输入“南京”,单击【搜索】按钮后,在结果列表中就会列出数据库中符合的结果,地图窗口也会自动“飞”到南京市所在的位置。对于中国城市,如果采用英文搜索,一般建议用国标,如nanjing。

4.鹰眼功能

还有一种常用的浏览方法,就是通过Google Earth的鹰眼图(Overview Map)浏览。鹰眼其实就是一个缩小的全幅平面地图,它和地图窗口的地图是互动的,鹰眼上的红色小方框的位置和大小是直接反映当前地图窗口浏览的范围的,如图2-12所示。图2-11 地区搜索图2-12 鹰眼(Overview Map)

可以用【Ctrl+M】组合键调出鹰眼图,也可以通过选择【Over】→【Overview Map】命令调出鹰眼。浏览的时候,用户在鹰眼上双击想要看的地方,然后地图窗口会自动“飞”到那里。

5.地图图像的传输进度

在不断变换视景的时候,在Google Earth的地图窗口中总会显示“Streaming”字样。如表示当前视景中的地图数据流的传输情况,100%则为完全传输,此时用户的地图是最清楚的。

Google Earth的地图数据传输功能比较有特色,速度比其他一些类似的软件(例如NASA的WorldWind)要快一些,主要有两方面原因。一方面是因为Google Earth允许用户的客户端程序边下载地图边浏览数据,Google Earth的地图服务器也是kh.google.com,使用的是80端口,与Google Maps不同的是传输的数据不是图片,而使用了一种Keyhole’s groundbreakingEarthStream实时影像数据串流技术,是描述卫星地图的一种特定格式的数据流,由GoogleEarth进行转换后得到地表图像,区别于其他的类似软件图像显示方式,给用户造成一种看图速度快的印象;另一方面是因为网络速度的原因,有Google强大的服务器资源作为支撑,还有什么事情办不到的。

6.加经纬线条

领略了Google Earth地球的神奇之后,下一步我们要逐步深入了解各个菜单的功能。首先介绍【View】菜单中的【Grid】命令,这个命令是增加(去除)Google Earth三维地球上的经纬线的。加了经纬线的纸质地图,可以更加清晰明了地计算位置,如图2-13和图2-14所示。图2-13 加了经纬线的三维地球图2-14 没有经纬线的三维地球

以上两幅图为了更好地显示经纬线,对画面做了反色处理。而经纬线构成的网格会自动随着地图的缩放而进一步加密,如图2-15所示的局部地图,可以清晰地看到地图上加密度后的经纬线与顺带的经纬度刻度参数。图2-15 加经纬线的局部地图

7.图层介绍

地图不仅仅提供地理信息,还提供更加丰富的附属非空间的信息,如公路、铁路、饭店、餐馆、商店、加油站、名胜古迹等地点。传统的纸质地图通常采用专题地图的方式,根据比例尺选择特定的一些标记,绘制成相对于某种主题的地图,如交通地图、旅游地图等。Google Earth提供了专门的图层以供用户查找,其内容的分类非常广,包括衣、食、住、行、医疗、教育、娱乐、购物、旅游、军事等各种信息,甚至包括人口统计、犯罪情况统计、历史地图、动植物栖息地等信息。不过这些地图信息反映的内容主要以北美和欧洲为主,其他地区的图层数据库正在逐步建立,特别是中国的图层数据增加得非常迅速。在2005年,Google的中国地图上几乎没有什么图层标注,除了中国台湾有少部分地图标注。而如今随便打开一个城市的地图进行浏览,用户都能根据所选图层发现很多有趣的标注,包括文字说明和图片。如图2-16所示显示了一个很典型的图层结构。图2-16 典型的图层结构

Google Earth的图层中文名称如表2-7所示。

图层基本每隔几个月都会增加或细分一些内容。图层中的数据其实才是真正重要的资料,是Google Earth的除了卫星图片之外的另一个闪光点。在当前这个数据为王、内容为王的时代,这些图层构成了Google Earth的专题、虚拟社区的基础,一方面由Google的官方进行积累、整理;另一方面全世界的Google Earth爱好者也在自己喜好的领域为图层地标的整理做了大量工作,所以Google的图层是令其他同类软件眼红的“大金矿”。

8.坐标单位设置

经纬度可以标明一个地点在地球表面的位置,当用鼠标在Google Earth的地图窗口中移动的时候,在地图窗口左下方,会显示出当前的鼠标位置的经纬度。前面的一段是纬度,后面的一段是经度,经纬度数值后面的字母表示如下:

●N表示当前鼠标位置在北半球,显示北纬。

●S表示当前鼠标位置在南半球,显示南纬。

●E表示当前鼠标位置在东半球,显示东经。

●W表示当前鼠标位置在西半球,显示西经。

对于经纬度的表示方法,Google Earth提供了3种可选择的表示法,分别如下。

●Degrees, Minutes, Seconds:度、分、秒的形式,这是默认的表示经纬度的方式。格式形式如118°46′08.01″、32°02′54.14″(前面是经度后面是纬度)。

●Degrees:度的小数形式。格式形式如118.768893、32.048373(前面是经度,后面是纬度)。

●Universal Transverse Mercator:通用横轴墨卡托UTM投影的单位形式。格式形式如667005.31m、3547165.76m。在Google Earth的UTM表示法中还有一个Zone值,如50S,这是UTM投影中的分区号。

当地图的比例尺不断变大到一定程度后,在经纬度的数值后面会出现一个elev记号,表示当前鼠标位置的海拔,单位默认为米(m),Google Earth中还提供了英制单位(ft)。以上单位表示方法的设置可通过在Google Earth中选择【Tools】→【Options】命令,弹出【Google Earth Options】对话框,再在【3D View】选项卡下进行设置,如图2-17所示。图2-17 Google Eeath设置显示单位

9.比例尺

在传统的纸质地图上,比例尺是个非常实用且不可缺少的符号。通过比例尺可以大概得知地图两点之间的实地直线距离,而且通过仪器的帮助,甚至还可以得知曲线的实际长度。

Google Earth的地图窗口中也提供了一个比例尺工具,这个工具可以通过选择【View】→【Scale Legend】命令调出来。比例尺位于地图窗口的左下方,经纬度参数的上方,如图2-18所示。

比例尺工具在使用的时候有个小技巧,即可以通过拖动和旋转地图,将需要丈量的地图上的两个点平行于比例尺,然后靠上去,估算一下大概的尺度。不过Google Earth自带了距离工具,如果需要丈量,则应该选择这个距离工具而不是比例尺工具。

10.地图浏览和效果设置

浏览某个地方的地图一般可以用查询的方式,在Search(搜索栏)中输入想要浏览的城市或者国家的名称,然后单击【Begin Search】按钮就可以了。先前的版本还不能使用中文搜索,搜索中国的城市时需要使用拼音;现在的新版本已经可以使用中文地名了,如可以输入“南京”或者“中山陵”等地名。

如图2-19所示,在结果栏中,会列出目前搜索到的被Google Earth收录的地标文件中所有含有“中山陵”字样的地标。然后以搜索中心为目标,放大地图直至“飞到”用户需要浏览的位置。图2-18 比例尺图2-19 搜索栏

这里涉及几个Google Earth对画面产生影响的设置,如下所述:

●Detail Area(后面将详细介绍)。

●Anisotropic Interpolation(各向异性过滤)。

各向异性过滤对显卡要求比较高,它是指对映射点周围方形8个或更多的像素进行取样,获得平均值后映射到像素点上的一种过滤算法,可以显著提高图像的渲染效果。读者可以自行实验。

11.地图显示尺寸和分辨率

地图窗口显示卫星图片是按照一定的分辨率显示的,这个分辨率和使用者的本机分辨率没有必然的联系,只是地图窗口显示的标准。

Google Earth提供了以下几种显示的分辨率模式。

●计算机显示模式:这是按照计算机屏幕的分辨率模式来设计的,如图2-20所示。

●电视显示模式:这是根据电视机的屏幕显示方式决定的,如在电视教学演示的时候有这样的需求。其分为欧洲制式(NTSC)和亚洲制式(PAL)两种。

●点阵显示模式:将屏幕显示比例尺寸按照打印页面的标准来设置,如图2-21所示。图2-20 计算机显示模式图2-21 点阵显示模式

12.图像清晰块

Google Earth的图像清晰块和我们通常接触到的电脑屏幕的分辨率的概念是不同的。分辨率是表示平面图像精细程度的概念,而图像清晰块是表示默认打开Google Earth时地图窗口优先清晰区域的大小,虽然表示方法都是“横向点数×纵向点数”,但表达的概念是不同的。

在Google Earth中图像清晰块大小设置和运行软件的计算机显卡硬件内存有直接的关系。一般来说,如果高级的显卡显存比较大,显卡的计算能力高,那么清晰块就可以设置得大一些,反之则可以设置得小一些。

图像清晰块大小的设置是通过选择【Tools】→【Options】命令来操作的。在【3D View】选项卡中有一个【Detail Area】选项组。这个选项组中列出了细节的分辨率参数,一共有3种:Small表示清晰块区域最小,只有256×256;而Large表示清晰块区域最大,有1024×1024;Medium表示清晰块区域中等,有512×512,如图2-22所示。

13.浏览速度设置图2-22 Detail Area选项组

提高所有网络程序的浏览速度有两种基本方式,一种是提高网速,另一种是浏览时首先使用本地缓存。Google Earth提供了一个缓存机制,对于浏览过的地图与地图上的文字地标、图片,Google Earth都会以自己的格式存储在本地客户机上。选择【Tools】→【Options】命令,在弹出的【Google Earth Options】对话框中切换到【Cache】选项卡,用户可以自定义内存缓存和硬盘缓存。其中内存缓存最高上限是用户机器的操作系统最大可支持的内存大小,而硬盘缓存最高则只能到2GB,设置界面如图2-23所示。图2-23 缓存设置界面

14.缓存文件

对于设置缓存的技巧,硬盘缓存不仅仅局限于硬件硬盘盘片上的文件,也可以是在内存中的一块区域。用户可以通过各种内存虚拟硬盘的工具来伪装一个硬盘分区,在其上复制一个Google Earth的缓存文件夹,然后可以修改Google Earth的注册表信息(HKEY_CURRENT_USER\Software\Google\Google Earth Plus\CachePath),将缓存路径指向这个伪装硬盘分区。如果用户的网络链接Google Earth地图服务器的速度够快,就可以实现飞一般的速度。

用户甚至可以把缓存路径指向另一台计算机硬盘上的某一个文件夹,当然这个前提是用户必须有足够的权限读写另一台计算机的共享文件夹。

15.飞行速度设置

Google Earth有3个关于视点“飞行”速度的参数设置,如下所述。

●飞行速度(Fly-To Speed):飞行速度指的是视点“飞行”到某一目的点的速度,最小值是0,表示Slow;最大值是5,表示Fast。

●漫游速度(Tour Speed)。漫游速度指的是地图拖动后,视点“顺势”飞行的速度,最小值是0,表示Slow;最大值是5,表示Fast。

●漫游暂停时间(Tour Fause)。漫游暂停时间指的是连续飞行时,飞行到某一点后,视点在这一点暂停的时间,范围为0~60秒。

飞行速度参数的设置方法为:在Google Earth中选择【Tools】→【Options】命令,在弹出的【Google Earth Options】对话框中,单击如图2-24所示的【Touring】选项卡进行相关设置。

Google Earth的飞行速度设置,对于基于Google Earth的开发而言,是个比较重要的环节。特别是对于通过程序自动控制Google Earth视点移动的程序来说尤为重要,因为直接影响性能和效果。开发人员可以根据自己的需要设置不同的参数,以达到画质或者移动的最佳效果。

16.观察角度

Google Earth的地图窗口有个“视点(View Point)”概念,这是由Google Earth地图窗口的“照相机(Camera)”对象所设置的,如视点的高低、倾角、偏转角、移动速度等诸多因素,综合起来影响了用户对于Google Earth地图的观察方式。

在Google Earth中,选择【Tools】→【Options】命令,在弹出的【Google Earth Options】对话框中,单击【Touring】选项卡,在【Driving Directions Tour Options】选项组中有关于照相机参数的相关设置,如图2-25所示。图2-24 【Touring】选项卡图2-25 照相机参数设置

其中,共有3个参数需要设置。

●相机镜头倾角(Camera Tilt Angle):单位是度(Degree),以“度”的小数形式出现,范围是0~80°。但是有意思的是在Google Earth API的官方参考说明中,倾角的取值范围是0~90°之间。

●相机的范围(Camera Range):单位是米(Meter),以“米”的小数形式出现,范围是150~5000m。

●相机的移动速度(Speed):数值范围为50~1000,数值越大,速度越快。

认识Google Earth的相机视点,这对于接下来的Google Earth API开发很有帮助。开发者可以通过较为直观的操作,逐步深入Google Earth相机视点的空间概念。

17.Google Earth的导航模式

所谓Google Earth的导航,是指用户在使用Google Earth浏览地图的时候所采用的鼠标动作模式,导航模式包括以下3种。

●拖曳缩放模式(Pan and Zoom):Google Earth默认的导航模式就是拖曳缩放模式,是通过鼠标的拖曳和缩放导航的。这个模式是比较简单的导航模式。

●飞行模式(Flight Control):这是Google Earth的另一个导航模式。这个模式是根据目前鼠标的位置和方向角、高度值综合计算出来的,能动态智能地飞行到目的地。这个算法的基础是“本位固定”,也就是以鼠标所在的位置为参照物,这个参照位不动,而地图空间围绕它移动、转动。

●单击缩放模式(Click-and-Zoom):单击缩放以鼠标的左、右键为操作工具,用户只需要单击即可导航到目的地,效率比较高。如果结合以上提到的飞行速度参数调整,会有意想不到的导航效率。

在Google Earth中,选择【Tools】→【Options】命令,在弹出的【Google Earth Options】对话框中,选择【Navigation】选项卡,在【Navigation Mode】选项组中有关于照相机参数的相关设置,如图2-26所示。图2-26 【Navigation Mode】选项组

2.4.7 地标

所谓地标(Placemark)就是指对地区的标识。这些标识构成了Google Earth、Google Maps的另一个吸引人的特色。

1.什么是地标

从广义上讲,地标是指众所周知并可以醒目地标明一个地区的标志物。在Google Earth里面,Placemark是一种标识地区的标签,它结合了地理方位、地名、文字说明、图片、快速链接、搜索等一系列功能为一体,为用户提供一种强有力的标明地点的方法,并且还可以保存为KML文件,便于世界各地的Google Earth用户交流,如图2-27所示。图2-27 地标图例

上图的地标包含了经纬度、高度信息,有本地的名称(例如,“南京市”),也有关于这个地方的描述(例如,“南京是个美丽的城市!”),而且根据需要用户还可以加入相关的图片。上图中还有【To here】和【From here】两个链接,单击这两个链接后,在Google Earth的路径搜索栏里面就能够搜索从一个地标(【From here】)到另一个地标的(【To here】)之间的路径,这就是Google Earth强大的路径搜索功能,如图2-28所示。图2-28 地标和路径搜索

在搜索到路径以后,Google Earth会自动在地图上将路径用彩色线条标注出来,并且对应于路径搜索栏中的所经过的地点,也会以地标符号的形式标注在图面上,十分清晰。它是所有GIS系统的主要应用之一,但是对于中国的大部分地区来说,由于没有路径数据,因此这个功能可能还不适用。

2.地标的操作

添加地标的操作方法如下:选择【Add】→【Placemark】命令,或者按【Ctrl+Shift+P】组合键,会弹出一个地标创建的对话框。然后用户只需要填上名称和描述,就可以建立一个简单的如图2-27所示的地标了。

在默认情况下,下次再打开Google Earth时,上次用户自行添加的地标仍然会保留在地图上。用鼠标右键单击地标,会弹出如图2-29所示的属性菜单。图2-29 地标属性菜单

地标属性菜单中的主要命令介绍如下:

●选择【Save As】命令可以将地标保存为KML/KMZ文件。

●选择【Share/Post】命令可以发布共享自己的地标。

●选择【Email】命令可以通过电子邮件的形式发送地标,此时Google Earth通过用户系统默认的电子邮件程序或者Gmail信箱,将地标以.kmz文件的方式发送。

●选择【Snapshot view】命令可以将用户设定好的观察角度、高度、倾斜度等信息保存为该地标的默认“视点”。

●选择【Properties】命令可以重新编辑该地标。

目前虽然Google Earth支持中文地标,但如果要发布地标(让Google Earth采用你的地标,其他人也可以看到),仍然需要使用西文。此时如果使用中文会显示乱码,一般Google Earth不予采纳。

地标的图标不仅仅是图2-27所显示的一个“图钉”的样子,在Google Earth里不同的图层都有不同类型的地标,如餐馆、加油站、大学等,地标的图标各不相同,各自的内容描述也不一样,请读者在使用时留意。

2.5 Google Maps的使用

Google Maps无须用户安装,只要打开网页浏览器,输入Google Maps的网站地址“http://maps.google.com”就可以了,如图2-30所示。图2-30 Google Maps界面

新版本与旧版本的差异会在后面的内容中讨论。整个界面布局上,最上方是Google的一些主推项目,如Web搜索、新闻搜索、Gmail信箱等。稍下方有一个长条型的搜索栏,这就是Google Maps的地名搜索栏,在这个搜索栏中可以输入如下两种类型的搜索字符。

●地名字符:如“南京”、“New York”。

●KML文件地址:指向KML的URL地址字符串,如http://www.testserver.com/test.kml。

而左边有一个状态栏,如图2-31所示。分别显示了【Get Directions(搜索结果)】和【MyMaps(我的地图)】,搜索结果指的是通过上述的地名(KML)搜索,返回搜索的结果,然后将结果显示在【Get Directions(搜索结果)】栏中,这个栏的功能和Google Earth的地址栏很类似。

例如,输入“南京总统府”搜索字样,在左侧的【Get Directions(搜索结果)】就会罗列出所有关于总统府的图片、文字介绍、甚至电话号码(不同类别的搜索对象对应不同结果),同时在地图上会用红色水滴符号标识出来。

在左侧单击它,在地图窗口中会有对应目标描述的提示框弹出。

而输入KML文件的地址,则会根据KML脚本的设定内容来显示。如KML内容为一个三维建筑物,则Google Maps读取后会显示这个三维效果的建筑。如KML脚本有错误,则无任何反应。图2-31 页面左侧

2.5.1 切换按钮

最新推出的Google Maps地图窗口中,有5个切换按钮十分引人注目,其中【Traffic】按钮的功能类似于复选框,按下按钮后显示相应的要素并且字体变粗,弹起按钮后要素消失并且字体变细。【More】按钮类似于下拉列表,其余3个按钮为地图类型切换按钮。

这5个按钮的功能如下所示。

1.【Traffic】按钮

这个按钮可以调出交通状况图,而且有比较高的时效性。交通图目前还没有覆盖大部分的地区,仅仅局限于个别城市的部分区域,如图2-32所示。

目前在卫星底图上显示的交通路况在中国境内的图幅中有位置偏移,这与国家测绘局的政策有关。如图2-33所示的是节选自纽约长岛的交通路况图;而图2-34则是反应拥堵状况的图例,绿色表示畅通速度快,深红色表示拥堵而缓慢。图2-32 交通状况图图2-33 道路显示(卫星底图)图2-34 图例

Google Maps中使用不同的颜色表示目前不同的交通状况:

●“绿色”表示行车速度可达50km/h以上。

●“黄色”表示行车速度可达25~50km/h。

●“红色”表示行车速度低于25km/h。

●“红黑相间”表示路段的交通状况不明。

2.【More】按钮

最能体现Google商业化功力的是下面要讲解的【More】按钮。在国内Google Maps的官网上(http://ditu.google.cn)并没有提供这个按钮的功能。如图2-35所示,【More】按钮功能中提供了5个子功能,分别是Photos(图片)、Videos(视频)、Wikipedia(维基)、Webcams(摄像头)、Transit(交通)。近年Google在商业上也是大举扩张,合并了不少公司,像YouTube这样的知名网站也成了Google旗下的子公司。

Google与YouTube、Webcams等网站相互支撑,相互引用,形成关联网络,在各自的网站上都把对方的功能融入自己的核心业务中。以Webcams为例,勾选【Webcams】复选框,Google Maps地图上逐渐会显示出一些摄像头的图标。如图2-36所示,这幅图是纽约乔治·华盛顿大桥上的一个公共摄像头所拍摄的画面。图2-35 融合多功能的【More】按钮图2-36 Google Maps中带摄像头瞬间截图的提示窗

而在Webcams中,你甚至可以看到整幅页面的Google Maps地图与Webcams的核心业务——汇集各地摄像头,结合得非常紧密圆滑,如图2-37所示。Google Maps提供了一个基础的地理数据作为摄像头位置的载体和操作平台,相互补充、相互完善,这个结合多么巧妙!图2-37 在Webcams.travel上整幅的Google地图作为“cams”的地理载体

3.【Map】按钮

单击【Map】按钮可以切换到彩色矢量底图的地图。

4.【Satellite】按钮

单击【Satellite】按钮可以切换到卫星图片地图,如图2-38所示。图2-38 整合了叠加图功能的【Setellite】按钮

5.【Terrain】按钮

单击【Terrain】按钮可以切换到矢量图和卫星图叠加的地图。

同上一版的Google Maps相比,新版最显著的变化有两个:一个是增加了【Terrain】地形图按钮,提供仿真三维效果的地形图片,从而替换了以前的【Hybrid】按钮(以前的Hybrid图层为卫星底图与矢量底图混合叠加而成,下称“叠加图”),而“叠加图”功能则融入了【Satellite】图层中,如图2-39所示。

Google Maps另一个变化是增加了一个实景街景的导航功能,这个功能于2008年中旬推出,采用相机随车拍摄的模式,对街道及街道四周的建筑物进行取景,然后将连续拍摄的照片合成为一个“全包围”的空间,可进行360°旋转,仿佛置身于浏览的地图街道中。随着Google Maps拍摄工作的全面展开,从原先只提供美国几个大城市的试用到如今推广到北美、欧、亚一些国家(例如亚洲的日本),Google的这种技术应用是否又是一个新的商业模式的开始呢?

点击缩放级别拖动条上的橘黄色小人的按钮,按住不放然后移动鼠标到想要浏览的位置,再放开鼠标,即可调出实景街道图,如图2-40所示。图2-39 Google Maps的地形图图2-40 实景街道图

2.5.2 地图种类

Google Maps地图的底图基本分为两种:卫星图片(Satellite)和矢量地图(Map)。当然还包括一种合成地图(HyBrid现已并入Satellite的功能),就是这两者的叠合。在客户机的浏览器中查看到的地图都是栅格图片,之所以用图片的形式传递,是有一定的好处的。重要原因之一就是在客户端的浏览器上无须绘图算法,显示地图只需要加载图片就可以了。在Google Maps中不管是卫星地图还是矢量地图,都是以分幅栅格图的形式传递的。增幅地图是由不同的小地图拼接而成的,其原理就类似于测量时的分幅处理一样,分割成不同的“瓦片”,按照每个“瓦片”反映地图内容的所在位置,换算出对比于当前屏幕的坐标,并计算出拼接的排列方式,最后通过JavaScript算法脚本,在客户端的浏览器上拼接成一幅无缝的整图。当用户浏览此地图的时候,Google Maps不断地重复这个拼接“瓦片”过程,从而使人感觉到地图浏览的实时效果,就好像在用一个C/S程序,而非B/S的网页。

WebGIS通常采用“瓦片”拼接示意图,Google Maps亦然,如图2-41所示。图2-41 “瓦片”拼接示意图

在图2-41中,每幅单个的瓦片图都有自己独立的编号,每个编号都对应一个固定位置。

Google Maps的卫星地图与Google Earth的卫星地图一致,都是同一个数据源,因此地图看上去是一样的。一般Google Earth卫星照片的更新速度要快于Google Maps,只是显示的方式不同而已。而以矢量地图为底图的“Map”则是通过人工编绘而成的。所谓矢量图是指画面由点和线组成,线条和点在服务器上是以数学模型存在的。理论上可以无限缩放不产生任何失真,而且文件的体积比较小。对于地图而言,矢量地图相比卫星地图,其“专题性”非常有特点,它会根据比例尺和采集的需要,忽略很多次要的地理要素,而突出主要的地理要素,使得图面相对较为整洁、鲜明。

Google Maps的Map主要提供了北美和欧洲全部地图,另外还有大洋洲、亚洲部分地区的地图。其中北美和欧洲还有日本的地图最为详细,除了普通的地貌要素之外,还有很多实用的地标和符号,标明了如公路名称、道路走向等,甚至还有透视效果的立体建筑。而且一般道路(甚至社区里的小路)都用双线表示,这些表示方式有别于我国的专业测绘规范,但是随着电子地图的发展,原先对于纸质地图的测绘标准相信将会有相应的变化。由此可以看出,北美和欧洲、日本的测绘资料的普及和利用程度要明显高于我国。

Google Maps中国地区的矢量地图底图,由于中国测绘政策的约束,采用了和中国国内企业合作的方式,使用的是中国内地的一家公司(图盟公司http://www.mapabc.com)的地图资料。在Google Maps的地图网站中有相应的链接,专门供中文区的用户使用。大部分城市的地图比例尺达到了1:25000左右,地图内容比较详尽,并且在操作方式上和Google Maps保持了一致。

对比欧美的地图和中国的地图,我们会发现一个有趣的现象:欧美地图色彩比较鲜艳,往往有“浓墨重彩”的效果,而中国国内的地图表现得色彩朴素典雅,比较适中。这是与欧洲人和亚洲人眼睛色温的差异有关的,因此造成了这样的现象。

另外,Google的地形图,在美国、新西兰、加那利群岛、瑞士和加拿大部分地区,三维的地形图可以达到3m的分辨率,而其他大部分地区只有90m的分辨率。

2.5.3 浏览地图

Google Maps实质上是在网页上的一个图片,是页面上的一个IFRAME区域,虽然都是卫星图片,但是操作上明显区别于Google Earth。最明显的区别就是Google Earth可以改变地图的方向和观察倾角。通过改变地图方向,用户可以很方便地进行GPS的行踪控制,而观察角度、观察倾角的改变,还可以进行模拟三维的观察。

Google Maps毕竟不是Rich Client架构,它的所有API是基于JavaScript脚本的,并且运行在用户的浏览器端。这对于一些复杂的三维渲染的计算而言,显然是比较困难的。因此,Google Maps选择了一些WebGIS最基本的功能,如移动、缩放等,并且把这些看似简单的功能优化到了一个近乎完美的地步。在移动和缩放之中,Google Maps不但响应按钮事件,而且还能响应鼠标事件,如单击、双击、鼠标滚轮的各种事件,并且可以平滑地移动。

Google Maps的鼠标事件如下所述。

●单击

抓住地图。

打开信息窗口(如果此时鼠标单击在信息图标上)。

●双击

双击左键:以鼠标双击的位置为中心放大地图。

双击右键:以鼠标双击的位置为中心缩小地图。

●拖动

移动地图。

●鼠标滚轮滚动

前滚:根据鼠标位置放大地图。

后滚:根据鼠标位置缩小地图。

Google Maps的图层也不像Google Earth那么复杂。对于一个WebGIS而言,如果把很多图层放在网页上是极其不明智的,否则反应速度和数据库的负担都是一个显而易见的问题。Google Maps在逻辑上主要分为如下3个层次:

地图层。

符号层。

信息窗口层。

●右键菜单

Google Maps的右键功能有很多用处,不仅仅可以缩放、移动地图,而且可以查询“出发地目的地”路径功能。另外,还可以调用其他附加的很多功能。右键菜单如图2-42所示。

地图层承载着地图图片数据,而符号层承载着地图上的各种可识别符号,信息窗口层主要是显示弹出的信息窗(InfoWindow)。Google Maps在拖动的时候,采用了一个聪明的方式解决地理坐标和屏幕坐标之间的关系换算,而分层绘制和IFrame的应用,正是这个聪明的关键所在——拖动的时候,Google Maps无须重新计算符号点的位置,符号层和地图层是同时移动的。这种处理方法不同于ArcIMS(Esri公司的WebGIS产品),ArcIMS是重新计算拖动后的经纬度在屏幕上的位置的。相比而言,Google Maps的这种处理方法比较聪明,但给二次开发会带来一些不方便,这一点在本书的后面章节中会和读者逐步探讨。当然,用户自己也可以添加自定义图层。图2-42 右键菜单

2.6 Google Maps Mobile的使用

移动操作系统必然是下一个主流商务平台,Google在推出Google Earth的同时几乎就把触角伸到了移动领域。早在2005年11月,Google就推出了针对Java手机的“Google Local for Mobile”服务。该服务在功能上与目前的Google Maps Mobile有相似之处,所不同的是Google Local for Mobile是基于Wap浏览器工作的,而如今的Google Maps Mobile是基于J2ME的独立程序的,而且支持很多移动智能操作系统。例如,目前大部分的Java手机,还有Palm手机、黑莓手机、Windows Mobile手机等。当然Google自己的移动平台Android的支持也自然不在话下。用户可以在Google的移动项目官网上获得Google Maps Mobile程序,网址为http://www.google.com/mobile/products/maps.html。

我们以Windows Mobile平台为例,说明几个典型的Google Maps Moblile的用法。

Google Maps Mobile有两种地图,一个是卫星图片地图,另一个是彩色矢量底图的地图,分别如图2-43和图2-44所示。图2-43 卫星图片地图图2-44 彩色矢量底图地图

从图2-43和图2-44中,可以看出Google Maps的界面十分简洁实用,这是Google软件的一贯风格。最新版的Google Maps Mobile已经推出中文版,如图2-43所示。而且新版中加入了实时路况功能,在移动平台上显得非常实用,如图2-45所示。图2-45 实时路况

另外,新版的Google Maps Mobile还提供了“纵横”与“获取线路”两大亮点功能,使得Google Maps Mobile的发展往实用型移动GIS方向上迈进了一大步,这两个功能会在下文中讲解。

2.6.1 Google Maps Mobile的下载和安装

在Google的官方Web网站上,提供了Google Maps Mobile的下载链接和安装说明,用户可以在http://www.google.com/gmm/index.html中找到。如果用手机直接无线上网,访问http://www.google.com/gmm即可。当用户用手机访问这个网页的时候,会自动检测用户手机的操作系统,然后相应地给出需要下载的软件,如图2-46所示。

一般下载到本地手机上的是一个CAB包,用户可以直接单击安装。当然也可以通过个人电脑下载后再用数据线传输到智能手机上再安装,安装完毕之后的图标如图2-47所示。图2-46 手机访问界面图2-47 安装后的图标

2.6.2 无线网络接入方式

在国内使用Windows Mobile平台上的Google Maps Mobile,需要有网络接入,通常采用的是GPRS或者CDMA的无线数据传输方式。

虽然目前国内的两大运营商提供了很多上网套餐,但是使用移动G网的用户要记住,Google Maps Mobiles需要使用cmnet接入方式,如果只开通了cmwap是没有用的。而使用联通G网的用户如果无法正常访问,则需要设置代理,C网的用户无须设置其他东西就可以轻松使用了。

Google Maps Mobile因为传递的都是图片,所以流量不小,在使用的时候需要加以注意。

2.6.3 Google Maps Mobile的功能介绍

Google Maps Mobile的功能与Google Maps类似,其实就是一个简化版的Google Maps,所有的基本功能都有体现。

1.地图浏览

打开Google Maps Mobile的界面,首先就会看到地图窗口,这个地图窗口占整个屏幕布局的90%以上,只有上下两底边有状态条和操作按钮。

Google Maps Mobile的其他操作功能被隐藏在菜单栏中,单击屏幕右下方的【Menu】按钮,可弹出操作菜单,而左边的【Zoom】按钮则是地图缩小功能键。一般的手机除了“接听”和“挂机”两个按键外,中间都会有一组导航键。单击导航键,可以实现放大功能,如图2-48所示。

由于手机上没有鼠标,所以表示上、下、左、右的方向键成为了移动地图的工具,通过这4个键及前面的【Zoom】键,用户可以很方便地缩放移动地图。

一般而言,地图的浏览速度要快于传输图片的速度,所以通过方向键来操作瓶颈在于图片数据传输,而非操作方式。

Google Maps Mobile地图有两种,切换的操作在菜单中提供,在【Menu】菜单的【Change View】命令中有两个子命令:

●Map矢量彩色底图地图。

●Satelliate卫星图片地图。

如图2-49所示,勾选的子命令为目前的地图类型。图2-48 导航键图2-49 菜单

2.地名搜索

图2-48中的【Find Location】命令就是地名查找功能操作。选择它后,Google Maps Mobile会跳转到另一个窗口,该窗口中有一个输入框,需要用户输入要查找的目的地,然后单击【OK】按钮进行查找即可,如图2-50所示。右图为查找的结果。图2-50 地名搜索

3.路径查找

Google Maps Mobile提供了一种实用的功能,即路径查询功能。因为所有的GIS除了单点定位显示的基本功能之外,还有个重要功能就是两点间的路径查询,而基于便携式手机的GIS路径查询,必然是未来的一个GIS的增长点。Google Maps Mobile目前仅提供了简单的查询功能,尚未增加诸如路线最短、时间最短、过路过桥费用最少等诸如此类权重因子的查询,相信将来Google会提供一个完美的解决方案。

在最新版的Google Maps Mobile中,“获取线路”的查询功能代替了旧版的路径查询。“获取线路”功能分成3个子功能,分别是【驾车】、【公交】和【步行】,其中【步行】功能尚在测试阶段,不过仍然可以提供给用户比较满意的路线和时间估算。

例如【驾车】功能,对于用户查询的地点,Google Maps Mobile会进一步确认到哪一个地段和路口,然后给出多种路线提供用户选择,并且在地图上的路线中每个拐点都加入了地标(关于地标的概念本书第3章和第4章还会详细讲述)和地标点的信息窗口,使得通过狭小的屏幕用户也能获得大量而有用的指向信息,如图2-51所示。图2-51 提供多种路线供用户选择

另外,还可以通过【上一步】或者【下一步】来选择预览或者回顾路线,Google Maps Mobile比起目前市场上现有的GPS导航仪在速度上稍微有点慢,这是因为它的地图全部都在服务器端,只有以前浏览过的地图才会缓存到本地智能手机中。而它的优势就是地图的维护,以及程序本身的维护升级完全不需要用户去办理,通过Internet即可完成。【公交】线路查询功能也很实用,不仅给出多种搭乘方式(例如地铁、公交),还给出不同的搭乘方式是否需要步行前往车站或目的地。在如图2-52所示的第二张、第三张图中,Google Maps Mobile不但给出了公里数,还给出了出站台后,需要步行至目的地的路程长度,并标示了路线,这条路线经笔者测试完全正确。图2-52 公交线路查询

4.纵横功能

纵横功能的问世,不仅仅使得用户可以通过Google Maps Mobile共享自己当前的空间位置,而且还将智能手机平台带入了一个信息共享、互动的全新层次。可以设想今后的Google可能不仅仅只提供共享空间位置的功能,通过“纵横”还可以将图片、视频、个人喜好、Blog、文档资料等信息同时共享。纵横功能也许会涉及一些私密的信息,因此用户可以选择是否使用该功能。

使用“纵横”可以添加希望共享自己地理位置的好友,添加好友时需要对方的E-mail信箱账号,然后Google会自动发出一封邀请信来给被添加的好友。同时用户可以设置隐私信息的共享程度,如图2-53所示。图2-53 Google“纵横”的隐私信息设置“纵横”的使用需要用户注册一个Gmail账号,然后以此来登录Google账号,将自己的位置和纵横信息设置好。例如图2-54是一张页面截图,用户可以通过鼠标来指定自己在Google地图上的位置,然后Google Maps将对该点进行缓冲分析,生成一个以用户单击的位置为圆心的圆形区域。那么在“纵横”中,Google将认为用户目前就在此区域内,通过图2-54与图2-55的对比可以看到:网页端的位置设置与手机平台上的Google Maps Mobile显示的地理位置是大致在同一地点的。图2-54 网页端的设置图2-55 手机端的显示

在手机端用户的朋友可以查询从自己的位置到用户处的路线等信息,也可以设置共享自己的地理位置,如图2-54所示的第二张图片。

由此可以看出,纵横功能是Google Maps Mobile将来与Google其他项目的接口之一,通过“纵横”融合Gmail、Google Maps、Gtalk的“整合型”功能,来布局不同的行业与应用是个绝妙的主意,用户可以在一个平台上共享和互动所有涉及到的信息,并且与他人能够随时随地的交流。

5.GPS功能定位

Google Maps Mobile同时也提供了GPS实时定位的功能,一个可定位并且可以同时记录移动轨迹的GPS接收器如图2-56所示。GPS和手机之间通过蓝牙(Bluetooth)进行数据传递。图2-56 GPS接收器

Google Maps Mobile的两地路线查询服务是一项很实用的功能。随着3G无线网络的普及,相信世界上的每一部手机都将具有这个激动人心的服务功能。Google就像一个领航员一样,时刻标示着前进的方向。

2.7 小结

本章主要介绍了Google Earth、Google Maps,以及Google Maps在移动平台的衍生产品Google Maps Mobile的安装、注册与使用,深入讲解了Google Earth和Google Maps使用到的技术,例如Google Earth使用到的Groundbreaking EarthStream™技术等,另外介绍一些例如修改Google Earth缓存的高级技巧。高级用户及对以上3个产品比较熟悉的读者可以跳过本章内容直接进行KML的学习。

本章的内容主要为了以后的开发进行铺垫,同时也力求理清Google地图的产品线,指出3个产品之间的区别与联系,并展望3G时代Google Maps Mobile的开发是一个非常有前景的方向。

第3章 KML脚本编程

本章内容将阐述KML2.1版本与2.2版本(本书介绍版本截至2009年9月为止)语言。介绍什么是KML、KML的功能、KML的语法、KML文件本身的格式、KML在GoogleEarth和Google Maps中的应用,还包括其他相关的技术(例如COLLADA)。在本章中还引入了一些实例代码的分析。阅读完本章之后,希望开发者能够对KML有较为深入的理解,并且能够独立编制脚本程序。

3.1 KML介绍

KML是Keyhole Markup Language的英文首字母缩写,是一种类似XML的语言,与XML有着相近的语法和格式。KML描述了地理要素相关的信息(如点、线、面、文字描述、图像等),可以被Google Earth、Google Maps、Google Maps Mobile解释,并在其平台上显示出相应的地理要素模型。

KML使用和XML类似的标签机制,通过规范和用户自定义的标签,构成文档结构。用户可以通过Google Earth产生KML文件,通过Google Earth生成的文件俗称“地标文件”,其中包含各种各样的有关地理要素的信息,包括位置、大小、缩放比例、颜色、视角、方位角、旋转角度等描述空间属性的参数。KML地标不仅可以以点的形式展现,还可以是三维效果,可以用于三维建筑物的展现。KML文件可以复制到其他用户的客户端打开,从而使之成为交流地理信息的一种共享方式。

KML文件不仅可以用Google Earth去创建,高级用户甚至可以用文本编辑器去创建一个KML文件。KML文件的本质是个文本文件,只不过文件类型是*.kml类型而已,可以用笔记本、写字板或者其他任何文本编辑器打开查看。只要熟悉KML的语法规则,也是可以一行行敲出来的。也有很多第三方软件提供了和Google Earth的数据转换接口,比如Google推荐的三维建模工具Google SketchUp、开源的GIS项目MapWindow、著名的GIS浏览软件Global Mapper,还有顶级数据转换工具FME等,都可以把矢量数据转换成KML文件格式。关于数据转换,将在后面的章节里详细叙述。

KML文件的另一种形式是KMZ文件,后缀“Z”就是著名的压缩文件格式*.zip的意思,说明KMZ文件是KML文件的ZIP格式的压缩文件,KMZ文件可以自行包括图片,而不必引用其他网络上的图片链接,比较方便,因此这是Google Earth保存地标的首选格式。

对于这种文件的处理有一个小技巧,用户可以直接把*.kmz文件的后缀改成*.zip,然后再用WinZip或者WinRAR等工具解压缩后打开。此时可以发现,解压缩后的文件夹中会有一个doc.kml文件。

Google Earth的一个吸引人的地方就是KML地标文件的交流。世界各地的GEgeeker组成了大大小小的各种交流社区,大家把卫星地图上的新发现或者有趣的图片,加上自己拍摄的照片和文字之后,保存成KML文件,放在论坛上供人下载。有人甚至以KML文件作为Blog的载体,把Blog上故事发生地的位置保存为KML文件,给人以强烈的时空感。甚至像《国家地理》杂志(National Geographic)、联合国教科文组织这样著名的机构,都使用KML来标注数据。

3.1.1 KML的作用

KML在Google Earth和Google Maps/Google Maps Mobile里的作用并不完全相同,对于Google Earth而言,因为是开放API的桌面应用程序,因此很多功能完全可以由调用API去实现,例如切换观察的视角、高度等。虽然这些功能使用KML也可以完成,但从对比实验的结果可以得出结论:使用API的效果会更流畅、更自然一些。而对于Google Maps而言,Google Maps的API并没有提供Google Earth那么多的功能,KML正好起到了互补的作用。对于Google Maps Mobile而言,KML 2.2特别增加了对于移动手机的若干功能。KML本身也具有如下优势:

●简单的文件格式。它可以存储地理要素的描述信息,用户可以将地标的描述以文本文件的形式保存在磁盘上。

●与数据描述的平台无关。由于KML文件是很简单的文本格式,便于在不同的操作系统平台之间传递。

●强大的可拓展性。KML作为XML的类似语言,也可以和XML结合在一起使用,来实现比较复杂的功能,而XML本身就具有非常强的拓展性。

●一定的开放性。KML本身具有一定的开放性,高级用户可以编写一个自己的程序读取KML中的数据,甚至编写一个自己的KML编译器。

3.1.2 KML与XML、HTML

本小节要讲解的这几个专业的名词都是我们在学习本书的过程中将要涉及到的几个概念,它们之间有关联,下面逐一深入介绍。

1.XML

XML(Extensible Markup Language网址http://www.w3c.org/XML/)是拓展性标识语言,是一套定义语义标记的规则。准确地说它并不是一种语言,而是一种元标记语言,是定义了用于自定义业务相关的、语义的、结构化的标记语言的句法语言。用户可以使用XML定义自己的标记来描述和存储数据,XML是目前很流行的数据描述与交换的手段,其特色在于扩展性和开放性。

在Google Earth的三维地标文件中有专门描述三维模型的DAE文件,用普通的记事本可以打开,其实质上就是一个XML文件。在下一节我们将重点讲述这DAE文件和XML的关系。我们可以使用XML来描述三维建筑物体的各种属性,包括三维物体的内部结构的比例、颜色、质地等。利用XML的可拓展性,用户可以拓展自定义的标识来描述三维物体的各种信息,此时则体现出XML强大的数据描述特性。如图3-1所示,就是一个典型的描述数据的XML例子。这是一个DAE文件的片段,在DAE文件中,所遵循的就是XML语法规则。图3-1 DAE文件

2.KML

KML(Keyhole Markup Language)是Keyhole用于描述和定义地理要素属性、类型的一种标识语言,与XML有类似的语法和文档结构,借鉴了XML强大的数据描述特点和平台无关性的特点。Google已经公布了KML的语法规范,KML定义了很多关于点、线、面等空间要素的各种属性标识,通过Google Earth和Google Maps可以解释并最终展现在地图上。其实KML可以看成是约定好标识格式的XML语言,这个约定好的格式就是Google公开的KML语法标准。如图3-2所示的就是一个典型的KML文件片段。图3-2 KML文件

3.HTML

HTML(Hypertext Markup Language),是指超文本标记语言。它也是一种标记语言,在早期的Internet时代,HTML的用途就是描述静态的页面。这个用途已历经多年,网页早已不是当年的“静态”展示,而是具有动态交互功能的动态界面了。但是至今人们一提到网页还是会想到HTML,目前HTML规范的最后标准是4.0。不过HTML毕竟只是其祖父SGML的一个超级简单的子集,它的语法很简单,任何人只要经过几个小时的训练就可以熟练掌握。正因为HTML的简单易用,众多厂家纷纷利用HTML展示自己的网页,始于90年代的互联网运动就此兴起。

HTML的缺点也是由于它过于简单,导致了HTML无法对于数据进行深层的描述。随着人们对网页浏览需求的提高,很多网页浏览器向HTML中加入了自己的元素和标识,例如网景通讯公司的Netscape和微软的IE,都曾参与HTML 3.0规范的制订,造成了HTML的使用一度很混乱的状况——人们为了适应两个不同的浏览器要设置两套不同的网页代码,目前4.0版本的HTML是人们使用最广泛的。

虽然HTML和XML都是源于SGML标准,但是XML和HTML可以说没有什么关系。HTML也不是XML的一个子集,二者所起的作用是不同的,更不是相互替代的两种语言,至少在目前XML在数据展示方面仍然无法替代简便的HTML。

在以后的章节中,我们会初步用到HTML的一些知识,基本上是以HTML+JavaScript+KML居多,请读者自行阅读其他教材中关于HTML的相关知识。例如下面的一个简单的例子:

在上面的例子中既有HTML网页代码也有脚本代码,网页上有名为“map1”的HTML元素<DIV>,然后通过Google Maps API以map1为基础创建一个GMap2对象,相当于创建了一个新的Google Maps,这些代码就是JavaScript脚本。

3.1.3 KML资源

KML目前不仅可以在PC上使用,也可以在移动手机上使用。随着3G时代的到来,KML的应用会越来越普及。

KML的相关资源如下所示。

●Google的官方网页:http://www.google.com。

●KML的概述介绍。

http://code.google.com/apis/kml/documentation/kmlreference.html。

http://earth.google.com/userguide/v4/ug_kml.html。

http://code.google.com/apis/kml/documentation/topicsinkml.html。

●KML的详细参考:http://code.google.com/apis/kml/documentation/kml_tags_21.html。

●GDAL的关于KML的介绍:http://www.gdal.org/ogr/drv_kml.html。

●Wiki关于KML的介绍和资源:http://en.wikipedia.org/wiki/KML。

●Drupal上关于KML的项目:http://drupal.org/project/kml。

3.2 KML与三维地标、DAE文件的关系

Google Earth上的三维地标是通过KML和DAE文档共同执行的结果。一般而言,对于绘制点状、线状的二维模型来说,通过KML可以完成绝大部分的要求,可以通过VML的方式设置,向网页上绘制线条图案。如果这些都无法满足某些特殊要求(比如绘制速度、图案图形的规模复杂程度超出KML、VML绘制的难度),那么还可以采用XML+Google Maps API的方式——XML承载数据,通过Google Maps API读取,最后在Google Maps的iframe方框中绘制出来。

如果需要建立三维的模型,最好的方法是通过DAE文件来设置,DAE文件本质上是一个XML文件,文件的后缀采用“.dae”结尾——一个包含DAE模型的KMZ文件,解压缩之后会有一个名为“doc.kml”的KML文件和一个含有DAE文件的文件夹models,如图3-3所示。图3-3 图标

关于KMZ文件结构的解释,请参看3.3.1和3.3.2小节的内容。

下面的例子简单描述了通过KML是如何调用DAE文件的:

在上述的KML代码中,定义了DAE模型的摆放位置、摆放比例等。在<Link>中更是设置了DAE文件(“building.dae”)的引用地址,使得KML调用DAE文件成为可能。用Google Earth打开此KML文件,模型“building.dae”就会自动按照制订的经纬度位置、比例在地图上显现出来。如图3-4所示,这就是一个典型的Google Earth三维建筑物的模型,而且是根据地形的高低起伏而摆放的。图3-4 三维地标

3.2.1 三维地标

三维地标指的是利用KML建模的方式,在Google Earth上建立的三维的建筑、构筑物模型。这个三维模型可以在Google Earth的地图窗口中显示,模型具有空间属性,例如经纬度、高度、大小、朝向方位角、长宽比例等。通过三维模型的出现给人以耳目一新的感觉,很多世界著名的建筑现在都拥有了三维模型,Google Earth建模爱好者可以在家中一览这些名胜的风采。

三维地标还可以用在很多专业的技术领域,例如建筑设计、城市规划等,设计师可以结合卫星底图设计符合周边特色的建筑。三维模型的不足在于没有地名、文字描述等,但如果和地标结合起来,就既能以三维的方式描述建筑的外貌,又能加上文字、图片、链接等辅助手段进行描述,那么就完美了。这也是应用三维地标的一个技巧。例如图3-4所示就是一个利用三维地标制作的模型。

三维地标不仅使用了KML的技术,而且还涉及到了COLLADA标准和XML,三维地标实质上是一个符合COLLADA标准的XML文件,以XML的形式描述了三维模型的各种属性,保存为DAE文件,然后由KML调用并在Google Earth上显示出来。我们将在下面的章节里详细介绍三维地标的知识。

3.2.2 DAE文件和COLLADA

上一节中我们提到了Google Earth/Google Maps中用于三维建筑模型的DAE文件,DAE是英文Digital Asset Exchange的首字母缩写,意思为数据资源交换。DAE文件并非Google为Google Earth、Google Maps创立的文件格式,它是COLLADA的模型文件。

把三维地标文件后缀由.kmz改成.zip,然后解压缩,一般会有3个图标,如下所述。

●images文件夹:放置模型的背景和纹理画片(其中有一个或多个文件)。

●models文件夹:放置描述模型的DAE文件(其中有一个或多个文件)。

●doc.kml文件:KML文件主要起到调用DAE文件的作用,并描述其在Google Earth上的位置、比例等属性。

COLLADA是由索尼(Sony)提出的基于XML的一个开放的、免费的数据交换标准,通过XML Schema的技术展现三维数字模型,正因为COLLADA基于XML技术,所以这个标准有着十分优秀的移植性,居于不同平台的实时引擎只要支持这个标准,就可以实时表现三维模型。

COLLADA标准主要应用于娱乐领域的交互式应用。从某种意义上来讲,COLLADA的目标就是把每一个使用者都当成一个Player,为其展示三维全景模型,与其交流互动。目前支持COLLADA标准的应用平台很多,不仅应用在电脑游戏中,而且在Web程序、智能手机、Sony的PS3上都有它的身影。这些应用程序中有我们常见的Google Earth、SketchUp,有老牌三维建模软件3ds max与Maya,还有网页里的Flux Player插件等。最新的COLLADA版本是1.4.1,在著名的Khronos Group的官方网站上,有关于COLLADA的介绍(网址为http://www.khronos.org/collada/),读者可以自行查看在此不再赘述。

DAE文件其实是一个文本文件,其中的内容是基于XML格式的三维模型的COLLADA描述,实质上就是一个XML文档,所以也可以将*.dae的后缀名称改为*.xml,或者根据不同的应用程序需要将其改成其他任何后缀名称。从理论上讲,所有可以按照COLLADA标准生成XML文件的工具都可以生成DAE文件,最终保存成.dae文件即可,而并不仅仅是Google的建模工具SketchUp才能够建立DAE文件,高级用户甚至可以使用文本编辑器手工编制一个模型文件。

但是Google Earth中使用DAE模型有一些限制,COLLADA的一些特性无法适用于Google Earth的平台之上,比如动画和过于复杂的图形,具体如下所述:

●KML只支持三角形(Triangles)和线条(Lines)作为图元。

●其中三角形的数目最多不超过21845个。

●KML不支持动画和皮肤特效。

以上3个注意点可以在http://code.google.com/apis/kml/documentation/kml_tags_21.html#model中查到相关说明。

本节介绍的相关技术的网络资源如下。

●COLLADA的介绍(英文PDF文档):http://www.khronos.org/files/collada_spec_1_4.pdf。

●COLLADA的Schema文档:http://www.khronos.org/files/collada_schema_1_4。

●COLLADA的教程(英文):http://collada.org/mediawiki/index.php/Getting_started_with_COLLADA。

●COLLADA的维客(英文):http://collada.org/mediawiki/index.php/Main_Page。

3.2.3 DAE和SketchUp

在Google Earth中建立三维模型推荐使用Google自己的建模工具SketchUp,全名是Google SketchUp 6,这个软件的前身是美国著名的建筑软件设计公司@Atlast Software的主打产品,在建筑业界号称“建筑草图大师”。在世界各地的建筑设计团队中几乎都可以见到SketchUp的身影,我国的很多建筑设计院、高校也是@Atlast Software的用户,SketchUp在2006年3月被Google收购。

SketchUp是一个类似于3ds max三维建模的软件,使用起来非常的简单、便捷,可以让建筑设计人员从复杂的计算机辅助设计的操作中解放出来,以近乎自然的笔触去工作。SketchUp注重的是设计思索的过程,设计人员可以一边和客户交流一边修改设计、着色、渲染,直至成图印刷。这一切都是建立在其操作简单的特征基础之上的,它是目前为数不多的直接面向设计过程的设计软件。使用它,任何人都可以很方便地建立自己的二维/三维模型,加上SketchUp自带的教学演示例子,用户能够很快上手。

使用Google SketchUp设计Google Earth的三维地标,好处是可以随时通过其“Place Model”功能在Google Earth上展现出来。设计师们可以轻松对比自己设计的作品在三维地图上的放置效果,这使得建筑项目的外形设计和规划都成了一件轻松的事情。

SketchUp可以导入很多其他格式的模型,例如用AutoCAD、3ds max设计好的模型、数字高程.dem模型。当然,也可以导入所有的常见图片格式,然后将其软换成自己的格式。它的导出功能也非常强大,其中一个是导出成栅格图像,另一个就是导出到Google Earth的接口。通过这个接口,SketchUp会把用户设计的模型保存成.kmz文件,KMZ文件中所包含的DAE文件就是SketchUp根据COLLADA标准生成的,对模型进行描述的XML文档。这个.kmz文件就是我们通常所说的三维地标文件。在前面我们已经叙述了如何在.kmz中找到DAE文件。SketchUp自己的文件格式后缀为.shk。但要注意的是,如果用户使用的是新的Google SketchUp 6版本创建三维模型,对于其中加入的新特性的展现,则需要使用Google Earth 4或以上版本才可以。

Google SketchUp 6有两个版本,一个是免费版,另一个是专业版,使用免费的版本完全可以满足普通用户的需要。这两个版本目前只有英文版。免费版的Windows版的下载地址是http://sketchup.google.com/thankyou_win.html。

本节介绍的相关技术的网络资源如下。

●SketchUp网站(英文):http://www.sketchup.com/。

●Google SketchUp网站(英文):http://sketchup.google.com/。

●SketchUp在Windows和Mac上安装需要的软硬件环境(英文):http://sketchup.google.com/support/bin/answer.py?answer=36208。

●SketchUp 5的老用户使用SketchUp 6新版本的对照说明(英文):http://sketchup.google.com/support/bin/answer.py?answer=57569。

●SketchUp与Google Earth结合使用的说明(英文):http://sketchup.google.com/support/bin/topic.py?topic=8539。

3.3 KML语言基础

作为XML语言的一种,KML文档结构主要由标签组成。KML的全称为Keyhole Markup Language,以前2.1版本的KML标签项一共有140个,KML 2.2初期则有149个标签项,而目前的2.2版的KML有168个标签项。这些标签项不完全代表实际的要素或者要素属性,有的是抽象概念,例如<Fearture>。其实。KML文档中并不存在Fearture的标签,它代表了一系列代表地理要素的同种类标签;其余的大部分都是实体标签,每一个都有不同的含义,并且可以单独使用。

下面我们将深入介绍KML 2.1的具体编程方法。

3.3.1 KML语言结构

KML所有类都继承于Object,如图3-5所示的即是KML 2.1版结构图。其中的Object是个抽象基础类,由Object派生出了Feature、Geometry、ColorStyle、StyleSelector、TimePrimitive、SchemaField几个抽象子类和其他诸如BalloonStyle、Location等实体类,其中抽象子类又继续向下派生出抽象子类和实体类,以此类推,形成一个树根状继承结构。图3-5 KML的类结构图

在上图中,实线框表示实体类,虚线框表示抽象类(这里本书只把重要的几个抽象类和一些实体类绘制了出来,由于篇幅有限,无法全部表示)。

而在图3-6中,则显示了2.2版的KML总体结构图。在新版的KML中,总体结构与前版有一定区别,在与地理要素相关的部分几乎没有什么本质变动,而主要变化发生在“观察”部分和Google相对于已成为OGC标准KML 2.2版本上的自有拓展(gx)部分。

拓展gx部分,是Google Earth/Maps/Maps Mobile为了自身功能的需要进行的拓展,因为KML现在已经成为OGC(Open Geospatial Consortium)的一个标准,Google自身的改动,需要另行以gx的形式标识出来,加以区别。gx部分在功能上主要集中于“浏览”与“观察”部分,弥补了Google Earth/Maps API上的一些不足。图3-6 KML 2.2新版类结构图

在上图中,渐变色的圆角方框即为对比2.1版新增的部分,例如“gx:Tour”、“gx:(Google拓展)”等字样;而斜黑体则表示这些出现在2.1版中,但是在2.2新版中重新发生了归类,例如“BalloonSty”、“LookAt”等字样。

3.3.2 KML Schema

因为XML太灵活了,任何可读或者不可读的字母组合都可以作为XML的标识。为了解决这个命名空间的模糊性问题,对于XML承载数据格式进行控制和约束是有必要的,模式(Schema)的作用在于定义XML文档格式的有效性和正确性,作为XML的一个特例,如今KML 2.1也公布了自己的Schema文档,可以去Google Earth的网站下载这个XSD文件,地址是http://code.google.com/apis/kml/schema/kml21.xsd。

在使用XML(KML)编辑器的时候,把Schema文档导入,可以验证XML编码的有效性,所以当我们使用其他编辑器编辑KML代码的时候,可以将KML Schema文档导入来检验语法的正确性。

3.3.3 KML详解

在本节中,所有的抽象标签题头都没有尖括号“<>”(例如:Object标签),而实体标签都是用尖括号括起来的(例如:<Document>标签)。

1.容器类标签

在我们开始学习KML的时候,一些有经验的用户或者程序员往往会打开一个*.kml文件看个究竟。但是在不了解语法规则的前提下直接查看KML文件本身,可能也会被文档中一个重要的<Document>标签所迷惑。因为有的KML文件有此标签,而有的则没有,下面先来了解一下<Document>标签的作用。

1)<Document>标签

<Document>标签虽然不隶属于KML,它来自于KML的祖先XML,是容器标签,但是这个标签在KML中却很重要。需要在学习KML的开头搞清楚它的一些使用法则。

<Document>对于KML是个重要的标签,几乎一般常见的KML(XML)文档都要用到〈Document〉标签,它是元素的容器,可以包括Feature、Sytle和Schemas元素,并非每个KML文件都必须包括<Document>标签,例如:

本例中涉及到了<Placemark>、<Point>等重要的标签,以及地理要素这样的概念,这些概念都会在后文中详细讲解。<Placemark>就是我们常说的“地标”,<Point>就是这个地标以“点”的形式存在。在这段代码中还涉及到了<coordinates>,意思为地理经纬度坐标,如118.565,32.126,0就代表东经118.565°,北纬32.126°,海拔0米。所有这些概念、名称在后文中都有实例详细解释。

上例中就没有<Document>标签,原因是如果KML文件之中没有<Schema>或者共用样式<Style>内容时,可以不用<Document>标签;反之则必须要使用,否则在<Document>中将找不到共用<Style>,例如:

在上例中,Feature1和Feature2都使用了共用样式(关于“样式”的用法本书后面章节会详细讲解)CommonStyle, CommonStyle就是在前面定义过的<Style id="CommonStyle">,Style中的样式属性只需要定义一遍就可以了。此时必须使用<Document>标签,否则系统将报错:"Only a single root feature allowed within<kml>tag."。

上面两个例子的区别在于要素有无<Schema>或者共用样式<Style>。如果有,则必须有<Document>标签;反之,也可以没有这个<Document>容器标签。

另外要记住,如果在<Document>中使用不同的样式<Style>,则每个<Style>都需要有不同的id号以示区别,这个问题将在后面的章节中专门讲述。

2)<Container>标签

<Container>是抽象标签,不能直接用于KML文档内部。

这是一个容纳其他要素(Feature)的容器,并且容许层次嵌套。节点关系如表3-1所示。

3)<Folder>标签

①概述

Folder顾名思义就像“文件夹”一样,可以作为要素(Feature)的根组织节点,例如可包括地标、超链接等。

<Folder>起到了“统一组织”要素的作用,其属性统一作用于所包含的所有要素。例如,如果一个要素被<Folder>所包含,那么如果该要素要想可见,其前提是整个<Folder>的设置都可见。

节点关系如表3-2所示。

②代码实例

Folder的代码实例如下:

③代码分析

此例中<Folder>并没有包含于<Document>,包含了7个地标<Placemark>,每个地标中都基本包含了<name>、<LookAt>、<styleUrl>、<Point>等子标签。<Point>中定义了每个地标的地理位置,<name>设置了每个地标的名称,这些名称在Google Earth上可以显现出来,如图3-7所示。<LookAt>则设置了每个地标的观察方位、倾角、转角等信息,双击每个地标,Google Earth将按照<LookAt>中定义好的方式“飞”到该地。

<styleUrl>则定义了每个地标的样式,此处“root://styles#default+icon=0x307_copy0”表示了另一个名为“root”的<Document>里的样式。

这段代码是代码片段,仅仅作为示例之用,恕没有这段包含样式的代码,所以地标均显示为默认效果,读者可以不必在意。

该KML文档中Folder的名称为“folerTest”,在地址栏中显示了一个“文件夹”图标,下面的“图钉”节点为7个地标。

图3-7中的7个地标点在地图上的位置如图3-8所示。图3-7 Folder在Google Earth的地名栏图3-8 Folder在Google Earth地图窗口的示例

2.所有KML元素的基类——Object标签

上一段中讲述了可能会令人迷惑但同时也是非常重要的一个标签——<Document>,现在再深入了解一下所有KML“类”的基础元素:Object。从图3-5和图3-6中可以发现,不管是前一版本的KML还是当前的2.2版本,所有的KML类都由Object继承而来。

然而Object并不能直接用在KML中,这是个抽象基类。

Object中有id属性,凡是继承自Object的每个KML类的标签都有id属性。id是标签在KML文档中唯一性的标识,在编写程序的时候,可以在KML文档中依靠id前后调用对象,当Google Earth加载KML文档中的各个要素之后(即实例化后),id此时又起到了类似于对象ID号(targetid)的作用。

3.Feature标签

在前面讨论<Document>标签的时候,提及了一个“要素”的概念,这个概念反映在KML中就是Feature标签。

Feature是个抽象的概念,在所有KML源码中并没有出现<Feature>这样的标签,它无法直接用于KML文件之中。其实“要素”这个概念简单来说是指在Google Earth的卫星地图上能够表示的对象,例如地标符号、点、线、面、三维模型等,所以“要素”是个笼统的概念,并不特指某个图上的对象。

节点关系如表3-3所示。

Feature标签有很多属性,例如“名称”、“是否可视”等,这也是符合一般计算机系统中对象的概念的,熟悉对象编程的用户能够很快理解。Features的这些属性基本与对象的自身显示有关,也同时与Google Earth和Google Maps的一些设置有关。

Feature在KML 2.1版中一共包括了13个子标签,而2.2版中则包括了17个子标签。

1)Features标签的普通属性子标签

①<name>

name是由用户自定义的名称,在地图窗口中将以标签的方式显示出来,例如地标的名称、超链接的名称等。

②<visibility>

visibility属性表示要素在地图窗口加载的时候是否可视,即能否看得见。

visibility是布尔值。

●0:不可见。

●1:可见(默认值)。

若想设置要素为“可见”,该要素标签的所有父标签的visibility值都要是1。在Google Earth的地区栏列表中也能对要素符号的可见性进行操作,可以通过勾选列表项名前面的复选框来实现。

③<open>

open表示要素文件夹在Google Earth的地区栏列表中树形节点的开合状态。

open是布尔值。

●0:闭合。

●1:展开(默认值)。

④<region>

region在电子地图上代表一块区域,从对象结构的层次上来说,包括了经纬度高度框(LatLonAltBox)和细节级别(LOD)显示阈值两个部分。具体说明请参看本节后面的详细阐述。

2)地址类标识与xAL规范

①<address>

这是一个非结构化(unstructured)的字符串,可以用中式或者美式地址表示法,甚至是任何一种地址写法(记住,它是非结构化的,并没有什么固定的格式)。在查询地点的时候,可以用<address>中的内容替代经纬度查询,不过查询的优先级低于代表经纬度的<Point>。

<address>中的内容无法进行地理译码(GeoCoding)。

②<AddressDetails>与xAL规范

在2.1版本中,这个标签的写法就是<AddressDetails>。然而在2.2版本中,这个标签的写法成了<xal:AddressDetails>,用户要加以区分。

这是个结构化地址字符串,要按照一定的格式,例如eXtensible Address Language(XAL)国际通用格式,这种统一地址信息格式的出现就是为了解决全世界超过200多个国家地址表示的不同。每一个国家根据实际情况对于地址的描述都有不同的定义,xAL是基于XML结构的信息格式,重点在于描述地址文本的元素,而不是描述地址的格式。关于xAL格式标准的介绍请参看http://www.oasis-open.org/committees/ciq/ciq.html#6。

通过这种格式的地址,Google Maps可以将地理实际地址转换成地理经纬度,从而实现地址定位的技术转换过程。

但是在Google Earth的卫星栅格图片上,目前还无法进行地理译码(GeoCoding),所以在Google Earth上使用<address>,而<AddressDetails>目前只是在Google Maps上使用。

3)使用Google地图拨打电话的奥秘——RFC2806规范

首先介绍一下何谓“RFC2806规范”,这是一个描述电话号码的字符串,而且遵循Java手机的RFC2806工业规范。按照RFC2806规范定义的<phoneNumber>内容链接,触发后会自动转换成为电话呼叫。关于RFC2806工业规范的资料,请参见http://www.ietf.org/rfc/rfc2806.txt。

在KML中引入了<phoneNumber>这个标签,来实现在运行Google Maps Mobile的智能手机上直接拨打电话号码。

①<phoneNumber>标签

该标签为Google Maps Mobile专用。

②代码实例

下面通过一个简单的实例来说明一下<phoneNumber>子标签的用法:

③代码分析

以上的例子运行后,通过移动焦点到该超链接,触发后,Google Maps Mobile会将触发动作自动转换为电话拨号,拨打“+16173453242”这个号码。Google的这个功能实在是深谋远虑的神来一笔,未来的3G世界,手机平台将是下一个市场热点,Google将地标相关的编程与电话相结合,不但能够为Google地图上的商业用户提供一站式电话服务,也能够进一步挖掘与提升GIS应用,为手机平台的发展做先期的铺垫。这一点是国内诸多GIS软件与地图供应商需要学习的地方。

4)文字描述类的标识

以Google Earth为例,Google Earth界面的左侧有地址栏,如果用户想要在地址栏中显示地标的名称,以及简单的文字注解,就需要用到<snippet>和<description>标签。

①<snippet>及其内容的显示

<snippet>是一个要素简短说明,不支持HTML语法。在Google Earth中,<snippet>显示在地址栏的要素名称下,如果没有提供<snippet>的内容,那么Google Earth就会找<description>中的内容来替代。但是如果一个要素(例如地标<Placemark></Placemark>节)中同时包含<snippet>和<description>的话,那么地址栏的要素名称下仍然显示<snippet>的内容,而<description>的内容则显示在地标描述气泡(Placemark's description balloon)中。<snippet>具体与<description>用法的区别请看下一段的代码示例。

<snippet>标签中含有一个maxLines属性,这是个整数值,表示显示的行数,默认的数值是2。

通常情况下,在地址栏中的简要描述,会引起终端用户进一步探究的兴趣,那么就需要使用<description>标签了。

②<description>、HTML格式的文本描述

当用户在地图上单击地标图标或地名栏里的要素名称时,就会有一个描述气泡弹出,气泡里面的文字即<description>标签里面的内容。同上面的<snippet>介绍所述,如果要素(Fearture,例如地标<Placemark></Placemark>节)中没有<snippet>标签,那么在地名栏中的要素名称下将显示<description>的内容。

用户可以在<description></description>中插入HTML格式的描述,例如:

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载