基于ArcGIS的Web3D实现思路(一)

0
分享 2014-11-04
目前市场上对以Web上的3DGIS需求越来越强烈,但是ArcGIS的产品体系结构中并没有相关的技术产品。但是ArcGIS有强大空间分析能力,这是其他产品所不具备的优势。

基于这样的需求考虑,我在ArcGIS EngineSDK的基础上,封装了Globe控件,把Glboe控件打包成ActiveX控件,可以基本上解决在IE下浏览3DGIS的需求。

大家知道,在ArcGIS产品体系当中,曾经有一款ArcGIS Explorer 500开发过相关的产品,可以基于IE上做相关的3DGIS开发,但是由于某种原因,ESRI并没有推出过后续的产品。现在推出的ArcGIS Explorer 1500只可以做Add-in的开发定制。

综合以上的情况,在满足功能和浏览效果的基础上,我选择了使用ArcGIS Engine打包ActiveX的方式。下面将通过一个简单的例子,向大家介绍一下这种解决方式的实现步骤。



实现步骤

开发环境

操作系统:Windows XP SP3 软件环境:ArcGISDeskTop 9.3.1、ArcGIS Engine 9.3 Developer Kit 开发工具:Visual Stadio2008 Web容器:IIS 6.0

功能实现

1) 首先在Visual Stadio中创建一个Windows控件工程。

2) 在UserControl1.cs窗体中添加相关控件(GlobeControl、LicenceControl)

3) 其实到了上面的步骤,一个简单的用户控件就完成了,那么要想把这个控件嵌入到IE中,就需要一些相关ActiveX的操作了。下面我们需要在工程的代码文件引用using System.Runtime.InteropServices。使用Guid生成功能生成一个Guid,或者通过代码生成。

[Guid("0521f488-96c3-4dd4-b9ff-ccc1fc3c13a7")]

那么这个Guid就是我们ArcGlobeControl的Guid,大家调试的时候无需更改。

我们在工程下的AssemblyInfo.cs文件中同样引用

using System.Runtime.InteropServices

在文件中添加

[assembly: AllowPartiallyTrustedCallers()]

4) 实现IobjectSafety接口。

这个步骤就比较重要,如果不实现这个接口的话,IE不能把我们制造的ActiveX控件默认为是安全的控件,无法再IE上正常运行。下面这段代码是网上找到的。大家可以借鉴一下。(由于空间原因,这段代码不在帖子里贴出来了,大家可以在网上找到)

5) 在程序中调用IobjectSafety接口。

publicpartialclassUserControl1 : UserControl, IobjectSafety

{

……

}

在ArcGlobeControl项目属性中,在生成选项卡上把“为COM互操作注册”选上。

6) 以上工作完成后,我们就可以先测试一下我们的ActiveX控件在本机是否可以运行。(注意,该步骤请使用纯HTML页面)。

<objectid=”demoActiveX”

classid=”clsid:0521f488-96c3-4dd4-b9ff-ccc1fc3c13a7″codebase=”setup.exe” Width=”500″Height=”400″>

</object>



文章来源:http://blog.csdn.net/sydbc/article/details/17378301

0 个评论

要回复文章请先登录注册