http://www.cnblogs.com/maweifeng/archive/2006/07/19/455024.html  原文地址

ArcGIS Desktop开发的类型

○ 自定义ArcMap、ArcCatalog的布局和界面,包括增加自定义的按钮,指定相应的宏;

○ 使用VBA创建解决方案;

○ 创建ArcGIS扩展;

○ 创建独立的应用程序(后面单独说明)。


应用程序的插件架构

对于ArcGIS Desktop的开发,最关键的核心问题在于理解ArcGIS插件架构的运行机制,下面我们就对这个问题做一简单介绍。插件架构的核心在于应用程序定义插件遵循的接口,然后由自定义组件来实现这个接口。其中有几个关键点:

第一,主应用程序如何知道要加载插件

对于ArcGIS是使用注册表,和MS Office类似,在注册表中建立一个“component categories”的条目,而组件要被ArcGIS加载,就需要注册后,在这里增加添加一个条目。对于现在的大多数.net程序和前COM时代的C或C++程序,则通过目录来做到这点,通过遍历目录中的文件,然后通过反射机制(.net)来加载。

而COM程序,如VB环境下,则可以通过CreatObject来加载一个组件。

第二,插件的初始化

初始化包括2方面,一方面,主程序要创建一个变量,类型为插件所实现的接口,然后创建该插件,而同时,调用插件的初始化代码,例如Connect,传入需要主程序要暴露给插件的引用(App)。对于COM程序或者.net,是通过事件来做到这一点。主程序触发初始化事件,该事件在插件的代码中实现,根据传来的变量,初始化插件的运行环境。对于C或者C++这样的环境,可以通过函数指针和回调函数来实现这一点。

插件的初始化过程,就是插件插件和主程序通讯桥梁的过程,这个桥梁,对于ArcGIS,就是IApplication接口。

第三,插件和应用程序之间的通讯

其实上边已经差不多说清楚了,对于主应用程序,是通过创建插件对象,获得当前插件的实例,然后控制他,如果是插件是一个按钮,那么初始化插件的时候,创建了按钮对象,并绑定按钮的click事件由插件的相应过程来处理。

对于插件,则由于在初始化中通过初始化事件(例如OnCreat或者Connect这样的事件)的参数得到了当前应用程序的Application等对象实例,因此就可以使用这些对象实例来操作应用程序。

对于应用程序的一些状态变化,可以通过定义事件,然后在插件代码中响应这些事件来完成。

第四,用户界面

Microsoft Office的COM加载宏的编写,需要通过调用Office的Commandbar等对象来创建用户界面元素,可以完全自定义。对于Photoshop这样的程序,插件程序使用C或C++来完成,扩展的位置固定在几个确定的扩展点。ArcGIS个人觉得基本上处于二者之间。

转载于:https://www.cnblogs.com/lxGIS/p/3409357.html

ArcGIS Desktop开发基础(转)相关推荐

  1. ArcGIS Engine开发基础总结(一)

    标准Engine功能 地图浏览    地图制作 数据查询 数据分析 及 所有的开发控件 -MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅 ...

  2. 【ArcObject开发】实验:ArcGIS Desktop开发方式入门基础教程

    一.实验目的: 熟练掌握ArcGIS Desktop开发方式. 二.实验准备: 学习ArcGIS Desktop定制步骤:熟悉VBA编程环境.Active DLL和Active EXE开发一般过程. ...

  3. ArcGIS二次开发基础教程(09):叠加分析

    ArcGIS二次开发基础教程(09):叠加分析 缓冲区分析的概念及原理请查看帮助文档 http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/analy ...

  4. ArcGIS Engine开发前基础知识(4)

    ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...

  5. ArcGIS二次开发基础教程(11):网络分析之最短路径分析

    ArcGIS二次开发基础教程(11):网络分析之最短路径分析 最短路径分析 这里直接调用了在mdb中建立好的网络数据集 //全局变量 private INetworkDataset my_networ ...

  6. ArcGIS二次开发基础教程(10):三维分析

    ArcGIS二次开发基础教程(10):三维分析 坡度分析 请务必学会使用帮助文档!!! //DEM数据的坡度分析 将分析结果添加到地图上 //首先获取DEM数据,方法有很多例如从个人地理数据库获取,也 ...

  7. ArcGIS二次开发基础教程(06):有关图层的基本操作

    ArcGIS二次开发基础教程(06):有关图层的基本操作 0. PageLayout和MapControl 的同步 void CopyToPage(){//对象拷贝,把mapcontrol的地图拷贝重 ...

  8. ArcGIS二次开发基础教程(13):网络分析之最近设施分析

    ArcGIS二次开发基础教程(13):网络分析之最近设施分析 最近设施分析 /// <summary>/// Geodatabase function: open work space// ...

  9. ArcGIS二次开发基础教程:开发环境配置教程(ArcEngine10.4+VS2019)

    开发环境配置教程 由于ArcGIS.ArcEngine以及承载开发环境的Visual Studio的版本众多,其开发环境的配置也有不小的难度,故写此文章写给新入门ArcGIS二次开发的同学,帮助他们摆 ...

最新文章

  1. 【数据平台】python数据集连接和组合
  2. 面试中关于String、StringBuffer、StringBuilder的频率最高问题
  3. win7开启uasp协议_UASP与USB模式切换工具(SwitchUA官方版下载_UASP与USB模式切换工具(SwitchUASP) v1.0免费版 - Win7旗舰版...
  4. dispatchTouchEvent onInterceptTouchEvent onTouchEvent区分
  5. C#编写程序操作数据库如何防止SQL注入漏洞的发生
  6. Eclipse中自动创建set、get方法
  7. 【C++】max_element() 和 min_element()
  8. 网易编程题-操作序列
  9. 福昕PDF编辑器中文版(FoxitPDFEditor)绿色版
  10. VB 语言介绍以及VBA、宏(Macro)的关系
  11. 身为一名合格root管理员的基本防范措施 Linux系统安全及应用
  12. 【leetcode】开密码锁
  13. List remove的三种正确方法
  14. 海天蚝油《挑战不可能》7岁孩子盲棋PK,目标直指冠军王天一
  15. 路程c语言,一道关于路程的程序。我一直看不懂,请教大家帮着看看和解释一下,谢谢。我很急急着...
  16. 筒仓计算表格_打破筒仓
  17. 代理服务器和客户端配置
  18. 初中没毕业的人怎么提升学历 有什么途径
  19. 笔记本自动重启原因总结
  20. SpringCloud微服务治理技术入门

热门文章

  1. Java volatile关键字原理解剖
  2. 给定数组 求和等于固定值 算法_别人家的面试题:不可变数组快速范围求和
  3. woocommerce产品选项卡描述_适合WooCommerce卖家的7款Dropshipping插件+功能介绍
  4. pythonsocket数据对接_python socket通信 网站之间数据交流
  5. httpclient 设置短连接_HTTP长连接、短连接使用及测试
  6. list排序方法python_python将list排序的方法有哪些
  7. 从零开始学习docker(九)持久化存储和数据共享之 bind Mounting
  8. 推荐2个十分好用的pandas数据探索分析神器!
  9. PDF课件下载!《用Python玩转数据》
  10. Python帮你识破双11的套路