基于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窗体中添加相关控件(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
基于这样的需求考虑,我在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 个评论
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- ArcGIS 知乎社区活动 之 字幕组加鸡腿暨KBP字幕组招新【获奖名单公布与优秀作品展示】
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- ArcGIS如何求栅格图像的“质心”
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?