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

目前市场上对以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窗体中添加相关控件(GlobeControlLicenceControl

 

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

 

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

 

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

 

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

 

using System.Runtime.InteropServices

 

在文件中添加

 

[assembly: AllowPartiallyTrustedCallers()]

 

4)    实现IobjectSafety接口。

 

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

 

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

 

publicpartialclassUserControl1 : UserControl, IobjectSafety

 

{

 

       ……

 

}

 

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

 

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

 

 

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

 

 

基于ArcGIS的Web3D实现思路(一)_第1张图片

 

 

你可能感兴趣的:(3D,GIS)