gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:12117回复:38

[转帖]利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

楼主#
更多 发布于:2004-10-28 16:31
<P  align=left>此过程说明适合那些使用<FONT face="Times New Roman">.NET</FONT>建立和部署应用的开发者,它描述了使用<FONT face="Times New Roman">ArcGIS</FONT>控件建立和部署应用的方法和步骤。</P>
<P  align=left>你可以在下面的目录下找到相应的样例程序:</P>
<P  align=left><FONT face="Times New Roman"><</FONT>安装目录<FONT face="Times New Roman">>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer</FONT></P>
<P  align=left><B >注:</B><I ><FONT face="Times New Roman">ArcGIS</FONT></I><I >样例程序不包含在<FONT face="Times New Roman">ArcGIS Engine</FONT></I><I >开发工具包“典型”安装方式中。如果你没有安装它们,则可以重新运行开发工具包安装向导,选择“定制”或“修改”方式,并选择软件开发包下的样例项进行安装。</I></P>
<H3 ><FONT size=5><FONT face="Times New Roman">一、</FONT>项目描述</FONT></H3>
<P >利用视窗控件建立应用程序的目标是演示并使你熟悉在微软<FONT face="Times New Roman">Visual Studio .NET API</FONT>中使用标准<FONT face="Times New Roman">ArcGIS</FONT>控件开发和部署<FONT face="Times New Roman">GIS</FONT>应用所需的步聚。本节中使用了<FONT face="Times New Roman">Visual Studio .NET</FONT>开发环境中的<FONT face="Times New Roman">MapControl</FONT>、<FONT face="Times New Roman"> PageLayoutControl</FONT>、<FONT face="Times New Roman">TOCControl</FONT>和<FONT face="Times New Roman">ToolbarControl</FONT>等视窗控件。<FONT face="Times New Roman">COM</FONT>、<FONT face="Times New Roman">Java</FONT>和<FONT face="Times New Roman">C++</FONT>程序员应该参考如下章节:<I ><a href="http://www.863s.com/list.asp?Unid=135#_利用ActiveX建立应用程序" target="_blank" >利用<FONT face="Times New Roman">ActiveX</FONT>建立应用程序</A></I><I >、<a href="http://www.863s.com/list.asp?Unid=135#_利用可视化JavaBeans建立应用程序" target="_blank" >利用可视化<FONT face="Times New Roman">JavaBeans</FONT>建立应用程序</A></I><I >、<a href="http://www.863s.com/list.asp?Unid=135#_建立命令行方式的Java应用" target="_blank" >建立命令行方式的<FONT face="Times New Roman">Java</FONT>应用</A></I><I >和<a href="http://www.863s.com/list.asp?Unid=135#_建立命令行方式的C++应用" target="_blank" >建立命令行方式的<FONT face="Times New Roman">C++</FONT>应用</A></I>。</P>
<P >本节演示了创建查看<FONT face="Times New Roman">ArcMap</FONT>和<FONT face="Times New Roman">ArcGIS</FONT>桌面应用图形文档的<FONT face="Times New Roman">GIS</FONT>应用程序的步骤。此节包含了以下技术:</P>
<P >l    在微软<FONT face="Times New Roman">Visual Studio .NET</FONT>中加载和嵌入<FONT face="Times New Roman">ArcGIS</FONT>控件。</P>
<P >l    向<FONT face="Times New Roman">PageLayoutControl</FONT>和<FONT face="Times New Roman">MapControl</FONT>中加载图形文档。</P>
<P >l    设置<FONT face="Times New Roman">ToolbarControl</FONT>和<FONT face="Times New Roman">TOCControl</FONT>的绑定控件。</P>
<P >l    处理窗口缩放。</P>
<P >l    向<FONT face="Times New Roman">ToolbarControl</FONT>添加<FONT face="Times New Roman">ArcGIS Engine</FONT>命令和工具。</P>
<P >l    创建弹出式菜单</P>
<P >l    在<FONT face="Times New Roman">TOCControl</FONT>中管理标签编辑</P>
<P >l    在<FONT face="Times New Roman">MapControl</FONT>中绘制图形。</P>
<P >l    为<FONT face="Times New Roman">MapControl</FONT>、<FONT face="Times New Roman">PageLayoutControl</FONT>和<FONT face="Times New Roman">ToolbarControl</FONT>创建定制工具。</P>
<P >l    用户化<FONT face="Times New Roman">ToolbarControl</FONT>。</P>
<P >l    在<FONT face="Times New Roman">Windows</FONT>操作系统中部署应用。</P>
<H3 ><FONT face="Times New Roman">二、</FONT>概述<p></p></H3>
<P >本方案使用微软<FONT face="Times New Roman">Visual Studio .NET</FONT>开发环境加以实现,并使用了<FONT face="Times New Roman">ESRI interop</FONT>程序集<FONT face="Times New Roman">(Interop Assemblies)</FONT>,它服务于被放置在<FONT face="Times New Roman">.NET</FONT>窗体上的、位于<FONT face="Times New Roman">.NET </FONT>窗体控件<FONT face="Times New Roman">(.NET Windows Controls)</FONT>中的<FONT face="Times New Roman">ArcGIS</FONT>控件,这些程序集在托管的<FONT face="Times New Roman">.NET</FONT>代码和非托管的<FONT face="Times New Roman">COM</FONT>代码之间起了桥梁作用。对<FONT face="Times New Roman">COM ArcGIS</FONT>控件<FONT face="Times New Roman">(COM ArcGIS Controls)</FONT>成员的引用都要经过<FONT face="Times New Roman">Interop</FONT>程序集,然后到达实际的<FONT face="Times New Roman">COM</FONT>对象。同样,也从<FONT face="Times New Roman">COM</FONT>对象经过<FONT face="Times New Roman">Interop</FONT>程序集到达<FONT face="Times New Roman">.NET</FONT>应用程序。每个<FONT face="Times New Roman">ArcGIS Engine</FONT>控件具有方法、属性与事件,它们能够被控件嵌入的容器<FONT face="Times New Roman">(</FONT>如,<FONT face="Times New Roman">.NET</FONT>窗体<FONT face="Times New Roman">)</FONT>访问。每个控件对象及其功能可以与其他<FONT face="Times New Roman">ESRI ArcObjects</FONT>和自定义控件组合使用,创建用户化的客户应用程序。</P>
<P >此方案是使用了<FONT face="Times New Roman">C#</FONT>和<FONT face="Times New Roman">Visual Basic .NET</FONT>两种语言创建,但以下技术实现集中倾向于<FONT face="Times New Roman">C#</FONT>方案。许多开发者可能会感觉用<FONT face="Times New Roman">Visual Basic .NET</FONT>更舒服,那是因为他们已经比较熟悉<FONT face="Times New Roman">Visual Basic 6.0</FONT>代码,然而,对于<FONT face="Times New Roman">Java</FONT>和<FONT face="Times New Roman">C++</FONT>程序员来说,他们将会觉得对<FONT face="Times New Roman">C#</FONT>程序语言的语法更熟悉。无论你使用哪种开发环境,对于使用<FONT face="Times New Roman">ArcGIS</FONT>控件的好坏既依赖于你的编程环境技术,也依赖于你所掌握的<FONT face="Times New Roman">ArcObjects</FONT>技术。</P>
<P >在本方案中,使用<FONT face="Times New Roman">ToolbarControl</FONT>、<FONT face="Times New Roman">TOCControl</FONT>、<FONT face="Times New Roman">PageLayoutControl</FONT>和<FONT face="Times New Roman">MapControl</FONT>来为应用程序提供用户界面。这些<FONT face="Times New Roman">ArcGIS</FONT>控件与其他<FONT face="Times New Roman">ArcObjects</FONT>和<FONT face="Times New Roman">ArcGIS Engine</FONT>命令被开发者一起使用,用来创建一个<FONT face="Times New Roman">GIS</FONT>视窗应用。</P>
<H3 ><FONT face="Times New Roman">三、</FONT>设计<p></p></H3>
<P >此方案在设计时,首先强调了<FONT face="Times New Roman">ArcGIS </FONT>控件如何互相之间进行交互,其次,向开发者解释说明了<FONT face="Times New Roman">ArcGIS </FONT>控件对象模型的一部分。</P>
<P >每个<FONT face="Times New Roman">.NET ArcGIS Engine</FONT>控件包含有一套能够被嵌入其内的窗口即时访问的属性页。这些属性些为控件属性和方法的选择提供了捷径,并且允许开发者不写任何代码即可创建一个应用程序。本方案并没有使用属性页,而是采用写代码的方式建立应用程序。关于属性页的更进一步的信息,请参考<I ><FONT face="Times New Roman">ArcGIS</FONT></I><I >开发帮助<FONT face="Times New Roman">(ArcGIS Developer Help)</FONT></I>。</P>
<H3 ><FONT face="Times New Roman">四、</FONT>条件需求<p></p></H3>
<P >要顺利地完成以下方案,你需要以下条件(对于部署的需求将在后续的部署章节涉及到):</P>
<P >l       安装具有授权文件的<FONT face="Times New Roman">ArcGIS Engine</FONT>开发工具包<FONT face="Times New Roman">(Developer Kit)</FONT>,使之能够用于开发。</P>
<P >l       安装有微软<FONT face="Times New Roman">Visual Studio .NET 2003</FONT>开发环境和微软<FONT face="Times New Roman">.NET Framework 1.1</FONT>及其相应协议。</P>
<P >l       熟悉微软<FONT face="Times New Roman">Windows</FONT>操作系统和<FONT face="Times New Roman">Microsoft Visual Studio .NET</FONT>的工作知识,会用<FONT face="Times New Roman">C#</FONT>或<FONT face="Times New Roman">Visual Basic .NET</FONT>编程语言。当然,此方案中提供了一些如何在<FONT face="Times New Roman">Microsoft Visual Studio .NET</FONT>中使用<FONT face="Times New Roman">ArcGIS</FONT>控件的信息,但它不能替代对开发环境的培训。</P>
<P >l       不需要对<FONT face="Times New Roman">ESRI</FONT>其它软件有足够的经验,但如果以前对<FONT face="Times New Roman">ArcObjects</FONT>有所接触并对<FONT face="Times New Roman">ArcGIS</FONT>应用<FONT face="Times New Roman">(</FONT>如,<FONT face="Times New Roman">ArcCatalog</FONT>,<FONT face="Times New Roman">ArcMap)</FONT>有一个基本了解,则对于开发更有利。</P>
<P >l       访问来自本方案的样例数据和代码,它位于:</P>
<P  align=left><FONT face="Times New Roman"><</FONT>安装目录<FONT face="Times New Roman">>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer</FONT></P>
<P  align=left>本方案中使用到的控件和库如下:</P>
<TABLE  cellSpacing=0 cellPadding=0 width=597 border=0>

<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">AxMapControl</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">AxTOCControl</FONT></P></TD></TR>
<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">AxPageLayoutControl</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">AxToolbarControl</FONT></P></TD></TR>
<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">ESRI.ArcGIS.Carto</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">ESRI.ArcGIS.System</FONT></P></TD></TR>
<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">ESRI.ArcGIS.Display</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">ESRI.ArcGIS.SystemUI</FONT></P></TD></TR>
<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">ESRI.ArcGIS.Geometry</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">ESRI.ArcGIS.Utility</FONT></P></TD></TR>
<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">esriMapControl</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">esriTOCControl</FONT></P></TD></TR>
<TR >
<TD  width=298>
<P >l       <FONT face="Times New Roman">esriPageLayoutControl</FONT></P></TD>
<TD  width=298>
<P >l       <FONT face="Times New Roman">esriToolbarControl</FONT></P></TD></TR></TABLE>
喜欢0 评分0
zhangchen8428
路人甲
路人甲
  • 注册日期2005-02-23
  • 发帖数3
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-09-23 10:59
真的很有用的,谢谢楼主<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
garu_2005
路人甲
路人甲
  • 注册日期2007-12-26
  • 发帖数3
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-08-14 11:10
<P>谢谢 收藏了、</P>
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
zjgood
路人甲
路人甲
  • 注册日期2005-10-09
  • 发帖数16
  • QQ
  • 铜币190枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2008-05-03 22:43
翻译的不错啊
举报 回复(0) 喜欢(0)     评分
英雄之Jan
路人甲
路人甲
  • 注册日期2008-04-23
  • 发帖数3
  • QQ
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2008-05-01 15:03
<P>对我帮助非常大,让我完成毕业设计的界面和基本功能。现在有一个问题,就是怎样在地图上点击要素显示它的全部信息呢?</P>
<P>要素里面已经存了信息,比如:道路:id,name,start,endd,……怎么读出来?</P>
<P>望楼主现身,赐教赐教,不胜感激………………</P>
举报 回复(0) 喜欢(0)     评分
cjtest
路人甲
路人甲
  • 注册日期2006-04-27
  • 发帖数42
  • QQ10807299
  • 铜币233枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-12-21 16:34
好东西!
QQ: 6226672 Email: 6226672@qq.com
举报 回复(0) 喜欢(0)     评分
wjb5711
路人甲
路人甲
  • 注册日期2004-12-16
  • 发帖数1
  • QQ
  • 铜币112枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2006-10-24 16:27
有点用处,顶了
举报 回复(0) 喜欢(0)     评分
lmzcugb
路人甲
路人甲
  • 注册日期2004-06-13
  • 发帖数4
  • QQ
  • 铜币153枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2006-08-05 09:50
挺好
举报 回复(0) 喜欢(0)     评分
airhe7
路人甲
路人甲
  • 注册日期2005-01-12
  • 发帖数9
  • QQ
  • 铜币139枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2006-07-19 14:00
// 使用相对路径向PageLayoutControl加载一个图形文档
<br>
<p>
<P align=left none? mso-layout-grid-align: left;>        string filename = @"..\..\..\..\..\..\..\..\Data\\ArcGIS_Engine_Developer_Guide\\gulf of st. lawrence.mxd";
<p>
<p>
<P align=left none? mso-layout-grid-align: left;>        if ( axPageLayoutControl1.CheckMxFile(filename) )
<p>
<p>
<P align=left none? mso-layout-grid-align: left;>        {
<p>
<p>
<P align=left none? mso-layout-grid-align: left;>            axPageLayoutControl1.LoadMxFile(filename, "");
<p>
<p>
<P align=left none? mso-layout-grid-align: left;>        }</P>
<P align=left none? mso-layout-grid-align: left;> </P>
<P align=left none? mso-layout-grid-align: left;>为什么这里的相对路径这样设置的,怎么理解?</P>
<P align=left none? mso-layout-grid-align: left;>我用这个代码没有图形加载啊,怎么回事</P>
举报 回复(0) 喜欢(0)     评分
chenjinbo
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数26
  • QQ
  • 铜币195枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2006-07-19 11:05
回复:(gis)[转帖]利用ArcGIS Engine、VS .NET和Win...
ssdasdas<img src="images/post/smile/dvbbs/em05.gif" />fdssd<img src="images/post/smile/dvbbs/em06.gif" />sdf<img src="images/post/smile/dvbbs/em07.gif" />sdf<img src="images/post/smile/dvbbs/em08.gif" />sdf<img src="images/post/smile/dvbbs/em09.gif" />sdf
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部