AecGIS Engine二次开发(二)

2.ArcEngine二次开发基础

2.1 ESRI公司GIS产品介绍

​ ESRI公司是一家跨国的GIS软件公司,是目前世界上最主要的GIS软件开发商,其开发的产品家族比较庞杂,为了便于以后对AE的学习,对其主要产品及相互关系介绍如下:

早期产品(Arc/Info)

Arc/Info主要包括两大部分:

  1. ESRI开发的ARC:空间数据处理;
  2. Heco SoftWare开发的INFO:存储和管理空间实体关联的属性数据

中期轻量级产品(ArcView 3.X+MapObjects)

  1. ArcView GIS 3.X

    ​ 是一个跨平台的工具型GIS 平台,具有强大的地理数据显示、查询、统计、分析和制图设计的能力,用户界面友好,与ESRI其他产品有着良好的相互支持,是世界上最流行的桌面GIS软件之一。

2.MapObjects 2.X

​ 轻量级的GIS二次开发平台,具有低成本、易开发(VB.vc、VS.NET等可视化开发平台)、不依赖其他GIS平台、使用环境广、通用性好、易推广等优点,同时该软件功能相对较弱,不便于网上发布。

目前ArcGIS产品

image-20230506200137644

image-20230506200207712

Desktop的组成

ArcMap、ArcGlobe、ArcSence、ArcCatalog、Geoprocessing

2.2 开发平台

  1. ArcEngine
  2. ArcGIS API for JavaScript
  3. ArcGIS Runtime SDK for Android/IOS
ArcEngine

ArcGIS Engine是用于构建定制应用的一个完整的嵌入式GIS组件库

开发者能将ArcGIS功能集成到一些应用软件,还可以为用户提供针对GIS解决方案的定制应用

ArcGIS Engine里面包含着两个部分∶

  • 开发ArcGlS Engine Developer kit :

​ 是创建自定义的GIS和制图应用的工具包.

  • 部署ArcGIS Engine Runtime :

​ 是为了运行自定义的Engine应用的可分发的ArcObejcts.

ArcGIS Runtime SDKs

ArcGIS Runtime SDKs 用于在多种平台和设备上构建和部署原生应用程序。即使在离线环境下,也能在原生应用中体验强大的空间分析能力。

image-20230506200729874

2.3 ArcGIS Engine中的对象模型图

对象模型图(object Model Diagram, OMD):是基于UML基础之上,通过直观的图表和文字表示方式反映对象模型的信息和彼此间的关系的图视。

在进行GIS工程开发时帮助我们获取以下一些信息:

  • 类支持哪些接口?
  • 需要哪个对象完成工作?
  • 怎样声明类的对象?
  • 是否能用new实例化类?
AE中类与类的关系

在ArcEngine中存在三种类型的类:抽象类(AbstractClass)、组件类(CoClass)、普通类(Class)。

Abstract Class:抽象类不能用于产生一个新的对象,但是可以用于定义一个子类。

CoClass:组件类是一个可以直接用new创建对象实例的类,它的实例对象不依赖其他对象的存在而存在,其生存周期也不用其他的对象管理。

Class:普通类不能够直接产生一个对象,但它可以用其他的普通类或组件类的方法产生,而不是使用new关键字来完成。

image-20230506200958897

image-20230506201041423

image-20230506201159803

接口

image-20230621205131441

接口成员包括属性(对象的状态)、方法(执行行为)。

属性:用类似哑铃状的东西表示。包括只读(get)、只写(put)、可读可写(get/set)。还可以是引用类型的属性(Reference)用空心表示。

image-20230621205207311

理解对象模型图(Reading OMDS) - Vivu - 博客园 (cnblogs.com)

2.4 ArcGIS Engine介绍(*)

​ ArcGlS Engine提供了21个组件对象库,其中有基本的图形库esriGeometry、显示库esriDisplay、制图库esriCarto等,扩展的三维分析库esri3DAnalyst、网络分析库esriNetworkAnalyst等。这些组件对象库对ArcGIS底层功能进行了封装,使GIS开发人员能够集中精力按照应用需求进行开发。

ArcGIS Engine 与Arc0biects: ArcGlS Engine是对Arc0biects的提炼和简化,Arcobjects是所有产品的基础,所以结构庞大。脱离了ArcGlS桌面软件的ArcGlS Engine结构更加合理,其提供的功能完全能够满足各种层次的开发需要,而且保持了开放性和扩展性。

​ ArcGIs Engine是按照COM标准实现的,支持跨平台和多种编程语言的开发,在Windows下支持C、Java、VB、Delphi和 . Net等,在UNIX和LINUX下支持C和Java ,所以可以选择多种开发方式。

WINDOWSUNIX AND LINUX
C++C++
JavaJava
COM
.NET

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qzu4Vb6W-1687961758885)(AE二次开发.assets/image-20230626123924400.png)]

image-20230506201410608

基础类库

image-20230506201425549

数据访问

image-20230506201440202

制图与地理分析类库

image-20230506201509853

2.5 ArcGIS Engine快速入门

image-20230506201714195

2.6 ArcGIS Engine的运行许可

image-20230506201842158

image-20230506201852802

image-20230506201900857

image-20230506201920762

(五)许可使用规则
许可初始化必须在所有AE代码运行以前进行在程序运行期间产品许可只能被确认一次扩展许可可以在需要时被检入检出
不能合并或混合产品许可和扩展许可
应该写代码来查询可获取许可的级别并从中检出许可
尽可能使用最低级别的许可

许可快捷使用方法

①在程序入口添加以下代码:

Using    ESRI.ArcGIS;              //引用命名空间

//在Sub Main入口函数添加许可绑定代码
 if (!RuntimeManager.Bind(ProductCode.Engine))
            { if (!RuntimeManager.Bind(ProductCode.Desktop))
                {
                    MessageBox.Show("Unable to bind to ArcGIS 
                                     runtime. Application will be shut down.");
                    return;
                }
            }

②在应用程序界面添加许可控件

image-20230506202402763

③选中许可控件,右键弹出菜单选择属性,并设置需要的许可。

image-20230506202413764

许可使用专业方法

运用许可管理类AoInitialize,实现许可的管理:

  • ①用lsProductCodeAvailable方法确认是否可获得产品;
  • ②用lsExtensionCodeAvailable确认可以获得什么扩展;
  • ③用产品许可初始化应用程序;
  • ④如需要,使用CheckOutExtension和CheckInExtensionmethods执行扩展检出和检入;
  • ⑤关闭产品许可。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲墨知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值