Google Earth数据存储、管理、表现及开发机制
一、 Google Earth(Map)介绍
1.1 Google Earth介绍
在众多的地理信息服务提供商中,Google是较早提供服务的一个,其它有如ESRI这种巨头,也有中国的灵图。但凭借着提供优质、高效、高性价比服务的理念和Google自身的巨大影响力,Google推出的Google
Earth和Google Map平台已经成为全球影响力最大的互联网空间信息服务平台。
Google Earth具有十分突出的三个特点[1],一是能够显示矢量数据地标,包含点、线、面等几何类型;二是具有栅格图像叠加的功能,同意用户将本机上或从网上下载下来的地图图片叠加到Google Earth上,而且能够调整载入图片的透明度,此功能能够方便用户进行深入的观察和分析;三是具有三维虚拟模型,提供了一些城市的三维模型,同意用户使用三维对象。
Google Earth使用商用卫星相片[2],主要来自Digital Globe公司的Quick
Bird、美国IKONOS及法国SPOTS,高分辨率高。Google Earth仅仅有地球的真彩色数据,但图层多而具体、如地势、边界、道路、铁路、水道、地震、火山、学校、教会、公园、加油站、高尔夫球场、犯罪统计…等,北美地区数据比較全。通过影响分层分块切片组织管理、图片数据流常数等技术让用户浏览的高分辨率数据通过网络实时传输。
尽管OGC(Open GeospatialConsortium)组织中有很多已经開始进入地理信息服务提供商中这个角色中,如雅虎、微软、ERSI、NASA。在中低端市场中Google仍然是一个霸主地位,它有着比其它像Arc
Objects、World Wind那样的平台更加明显的优势。那就是他优秀的数据存储、管理、表现及开发机制。并且它的三个版本号个人免费版、Plus版、Pro版为不同的用户群提供了不同的服务,满足了各个层次人的需求。Google
Earth的API是基于Ajax(Asynchronous JavaScript and XML)的JavaScript
API,所以人们能够非常easy的利用Google Earth所开源的API进行地图服务扩展或利用Google
Earth所提供的各种信息来开发新的系统和其它的应用。
1.2 Google Earth与Google Map的差别
Google Earth年收购Keyhole的
KML(Keyhole Markup Language)标记语言来描写叙述和保存地理信息,而Google Map则是採用HTML页面和图片的形式来表现数据的。如图1-1所看到的,我们能够看到事实上Google
Earth也是像Google Map那样当个浏览器,仅仅只是Google Map浏览的网页是HTML格式的文件,而Google
Earth浏览的是KML的压缩格式KMZ格式的文件,它们都是通过网络传输的方式传给用户的。由于採用的是Ajax技术传输的地图,所以用户能够方便的再地图上放大,缩小,移动而不用再次数据传输,这就是所谓的异步,它极大地提高了用户的体验性。不像同步传输,每次设置都得再从网上数据传输。但Google
Earth和Google Map都有一个共同的缺点它们的内容都是静态的,或者说是相对静态的,不会实时更新数据,就像World Wind那样能够研究飓风或是地震对整个区域的影响。
1.3 Google带来的影响
年推出的一项跨历史性的产品,它的出现带来了GIS(Geographic
Information System)和地理信息服务提供的巨大
飞跃,这就像是“鲶鱼效应”,在平静多年的地理界掀起了一个技术和发展的狂潮,所以说Google是伟大的。正如ESRI的创始人兼总裁Jack
Dangermond所说的“正是Google打开了我们的世界,GIS行业正在趋于繁荣”
[3]。以下就一起来看看Google空间信息服务平台的奇异吧。
二、 Google的数据存储和管理
2.1 Google的投影方式
Google Map採用的是墨卡托投影[5]
,
即等角正轴圆柱投影,但它不是将地球模拟为椭球体,而是圆球体。採用墨卡托投影可以保证南北(纬线)和东西(经线)都是平行直线,并且相互垂直。并且经线间隔是同样的,纬线间隔从标准纬线(此处是赤道,也可能是其它纬线)向两级逐渐增大。所以能使Google在计算人们查询地物的方向时不会出错。
2.2 Google的影像切割
Google Map的图片组织方式是地图瓦片金字塔(Tile Map Image),首先预生成规矩的瓦片地图存储于硬盘文件夹下,地图以链接图片的方式高速定制。传统的WebGIS是实时请求地图server传输地图的,反应了地图的现势性。TMI方式的地图响应要比传统的具有更加明显的优势,不仅表如今响应速度方面,还有地图server的负载方面。[7]
Google的地图分为三大类,即普通地图、卫星地图以及合成地图,当中合成地图有由卫星地图和底色透明的普通地图叠加而成。每块地图的URL格式为[8]:
普通地图
http://mt1.google.com/mt?n=404&v=w2.33&x=?&y=?&zoom=?
卫星地图
http://kh.google.com/kh?n=404&v=13&t=?
合成地图
http://mt1.google.com/mt?n=404&v=w2t.34&x=?&y=?zoom=?
当中x表示经度方向图片编号,y表示纬度方向图片编号,x、y的取值范围0-217-zoom。
Zoom,这是由Google公司所确定的影像层级。
2.3 Google的数据管理
Google地图採用两种不同的算法对影像块的位置进行编码[10][11]。对地图数据而言,获取摸个地图块URL的样例为:
http://mt1.google.com/mt?n=404&v=w2.12&x=130&y=93&zoom小块。
对影像数据而言,URL具有一定的区别,如
http://kh0.google.com/kh?n=404&v=8&t=trtqtt个象限,按顺时钟方向从左上開始,其编码分别为tq、tr、ts、tt。
台地图server的名称分别为kh0、kh1、kh2和kh3。能够打开http://ditu.google.cn/谷歌中国地图的源码看看,能够看到http://mt0.gmaptiles.co.kr/mt/v=kr1.11\x26hl=zh-CN\x26gl=cn\x26这种uris。
可是Google的大量的图形数据是怎样存储的呢?一直让人感觉非常神奇。Google的存储为GFS(Google
file system)分布式存储文件系统[12],多读少写的数据如大索引文件,Google Map地图文件,静态网页等採用分布式表(bigtable)来存储,bigtable是一种弱关系型存储系统,建立在GFS之上,字段并不满足关系数据库范式中的原子性等,而是依据时间戳来存储单个数据的多版本号,分为列簇(column
family),可把一系列相关的列定义为一个列簇。GFS的数据存储是分块(block)
存储的,一个文件被分成64M/block的若干块,可同一时候往多个数据server插入,而下载时,可同一时候从多个数据server拿一个文件的不同部分,这就提高了数据的吞吐效率。
此外GFS的文件採用分段压缩机制,即若干block作为一个压缩单元进行压缩,而非整个文件进行全压缩,这样能够在读取文件时边读边解压缩。bigtable中也能够建立列的索引,理想情况下一次I/O预先加载索引,然后再一次I/O定位磁盘中的数据,然后作顺序读来加载数据。这样比一般关系数据库的加载速度要快。
三、 Google的表现和开发
3.1 Web2.0介绍
一般来说Web2.0
是相对Web1.0 的新的一类互联网应用的统称[13]。Web1.0
的主要特点在于用户通过浏览器获取信息。Web2.0
则更注重用户的交互作用,用户既是站点内容的浏览者,也是站点内容的制造者。所谓站点内容的制造者是说互联网上的每个用户不再不过互联网的读者,同一时候也成为互联网的作者;不再不过在互联网上冲浪,同一时候也成为波浪制造者;在模式上由单纯的“读”向“写”以及“共同建设”发展;由被动地接收互联网信息向主动创造互联网信息发展,从而更加人性化!
Google採用了web2.0的很多相关技术来表现和展示数据给用户。Web2.0能够利用很多其它的元数据来提高网页缓存和其它方面的效率,提高网页载入的利用率[14]。
Web2.0提高用户的浏览速度主要表如今Ajax技术上[15]还有它的mash-up技术[16]。
3.2 Ajax技术应用
Ajax之父Jesse James Garrett在2005.2.18发表的文章写道:Ajax不是一项技术,它是几种各自发展的技术的有力集合,Ajax包含:使用XHTML与CSS(Cascading
Style Sheets)来组织页面;使用DOM(Document Object Model)进行动态显示与交互;使用XML
and XSLT进行数据交换与操作;使用XMLHttpRequest进行异步传输数据;使用JavaScript将全部这些绑在一起[17]。
Google桌面信息平台的client採用了Ajax,实现了数据在网络上的异步传输,避免了每次提交都要反复刷新整个页面,提高了下载速度,由于用户与Ajax引擎的互动和Ajax引擎与server的互动被分离开来,用户能够差点儿无等待的进行自己的各种动作,提供给用户更为友好的界面和极大改善了用户的体验。
基于Ajax技术,client能够与server进行异步多线程的数据交互[19]。Google的地图分块技术就是充分的利用了这点,有Ajax引擎负责这些地图方块的无缝拼接、总体移动和地图填充。当用户做出一定的地图动作时,Ajax引擎依据一定的算法计算出须要新载入的小块地图,并异步多线程的向server发出请求。最后,当地图贴片传回用户端时,再由Ajax引擎无刷新的无缝拼接成用户浏览器界面中的大地图。而且,利用浏览器缓存,假设已经取得该小块地图,下次使用时则不用向server再次请求,直接利用缓存中的图片就可。这使得当回到以前以前訪问过的地图时,显示速度很快。
3.3 Mashup技术应用
Mashup是一种交互式Web应有程序[19],它利用外部数据源检索到得内容来创建全新的创新服务。它是将多种web应有给糅合在一起为用户提供服务,搜集大量有关事务和行为的数据,具有位置凝视信息。由右图能够看得出基于电子地图的Mashup所占的市场份儿最多。
Mashup发展的一种主要动力就是Google公开了自己的Google Maps API。这让web开发者能够再地图中包涵全部类型的数据。而Google
Map也把这样的Mashup用到了极致,在Google Map上,你能够看到自己周围的建筑物照片,能够看到哪儿有市场卖东西,还能够看到达目的所要走的路线,能够查到每一条公交线路。让用户感到十分的方便,舒心。
3.4 KML语言的使用
另外Google Earth数据的导入与导出是有KML实现的[22],KML是Google
Earth上的一种数据交换格式,它是一种基于XML语法与文件格式的文件。他能够描写叙述与保存Google Earth中全部的地理信息类型,如点、线、多段线、面、图片等。
Google Earth种方式来表达的:点、线/折线、多边形/立体多边形、种表达方式,可实现不同的表示效果。
年春季[23],Google向OGC递交了Google
Earth所使用的KML2.1,以期获得批准,是KML成为一个OGC标准。不久之后,OGC将KML认定为最优办法,并将其整合到现有的地理标识语音GML中。OGC将负责维护和扩展这个标准。
Google一脚KML技术的拥有权反映了Google致力于开发标准的决心。从根本上说,Google的兴趣不是要控制信息,而是鼓舞普及信息。其实,通过使KML文件成为一个国际性标准,可以与其它的GIS数据格式交换和共享信息,为Google空间信息平台渗入其它GIS平台扫清一个巨大的障碍。
四、 总结
本文仅仅是介绍了Google数据存储、管理、表现及开发机制的一部分,Google Earth与Google
Map另外中还有很多的技术和创新没有说明。Google Earth和Google Map在中国也有一些重要的功能没有实现,如Geocoding,地址查询经纬度,这对于开发基于GIS的应用系统十分的重要,只是中国已经有许很多多聪明的厂商们攻克了这个问题,具有代表性的是北京灵图公司的51map。中国还有很多网络巨头也进入了地理信息服务供应商的行列,如百度,搜狗等。希望他们能再接再厉,做的更好,为中国的GIS明天做出更大的贡献。
參考文献:
[1][2]http://wenda.tianya.cn/wenda/thread?tid=29317d1eb7390946
天涯问答
[3] 《3S新闻周刊》: Google VS ESRI
http://home.donews.com/donews/article/9/95043.html
[4] Google地球用户指南
http://earth.google.com/intl/zh-CN/userguide/v5/ug_toc.html
[5] Google Maps地图投影全解析http://tieba.baidu.com/f?kz=567477212
[6] 再议瓦片地图(Tile Map) --
公众地图服务框架模式
http://www.cnblogs.com/charmdx/articles/813948.html
[7]
http://hiphotos.baidu.com/liongg/pic/item/ca077bec413535f22f2e219a.jpg
[8] 《信息服务平台策略、原理与应用研究》华东师范大学刘琳业硕士论文
[9] http://hiphotos.baidu.com/liongg/pic/item/f88bb901d342f520738da59b.jpg
[10]http://www.lesjones.com/posts/001733.shtml
Les Jones: HowGoogle Maps Works
[11]http://jgwebber.blogspot.com/2005/02/mapping-google.html
HOW GOOGLE MAPSWORK Posted by Charles Cook
[12] 《搜索引擎google、baidu数据存储方式》
http://nneverwei.javaeye.com
[13] 百度百科http://baike.baidu.com/view/733.htm?fr=ala0
[14] PhillipaGill,Martin Arlitt et al. 2007. YouTube Traffic
Characterization:A View From the Edge. Proceedings of the
7th ACM SIGCOMMconference on Internet measurement.
(San Diego, CA,USA, October 24-26, 2007). IMC’07.
ACM Press, NewYork, NY. 15 – 28.
DOI=http://doi.acm.org/10.1145/1298306.1298310
[15] F*Schneider, Sachin Agarwal, et al. 2008. The New
Web:Characterizing AJAX Traffic. Proceedings of the 9th
InternationalConference on Passive and Active Network
Measurement.PAM’08. Springer Berlin / Heidelberg. 4979:
31-40.
[16] Web 2.0Traffic Measurement – Analysis on Online Map Applications
Song LinTsinghua National Laboratory for IBM China Research Lab Tsinghua NationalLaboratory for
Ke XuInformation Science and Technology Beijing, China Information Science andTechnology
Zhiguo GaoDepartment of Computer Science Department of Computer Science
[17] 《AJAX:A New Approach to Web Applications》
Jesse James Garrett
[18][19] 《基于AJAX的Internet地图服务方法初探》
唐中实,朱贤泽,饶顺斌
清华大学土木project系3S中心
[20]
http://www.ibm.com/developerworks/cn/xml/x-mashups.html
Duane Merrill (duane@duanemerrill.com),
*作家, Freelance
[21]http://www.programmableweb.com/mashups Mashup Dashboard
[22] 《KML在Google+Earth开发中的应用》
十届海洋測绘综合性学术研讨会论文集
陈惠荣,李树军,郑义东
[23]《信息服务平台策略、原理与应用研究》华东师范大学刘琳业硕士论文