zoukankan      html  css  js  c++  java
  • ArcGIS Desktop开发基础(转)

    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个人觉得基本上处于二者之间。

  • 相关阅读:
    触达项目涉及到的功能点
    NodeJS编程基础
    C#Socket通讯
    HTML转义字符大全
    C# 二进制,十进制,十六进制 互转
    浏览器的分类
    Prometheus设置systemctl管理
    第十五讲:Pagerduty的联用
    第十四讲:Prometheus 企业级实际使⽤二
    第十三讲:Prometheus 企业级实际使⽤
  • 原文地址:https://www.cnblogs.com/lxGIS/p/3409357.html
Copyright © 2011-2022 走看看