
GoogleEarth二次开发难点和技巧.docx
3页一、 基本步骤 1、安装 GoogleEarth 程序 2、对 GoogleEarth activex 控件进行注册( googleearth.exe /regserver) 3、在开发环境中引用 googleearth activex 二、 开发方式 针对 GE 的开发有两种方式,一种是基于 GE 的 com API,一种是基于 KML基于 Com API 的开发方式主要用来控制 GE 的视角、实现动 画效果,而基于 KML 的开发方式主要用来生成地理要素,实现数据的动态更新等在实际应用中,需要结合这两种开发方式,这样才能得到比较理想的效果 1、 基于 ComAPI 的开发 GE 公布的 API 目前是 1.0a 版,数量比较少,所能实现的功能也不多,在实际开发中主要用来加载 KML 数据、控制视角和实现动画播放 A、 加载 KML 数据 IApplicationGE. OpenKmlFile(kmlFilePath),加载指定的 kml 文件到 GE 中; IApplicationGE.LoadKmlData(kmlData),加载 kml 文本流到 GE 中 B、 控制视角 IApplicationGE. SetCamera(ICameraInfoGE ,double ),设置 GE 当前的视角,第一个参数为视角参数,第二个参数为当前视角飞到这个视角的速度(取值范围为 0--5); IApplicationGE .SetFeatureView(IFeatureGE,double),从当前视角飞到指定要素处的视角,第一 个参数为指定的要素,这个要素的视角由 KML 中的标签来决定,第二个参数为飞行速度(取值范围为 0—5)。
C、 动画效果 GE 中实现动画效果有两种方法,第一种是通过 KML 中的标签来实现,这个标签内部放置的是每一帧所代表的视图,第二种方式是通过 API 来实现某个父要素下的所有子要素的视图的轮流切换 ITimeIntervalGE.Play() 开始播放标签中的帧 ITourControllerGE. PlayOrPause () 播放某个父要素下的子要素,或暂停播放 2、 基于 KML 的开发 GE 实际上就是一个浏览器,被浏览的数据是 KML,KML 和 GML、SVG 等表示矢量图形的标准类似,不过他所描述的是三维的数据结构,可以认为 KML 是基于 XML 的一种三维矢量图形标准 KML 的结构组成可以参考( 描述地物的方式和通用的 GIS 相类似,主要由要素、样式、视角、动画等部分组成下面我说明 KML 中几个比较有难度的技术 A、 LOD 技术 LOD(Level Of Detail)地图分级加载技术,利用 LOD 技术可以在 PC 机上浏览海量的影像地图数据有 GIS 平台使用经验的都知 道,我们可以设置某个图层在某个比例尺范围之内显示,小于或者超过这个范围则不显示LOD 技术非常类似,比如说,在视角高度很大的时候,我只加载 1:5000W 的影像数据,在视角高度很小的时候,我只加载 1:1000 的数据,这样的话,视角高度越低,我们所能看到的地物越详细。
在 KML 中用来实现 LOD 技术的是 标签,这个标签定义了在什么范围内,在什么像素级别范围内显示某个要素 B、动态数据更新技术 在 GPS 车辆监控系统中,需要对实时数据进行更新利用 KML 中的 和标签可以实现数据的实时更新将 refreshMode 设置为 onInterval 模式,并 在中设置间隔时间,那么 GE 将间隔指定的时间来刷新一下 标签中的链接地址, 这个链接地址可以是本地磁盘上的一个文件,也可以是一个网络链接可以参照 gpsrealtime.kml 来理解) C、 动画播放技术 KML 中的或者标签是用来控制动画播放 的,或都必须包含在在一个要素标签内,表示的是在某个时间点上,GE 的视图 转到当前要素标签所规定的视图上,并完成相应的动作因此每一个包含时间戳标签的要素标签都表示动画过程中的一帧可以参照 trackreplay.kml 来理解) D、 三维建模技术 KML 中的几何对象都包含三个属性:longitude 、latitude、altitude,利用基本的几何图形(如点、线、面),加上高程数 据,我们可以构建一些简单的三维图形如果需要构建复杂的三维模型,可以借助三维建模工具,如 3D max,google sketch,AutoCAD,然后将得到的三维模型转成 dae 格式即可,这样就可以直接在 GE 中调用这些三维模型了(利 用
