arcgis二次开发教程,cs方向,该从何...

ArcGIS Engine 二次开发:ArcGIS version not specified.
已有 1458 次阅读
|个人分类:|系统分类:|关键词:ArcGIS Engine,ArcGIS version not specified
今天将ArcGIS系列的软件从ArcGIS9.3.1升级到ArcGIS10,然后就使用VS创建一个简单的AE应用程序,然后拖放一个toolbar、LicenseControl以及MapControl控件。接着编译应用程序,编译成功。点击运行时,出现如下错误:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS components.问题解决方案:在program.cs中添加如下代码ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);(注意,这里的代码不是ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);一定要有OrDesktop)这里还需要添加一个Reference:ESRI.ArcGIS.Version(这步个人没做,不清楚什么意思)完整的参考代码如下所示:using Susing System.Collections.Gusing System.Windows.Fnamespace WindowsFormsApplication1{ & &static class Program & &{ & & & &/// &summary& & & & &/// The main entry point for the application. & & & &/// &/summary& & & & &[STAThread] & & & &static void Main() & & & &{ & & & & &
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); & & & & & &Application.EnableVisualStyles(); & & & & & &Application.SetCompatibleTextRenderingDefault(false); & & & & & &Application.Run(new Form1()); & & & &} & &}}
转载本文请联系原作者获取授权,同时请注明本文来自叶文菁科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &arcgis二次开发_百度知道ArcGIS Engine二次开发——基础篇-五星文库
免费文档下载
ArcGIS Engine二次开发——基础篇
导读:可以方便的开发出相关的Command按钮,这样有效的提高了我们进行功能开发的效率,这种方法比我们基于BaseCommand的开发方法更加简便,我们在此介绍的目的是为了让大家掌握这种基本的开发方法,方便用于其他Command功能的开发,在下一小节中我们将学习BaseTool的开发方法,1.5BaseTool开发实例,我们将学习基于BaseTool的自定义功能开发,我们这里需要在上一小节的基础上继
图 12类别选择向导
我们这个命令是用于MapControl控件的,所以在选择项中选择“ArcMap,MapControl or PageLayoutControl Command”或者“MapControl or PageLayoutControl Command”,这里我们选择后者,点击OK。
1.4.3 添加代码
双击解决方案资源管理器中的FixedZoomIn.cs项,进入该类的代码编写界面。首先按照前几节介绍过的方法,加入引用“ESRI.ArcGIS.Geometry”,并在该类的最上方添加如下代码:
using ESRI.ArcGIS.C
using ESRI.ArcGIS.G
将 base.m_caption、base.m_toolTip 更改为“居中放大”,将base.m_name 更改为“FixedZoomIn”。之后在OnClick()函数中添加如下代码:
public override void OnClick()
// TODO: Add FixedZoomIn.OnClick implementation
//获取当前视图范围
IActiveView pActiveView = m_hookHelper.ActiveV
IEnvelope pEnvelope = pActiveView.E
//扩大视图范围并刷新视图
pEnvelope.Expand(0.5, 0.5, true);
pActiveView.Extent = pE
pActiveView.Refresh();
转到主窗体(MapViewForm),双击“居中放大”按钮,进入该按钮Click事件相应函数,添加如下代码:
private void btnZoomIn_Click(object sender, EventArgs e)
//声明与初始化
FixedZoomIn fixedZoomin = new FixedZoomIn();
//与MapControl关联
fixedZoomin.OnCreate(this.axMapControl1.Object);
fixedZoomin.OnClick();
1.4.4 运行
运行程序,点击“居中放大”时,地图会放大一倍。点查询功能依然可用,如下图:
图 13程序运行结果
1.4.5 小结
在这一小节中,我们学习到了如何制作一个BaseCommand。使用BaseCommand的好处主要有,首先按照面向对象的思想,居中放大这个功能已经被封装在我们自己书写的类中,若是以后需要再将这个功能移植到别的程序,或者由多个程序员共同完成一个程序时,只需要将这个类复制到相关工程下,稍作调整即可运行;其次,这样做可以是代码更易读,而且当需要完成许多不同的功能时,这种方法的优势就体现出来了,因为我们不需要再单独设立一个MouseFlag变量来判断具体用户点击了哪个按钮,MapControl的OnMouseDown事件中也无需再添加冗长的代码,而是分散到各类中,增强了程序的稳定性。在新建FixedZoomIn类的同时,我们发现还会附带生成一个FixedZoomIn.bmp位图文件,您可以双击这个图标以
做相关编辑更改工作,也可以用自己的图标来替换(注意保持文件名一致)。这个图标的作用,是在使用ToolbarControl的时候,用于显示按钮图标的。您可以尝试着在工程中加入一根ToolbarControl,并使用AddItem方法添加我们写好的这个类,看能否得到一样的结果。
使用ArcEngine自带BaseCommand基类,可以方便的开发出相关的Command按钮,从这个实例我们可以看出,根据Command按钮随鼠标点击MapControl及时响应的特性,我们一般只需要重载BaseCommand 的OnClick()函数即可。然后在功能的实现处首先调用OnCreate()函数实现与MapControl的关联,调用OnClick()函数实现功能响应。这样有效的提高了我们进行功能开发的效率。
其实,对于一些基本的地图操作Command的功能,ArcEngine进行了完整的封装,我们在使用时可以直接使用ArcEngine的封装类进行实例化。仍以“固定比例尺放大”为例,我们可以在“居中放大”按钮的Click事件中直接使用ArcEngine的封装类实现(注意,在这个示例中需要添加“ESRI.ArcGIS.SystemUI”和“ESRI.ArcGIS.Controls”的引用),代码如下:
ICommand command = new ControlsMapZoomInFixedCommandClass();
command.OnCreate(this.axMapControl1.Object);
command.OnClick();
这种方法比我们基于BaseCommand的开发方法更加简便,我们在此介绍的目的是为了让大家掌握这种基本的开发方法,方便用于其他Command功能的开发。如果您对本小节的内容比较熟悉,也做了一些积极的尝试,那么您可以进入下一小节的学习。在下一小节中我们将学习BaseTool的开发方法。
1.5 BaseTool开发实例
经过上一小节的学习,我们了解到了如何自定义BaseCommand来拓展ArcGIS的应用。我们将学习基于BaseTool的自定义功能开发,BaseTool与BaseCommand有些相似的地方,它们都是点击之后可以对MapControl控件做相应的操作,但是BaseCommand点击之后MapControl会直接予以相应,不需要额外的操作,而对于BaseTool来说,点击该功能之后,只是开启一个交互的过程,需要用户再用鼠标、键盘等对地图做进一步交互式的操作,MapControl控件才会予以相应,如ArcMap中的放大ZoomIn、漫游Pan等。
为了实现BaseTool与BaseCommand功能实现的差异,在这一小节中,我们将剖析ArcMap的放大(ZoomIn)功能,并利用BaseTool进行实现。
1.5.1 打开工程
我们这里需要在上一小节的基础上继续完善,如果您已经将MapView关闭,请重新打开。在主窗体(MapViewForm)中添加一个Button,将其Name属性改为btnZoomIn,Text属性更改为“拉框放大”。
3.5.2 添加BaseTool
在菜单栏上选择“项目”——“添加类”,出现如下对话框:
图 14添加新项对话框
在类别中选中ArcGIS,在模板中选择BaseTool,并将名称更改为“ZoomIn”,点击添加,出现如下对话框:
图 38类别选择向导
我们这个工具是要用于MapControl,仍选择“MapControl or PageLayoutControl Command”,点击OK。
1.5.2 添加代码
双击解决方案资源管理器中的 ZoomIn.cs,进入该类的代码编写界面。
首先添加ESRI.ArcGIS.Carto、ESRI.ArcGIS.Geodatabase、ESRI.ArcGIS.Geometry、ESRI.ArcGIS..Display四个引用,类似的,将 base.m_caption、base.m_toolTip 更改为“拉框
包含总结汇报、办公文档、专业文献、旅游景点、IT计算机、教程攻略、资格考试、word文档、外语学习以及ArcGIS Engine二次开发——基础篇等内容。本文共15页
相关内容搜索

参考资料

 

随机推荐