我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>行业知识

浅谈Google Earth 二次开发技术

文章来源:第三维度 作者: 发布时间:2012年03月12日 点击数: 字号:

    来源:第三维度
    作者:刘珍,刘建勋
    单位:湖南科技大学知识网格实验室

    摘要:从Google Earth Com API 的发布谈起,回顾Google Earth 的发展历史,介绍基于Google Earth 为平台的二次开发技术,提供把Google Earth 应用到现实生活中的思路。

    随着Google Earth Com API 和KML 文档的发布,越来越多的人被吸引到这个巨大开放性资源的开发工作中来。虽然,对于Google Earth 的二次开发工作开展的时间不长,但是它已经显示出旺盛的生命力和光明的发展前景。但是对于如何把Google Earth 应用到人们的现实生活中去,如何给人们的生活提供帮助还存在一定的问题。本文将向大家展示如何解决这些问题。

    1 Google Earth 简介

    2004 年10 月27 日,Google 公司宣布收购从事数字地图测绘的Keyhole 公司。Google Earth 来源于Keyhole(钥匙孔)公司自家原有的旗舰软件,并于2005 年6 月正式推出Google Earth 软件。2008 年5 月28 日正式发布了Google EarthComAPI 和Google EarthWeb Plugin。

    从Google Earth 问世的那天起,业内外就把目光聚集在它的身上,随着Google EarthAPI 的发布,越来越多的GIS 从业者和爱好者都投入到它的二次开发中。Google Earth上的全球地貌影像的有效分辨率至少为100 m,通常为30 m,视角海拔高度为15 km 左右(即宽度30 m 的物品在影像上就有一个像素点,再放大就是马赛克了),但针对大城市、著名风景区、建筑物区域提供分辨率为1 m 和0.6 m 左右的高精度影像,视角高度分別约为500m 和350m。目前提供高精度影像的城市多集中在北美和欧洲,其他地区往往是首都或极重要城市才提供。

    2 KML 简介

    KML 全称是Keyhole Markup Language。2008 年4月16 日, Google 将KML 开放了,使得它正式成为一种国际标准。用Google 的话来说,KML 成为了地理信息的国际标准,就像互联网上的HTML 标准一样。

    其实Google Earth 有两种地标文件格式,一种是KML,另一种是KMZ。KMZ 其实是一个经过ZIP 格式压缩过的KML 文件。KMZ 文件用ZIP 工具软件打开,然后解压缩即可得到原始KML 文件。当然,KMZ文件也有自己的好处,就是KMZ 文件的自身可以包含图片,这样就可以不依赖引用网络上的图片。

    KML 文件就是一种在Google 地图浏览器中用于交换地理数据的文件。它基于XML,并定义了一些TAG 用于规定地理数据的显示方式。KML 可用于定义的地理特征包括地点、描述、叠层、路径和多边形等。

    KML 的用途主要有:

    1)指定地点的图标和注记;

    2)为每一个地理特征创建不同的视角位置;

    3)在地球上叠放图像;

    4)指定地理特征显示的样式;

    5)编写地理特征的HTML 描述,包括超链接和内嵌图像;

    6)使用文件夹对地理特征进行群组;

    7)KML 文件的动态获取及修改;

    8)显示三维地物。

浅谈Google Earth 二次开发技术
图1 KML 架构图

    图1 描述了KML 文档的架构。值得注意的是,上图中抽象的内容(以斜体字显示和虚线方块图)是没有实际使用的KML 文件元素。它是把多个类似的(但不同的)或衍生的要素抽象出来。认清了这个面向对象的层次对我们学习KML 是一个很好的方法,因为我们可以很容易地看清KML 内部的有关内容。

    <PlaceMark>是一个建筑物或地点的相关特征,属性的一个集合,它是KML 文件的主要组成部分,它包含经纬度等。

    <NetworkLink>引用对本地或远程网络KML 文件或KMZ 档案。使用<Link>元素指定KML 文件的位置。还可以选择基于时间和照相机的变化,定时刷新和更新文件。NetworkLinks 可以用来提高处理地区性的非常大的数据集的效率。

    <Overlay>是由PhotoOverlay,ScreenOverlay 和GroundOverlay抽象出来,其中<PhotoOverlay>这个元素你可以找到一个地理的照片覆盖到Google Earth 上,覆盖的位置及面向可以由具体参数设置。

    <. ScreenOverlay>这个元素是把一个固定的图像叠加到屏幕上。如指南针,标志等,并负责后续显示。

    <. GroundOverlay>这一元素是把覆盖图像叠加到地形上。<icon>的子元素<href>指定的图像被用来作为覆盖。此文件可以是一个本地文件或网络图像,这是一个范围界定的地面覆盖。

    <Container>下包括<Folder>和<Document>, <Folder>是用来安排其他功能等级(文件夹,地标,网络连接或标注)。特征是可见的,只有它和所有的父节点是可见的。

    <Document >是一个集装箱的特点和风格。这个元素是如果您使用KML 文件是共享风格的。它是建议您使用共同的风格<Overlay>和<Container>这两个抽象出来的元素,我们又把它们还有<PlaceMark>和<NetworkLink>抽象出为KML 文件的<Feature>。

    <Geometry>也是一个抽象出来的元素,它包括<Point>,<LineString>,<LinearRing>,<Polygon>,<MultiGeometry>和<Model>。这几个是可以在Google Earth上显示出来的几何图形,如街道等,<Model>是可以在Google Earth中引用一个三维描述一个COLLADA文件。

    <BalloonStyle>定义Google Earth 的地标上气球的显示样式。

    <ListStyle>指定特征在列表中显示的样式。

    <Orientation>指定了物体在谷歌地球的旋转的三维模型的坐标系中的位置。

    <Location>指定坐标模型的纬度,经度和高度。经度和纬度测量标准以WGS84 基准。

    <Scale>调整图标的大小。

    <ColorStyle>是由<LineStyle>,<PolyStyle>,<IconStyle>和<LableStyle>抽象而来。它们分别表示在GoogleEarth 中线段,多边形,图标和标签显示出来的样式。

    <StyleSelector> 是由<Style> 和<StyleMap> 抽象而来。<StyleMap>中必须包含两个<Style>,它定义了两个不同样式的<Style>。而每个<Style>是定义了这个样式下IconStyle,LableStyle,LineStyle 和PoliStyle。

    <TimePrimitive>是由<TimeSpan>和<TimeStamp>抽象而来。<TimeStamp>代表一个单一的时刻。这是一个简单的元素,不包含任何儿童。其值是一个日期时间。

    时间戳的精度取决于<when>的值。<TimeSpan>是设定动画播放开始和结束的时间。

    Google Earth 和KML的关系:实际上可以把GoogleEarth 看作是一个浏览器,被浏览的数据是KML,KML所描述的是三维的数据结构,可以认为KML 是基于XML 的一种三维矢量图形标准。

    3 Google Earth 二次开发简介

    3.1 Google Earth 开发方式

    针对Google Earth 的开发有两种方式。

    1)基于Google Earth com API 的开发。基于ComAPI 的开发方式主要用来控制GE 的视角、实现动画效果。第三方应用程序可以使用Google Earth com API 对Google Earth 进行信息搜寻和发布命令。如:通过使用IApplicationGE,第三方应用程序可以查询当前的视图,控制三维角度,使用KML 的功能等。

    Google Earth com API 中主要类的用途:

    IApplicationGE 是主要进入到Google Earth 的类。其成员函数GetCamera () 返回Google Earth 当前相机视角。SetCamra () 以参数指定的速度飞到参数指定的相机视角。OpenKmlFile () 和LoadKmlData () 分别是加载一个KML 文件和一个KML 数据流。GetFeatureBy-Name () 获取参数指定的Name 的特征值。

    IFeatureGe 这是一个KML基本特征的代表性的类。IAnimationContorllerGe 是一个对Google Earth 动画的控制类。

    ICameraInfoGE 是一个Google Earth 相机视角信息聚焦的类。

    2)基于KML 的开发。基于KML 的开发方式主要用来生成地理要素,实现数据的动态更新等。基于KML 的开发主要是程序员编写KML 文件对GoogleEarth 进行操作。

    3.2 二次开发存在的主要问题与瓶颈

    Google Earth 由于是一个开放性的平台,所以它还存在很多问题。就目前而言,Google Earth 二次开发存在的主要问题与瓶颈在于,信息更新不够及时,GoogleEarth 上面的影像信息有的地方最近更新还是2002 年。所以很多二次开发有一定的区域性。

    4 应用案例

    现在就本人已做的湖南科技大学南校区的路线查询系统来简要介绍Google Earth 二次开发应用。首先,做好开发前的准备工作,确定主要线路,由于本系统采用MYSQL 数据库,在数据库中建立三个表:Language(站点名字的中英文转换表),Path(路线表)和Relation(路线间的关系表)。在Google Earth客户端上按照数据库中的Path 表建立线路图。建立一个个单独的KML 文件,再把所有的KML 文件放入到一个KML 文件中。

    接下来开始对线路查询编程。根据起始点是否交点分为四种情况:同为交点站点、起始点是交点而终点不是交点站点、起始点不是交点而终点是交点站点和同时不为交点站点。它们同时又分为两种情况:起始点与终点站点在同一线路上和不在同一线路上。根据这几种情况最终得出几种路线方案。

    最后把已经查询出的线路显示到Google Earth客户端上。使用GetFeatureByName()函数从KML 文件中读取与方案路线上相对应的KML文件,并显示到GoogleEarth 中,如图2 所示。

浅谈Google Earth 二次开发技术
图2 系统运行截图

    5 结语

    二次开发实际上就是在一些大公司开发的一个大型的软件系统平台上,根据需求不同而做出的针对性开发。Google Earth 二次开发就是在Google Earth 这个开放性的平台上,做出针对不同需求的高效的应用。通过Java,C#等高级编程语言的强大开发能力,对GoogleEarth 进行二次开发,把Google Earth 推向各行各业的从业者,社会生活中的各色人群。对于信息更新迅速,资讯快捷发达的现今社会,Google Earth 二次开发及其应用的出现将具有重大的研究与应用意义。

    第一作者简介:刘珍,硕士生,研究方向为地理信息系统与信息系统集成

    参考文献

    [1] 江宽,龚小鹏.程序天下Google API 开发详解:Google Maps与Google Earth 双剑合璧[M].北京:电子工业出版社,2008

    [2] 高永祥,尹显明. 应用PRO/E二次开发技术建立共享信息平台的研究[DB/OL]. http://211.67.223.4/kns50/detail.aspx?QueryID=17&CurRec=4,2008-7-21

    [3] 陈敦根,蒋浩宇,范跃祖. 嵌入式GIS 软件ArcPad 的二次开发技术[DB/OL]. http://211.67.223.4/kns50/detail.aspx? QueryID=17&CurRec=9,2008-7-21

    [4] 孙晓生,苗前军,丁明柱. 基于Web Service 的空间信息服务技术探讨[DB/OL]. http://211.67.223.4/kns50/detail.aspx? filename=CHKD2004S1036&dbname=CJFD2004,2008-9-16

    [5] 张骏,徐波丰. 基于Struts 的通用Web 信息系统集成设计[DB/OL]. http://211.67.223.4/kns50/detail.aspx? QueryID=610&CurRec=27,2008-6-17
   

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料