基于GoogleEarth二次开发的关键技术

基于GoogleEarth二次开发的关键技术摘要:在过去的几十年时间里GIS行业一直作为一种专业学科局限在狭窄的专业领域里默默发展,直到“谷歌地球”的出现才第一次让GIS服务走进公众。“谷歌地球”最大的颠覆性在于其是一个完全开放的、优秀的地图平台,不仅提供优异的地图数据而且其中数据还无须自己维护,同时向外提供了开发的API接口,能够基于API实现控制地图显示,操作地图要素等功能,因此开发人员在应用程序中加上自己的业务代码,完全可以构架一个满足日常需求的普通GIS系统。关键词:GoogleEarthKMLAPI二次开发:TP3文献标识码:A:1003-9082(2015)03-0005-01一、GoogleEarth二次开发技术GoogleEarth是Google公司开发的虚拟地球软件,其采用的3D技术将卫星影像推向一个新的水平。GoogleEarth提供的地图影像数据主要通过卫星或航空器获取。其卫星影像部分来自于美国DigitalGlobe公司的QuickBird(捷鸟)商业卫星影像与EarthSat公司(wwearthsat,美国公司)的LANDSAT-7卫星影像,航拍影像部分有BlueSky公司(wwbluesky-world,英国公司,以航拍、GIS/GPS相关业务为主)、Sanborn公司(wwborn,美国公司,以GIS、地理数据、空中勘测等业务为主)等。针对GoogleEarth的开发主要有两种方式,一种是基于GoogleEarth的COMAPI,一种是基于KML对象。基于COMAPI的开发方式主要用来控制GoogleEarth的视角、实现某一些特定的效果,而基于KML对象的开发方式主要用来生成地理要素,实现数据的动态更新等。在实际应用中,为得到相对较为理想的效果,需要结合以上两种开发方式。1.GoogleEarthComApi组件对象模型(ComponentObjectModel,COM)是由微软定义的接口标准,COM组件可以是WIN32动态链接库(DLL),也可以是以可执行文件形式发布的代码(EXE),其主要特点即可以动态加载。正如所有COM组件一样,GoogleEarth所提供的COM组件内部逻辑对于用户而言也是不可知的,但是可以通过调用其本身提供的接口来构建自己的程序。GoogleEarthCOMAPI是Google公司针对利用GoogleEarth进行开发的人员公布的一组接口,利用GoogleEarthCOMAPI在设计满足需求的外部应用软件时,可以很方便地查询视图、控制视角、加载KML要素等。GoogleEarth类库中主利用的主要有以下5个接口:IApplicationGE是GoogleEarthAPI开发中最为核心的一个接口,通过该接口可以控制GoogleEarth程序的开启、关闭、获取地图窗口的句柄、操作句柄等一系列复杂操作。ICameraInfoGE是GoogleEarth提供的照相机接口,即表示了GoogleEarth地图上某一点位置的照相机视角,同时可以获取并设置照相机的焦点位置、转角、仰角等参数。IFeatureGE是针对GoogleEarth要素对象操作的接口。GoogleEarth要素指的是加载的由KML描绘的地理要素。IViewExtentsGE描述了由经度和纬度确定的在GoogleEarth中的观察范围。IFeatureCollectionGE定义了要素的集合。内挂GoogleEarth地图窗口其实就是将GoogleEarth的三维卫星地图显示窗口挂接到定义好的Winform窗体中,以实现位置数据和GoogleEarth的一体化集成。针对GoogleEarth的二次开发是基于其程序本身进行的,不能够将GoogleEarth的地图控件如一般可以拖放的控件那样自由拖拽到自己定义的窗体上。因此需要将GoogleEarth的地图显示窗口嵌入到指定的Winform窗体程序中某个控件上去,并且将GoogleEarth的主窗体隐藏起来。其核心代码如下://获取GoogleEarthc窗体句柄Hwndthis._GEMainHandler=(IntPtr)this._GE.GetMainHwnd();//将GoogleEarth窗体属性值设为0,隐藏GE窗体栏SetWindowPos(this._GEMainHandler,NativeMethod.HWND_BOTTOM,0,0,0,0,NativeMethod.SWP_NOSIZE+NativeMethod.SWP_HIDEWINDOW);//获取GoogleEarth地图窗口控件句柄RenderHwndthis._GEHrender=(IntPtr)_GE.GetRenderHwnd();//获取GE地图控件的父窗体句柄this._GEParentHrender=NativeMethod.GetParent(this._GEHrender);//将GoogleEarth窗体的父窗体隐藏同时将GE地图控件的父窗体句柄为Winform上的控件PostMessage((int)this._GEParentHrender,NativeMethod.WM_HIDE,0,0);SetParent(this._GEHrender,paren...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?