GoogleEarth二次开发(资料一)

上传人:e****s 文档编号:1348002 上传时间:2017-06-08 格式:DOCX 页数:6 大小:25.44KB
返回 下载 相关 举报
GoogleEarth二次开发(资料一)_第1页
第1页 / 共6页
GoogleEarth二次开发(资料一)_第2页
第2页 / 共6页
GoogleEarth二次开发(资料一)_第3页
第3页 / 共6页
GoogleEarth二次开发(资料一)_第4页
第4页 / 共6页
GoogleEarth二次开发(资料一)_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《GoogleEarth二次开发(资料一)》由会员分享,可在线阅读,更多相关《GoogleEarth二次开发(资料一)(6页珍藏版)》请在金锄头文库上搜索。

1、GoogleEarth 二次开发难点和技巧一、 基本步骤1、安装 GoogleEarth 程序2、对 GoogleEarth activex 控件进行注册(googleearth.exe /regserver)3、在开发环境中引用 googleearth activex二、 开发方式针对 GE 的开发有两种方式,一种是基于 GE 的 com API,一种是基于 KML。基于 Com API 的开发方式主要用来控制 GE 的视角、实现动画效果,而基于 KML 的开发方式主要用来生成地理要素,实现数据的动态更新等。在实际应用中,需要结合这两种开发方式,这样才能得到比较理想的效果。1、 基于 Com

2、API 的开发GE 公布的 API 目前是 1.0a 版,数量比较少,所能实现的功能也不多,在实际开发中主要用来加载 KML 数据、控制视角和实现动画播放。A、 加载 KML 数据IApplicationGE. OpenKmlFile(kmlFilePath),加载指定的 kml 文件到 GE 中;IApplicationGE.LoadKmlData(kmlData),加载 kml 文本流到 GE 中B、 控制视角IApplicationGE. SetCamera(ICameraInfoGE ,double ),设置 GE 当前的视角,第一个参数为视角参数,第二个参数为当前视角飞到这个视角的速

3、度(取值范围为 0-5);IApplicationGE .SetFeatureView(IFeatureGE,double),从当前视角飞到指定要素处的视角,第一个参数为指定的要素,这个要素的视角由 KML 中的 标签来决定,第二个参数为飞行速度(取值范围为 05)。C、 动画效果GE 中实现动画效果有两种方法,第一种是通过 KML 中的标签来实现,这个标签内部放置的是每一帧所代表的视图,第二种方式是通过 API 来实现某个父要素下的所有子要素的视图的轮流切换。ITimeIntervalGE.Play() 开始播放 标签中的帧ITourControllerGE. PlayOrPause ()

4、播放某个父要素下的子要素,或暂停播放2、 基于 KML 的开发GE 实际上就是一个浏览器,被浏览的数据是 KML,KML 和 GML、SVG 等表示矢量图形的标准类似,不过他所描述的是三维的数据结构,可以认为 KML 是基于 XML 的一种三维矢量图形标准。KML 的结构组成可以参考(http:/ 描述地物的方式和通用的 GIS 相类似,主要由要素、样式、视角、动画等部分组成。下面我说明 KML 中几个比较有难度的技术。A、 LOD 技术LOD(Level Of Detail)地图分级加载技术,利用 LOD 技术可以在 PC 机上浏览海量的影像地图数据。有 GIS 平台使用经验的都知道,我们可

5、以设置某个图层在某个比例尺范围之内显示,小于或者超过这个范围则不显示。LOD 技术非常类似,比如说,在视角高度很大的时候,我只加载 1:5000W 的影像数据,在视角高度很小的时候,我只加载1:1000 的数据,这样的话,视角高度越低,我们所能看到的地物越详细。在 KML 中用来实现 LOD 技术的是标签,这个标签定义了在什么范围内,在什么像素级别范围内显示某个要素。B、动态数据更新技术在 GPS 车辆监控系统中,需要对实时数据进行更新。利用 KML 中的 和标签可以实现数据的实时更新。将 refreshMode 设置为 onInterval 模式,并在中设置间隔时间,那么GE 将间隔指定的时

6、间来刷新一下标签中的链接地址,这个链接地址可以是本地磁盘上的一个文件,也可以是一个网络链接。(可以参照 gpsrealtime.kml 来理解)C、 动画播放技术KML 中的或者标签是用来控制动画播放的,或都必须包含在在一个要素标签内,表示的是在某个时间点上,GE 的视图转到当前要素标签所规定的视图上,并完成相应的动作。因此每一个包含时间戳标签的要素标签都表示动画过程中的一帧。(可以参照 trackreplay.kml 来理解)D、 三维建模技术KML 中的几何对象都包含三个属性:longitude、latitude、altitude,利用基本的几何图形(如点、线、面),加上高程数据,我们可以

7、构建一些简单的三维图形。如果需要构建复杂的三维模型,可以借助三维建模工具,如 3D max,google sketch,AutoCAD,然后将得到的三维模型转成 dae 格式即可,这样就可以直接在 GE 中调用这些三维模型了(利用标签来引用模型文件的位置)三、几个技巧 1、如何将 GE 的地图控件引用到自定义的窗体中? 在一般情况下,我们针对 GE 的开发都只能基于 GE 程序本身来进行,所有的操作都必须在 GE 本身的框架上进行,不能将 GE 的地图控件像一般可拖放的控件来操作。怎么解决这个问题呢,这里要用到一下 Win API,将 GE中的地图部分 hook 过来。this._GEMain

8、Handler = (IntPtr)this._googleEarth.GetMainHwnd();/获取 GE 程序的句柄SetWindowPos(int)this._GEMainHandler, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE + SWP_HIDEWINDOW);/将 GE 窗体移到屏幕可视范围之外,使之不可见this._GEHrender = (IntPtr)_googleEarth.GetRenderHwnd();/获取 GE 的地图控件的句柄this._GEParentHrender = GetParent(this._GEHrender);/

9、获取 GE 地图控件的父控件的句柄PostMessage(int)this._GEParentHrender, WM_HIDE, 0, 0);/发送消息到地图控件的父控件,使之不可见SetParent(this._GEHrender, customControl.Handle);/将 GE 地图控件的父控件设置为我们指定的控件使用上面的代码,我们就可以将 GE 中的地图控件抢夺到我们自己的 winform 中。(参考 utilitiesGEHandler.cs)2、如何为 GE 提供动态数据?为 GE 提供动态数据,需要用到上面介绍的 KML 动态数据更新技术。在这里提供一个比较好的解决方案,

10、架构动态数据提供服务器。这有点类似于 B/S 架构,browser 就是 GE,Server 就是我们要架设的服务器, Server 提供的是动态的符合 KML 规范的数据,GE 间隔一定时间去服务器上获取一下数据。3、 如何得到 GE 中的指定要素?当我们需要对某个要素进行操作时,首先必须得到这个要素。当 KML 文件被加载进入 GE 中后,这个文件也被当作一个要素看待,文件中的这个几何图形、图片、链接等都被当成这个要素的子要素看待。在 GE 中获取某个要素只有两个途径:通过要素名称和通过要素的链接地址GetFeatureByName(name )通过要素名称来得到要素GetFeatureB

11、yHref(href)通过链接地址来得到要素(得到的是从链接地址中代表的内容) 一、 基本步骤1、安装 GoogleEarth 程序2、对 GoogleEarth activex 控件进行注册( googleearth.exe /regserver)3、在开发环境中引用 googleearth activex二、 开发方式针对 GE 的开发有两种方式,一种是基于 GE 的 com API,一种是基于 KML。基于 Com API 的开发方式主要用来控制 GE 的视角、实现动画效果,而基于 KML 的开发方式主要用来生成地理要素,实现数据的动态更新等。在实际应用中,需要结合这两种开发方式,这样才

12、能得到比较理想的效果。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 当前的视角,第一个参数为视角参

13、数,第二个参数为当前视角飞到这个视角的速度(取值范围为 0-5);IApplicationGE .SetFeatureView(IFeatureGE,double),从当前视角飞到指定要素处的视角,第一个参数为指定的要素,这个要素的视角由 KML 中的标签来决定,第二个参数为飞行速度(取值范围为 05)。C、 动画效果GE 中实现动画效果有两种方法,第一种是通过 KML 中的标签来实现,这个标签内部放置的是每一帧所代表的视图,第二种方式是通过 API 来实现某个父要素下的所有子要素的视图的轮流切换。ITimeIntervalGE.Play() 开始播放 标签中的帧ITourController

14、GE. PlayOrPause () 播放某个父要素下的子要素,或暂停播放2、 基于 KML 的开发GE 实际上就是一个浏览器,被浏览的数据是 KML,KML 和 GML、SVG 等表示矢量图形的标准类似,不过他所描述的是三维的数据结构,可以认为 KML 是基于 XML 的一种三维矢量图形标准。KML 的结构组成可以参考(http:/ 描述地物的方式和通用的 GIS 相类似,主要由要素、样式、视角、动画等部分组成。下面我说明 KML 中几个比较有难度的技术。A、 LOD 技术LOD(Level Of Detail)地图分级加载技术,利用 LOD 技术可以在 PC 机上浏览海量的影像地图数据。有

15、 GIS 平台使用经验的都知道,我们可以设置某个图层在某个比例尺范围之内显示,小于或者超过这个范围则不显示。LOD 技术非常类似,比如说,在视角高度很大的时候,我只加载 1:5000W 的影像数据,在视角高度很小的时候,我只加载 1:1000 的数据,这样的话,视角高度越低,我们所能看到的地物越详细。在 KML 中用来实现 LOD 技术的是标签,这个标签定义了在什么范围内,在什么像素级别范围内显示某个要素。B、动态数据更新技术在 GPS 车辆监控系统中,需要对实时数据进行更新。利用 KML 中的和标签可以实现数据的实时更新。将 refreshMode 设置为 onInterval 模式,并在中设置间隔时间,那么 GE 将间隔指定的时间来刷新一下 标签中的链接地址,这个链接地址可以是本地磁盘上的一个文件,也可以是一个网络链接。(可以参照 gpsrealtime.kml 来理解)C、 动画播放技术KML 中的或者标签是用来控制动画播放的,或都必须包含在在一个要素标签内,表示的是在某个时间点上,GE 的视图转到当前要素标签所规定的视图上,并完成相应的动作。因此每一个包含时间戳标签的要素标签都表示动画过程中的一帧。(可以参照 trackreplay.kml 来理解)D、 三维建模技术KML 中的几何对象都包含三个属性: longitu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 物业管理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号