ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

原文 ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

System类库

System类库是ArcGIS体系结构中最底层的类库。System类库包含给构成ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口。AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGIS Engine的初始化。开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

SystemUI类库

SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGISEngine中进行扩展。包含ICommand、ITool和IToolControl接口。开发者用这些接口来扩展UI组件,ArcGISEngine开发人员自己的组件将使用这些UI组件。这个类库中包含的对象是一些实用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

Geometry类库

Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。大多数用户会遇到的基本几何图形对象为Point、MultiPoint、Polyline和Polygon。除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。它们是Segement、Path和Ring。Polyline和Polygon由一系列相连接的、构成列Path的片段组成。一个片段由两个不同的点,即起始点和结束点,以及一个定义这两点之间弯曲度的元素类型组成。片段的类型有CircularArc、Line、Elliptic Arc和BezierCurve。所有几何图形对象都可以有与其顶点相关联的Z、M和IDs。所有的基本几何图形对象都支持诸如Buffer,Clip等几何操作。几何子要素不可以由开发者扩展。

GIS中的实体指的是现实世界中的要素;现实世界中要素的位置由一个带有空间参考的几何图形来定义。空间参考对象,包括投影坐标和地理坐标系统,都包括在Geometry类库中。开发者可以通过添加新的空间参考和投影来扩展空间参考系统。

Display类库

Display类库包含用于显示GIS数据的对象。除了负责实际输出图像的主要显示对象外,这个类库还包含表示符号和颜色的对象,它们用来控制在显示上绘制时实体的属性。Display类库还包含在与显示交互时提供给用户可视化反馈的对象。开发者与Display最常用的交互方式就是类似于Map对象或PageLayout对象提供的视图。Display类库的所有部分都能进行扩展;通常扩展的对象包括符号、颜色和显示反馈。

Server类库

Server类库包含允许用户连接并操作ArcGIS Server的对象。开发人员用GISServer Connection对象来访问ArcGIS Server。通过GISServer Connection可以访问Server ObjectsMananger对象。用这个对象,开发人员可以操作Server Context对象,以处理运行于服务器上的ArcObjects。开发人员还可以用GISClient类库与ArcGIS Server进行交互。

Output类库

Output类库用于创建图形输出到诸如打印机和绘图仪等设备及诸如增强型元文件和栅格图像格式(JPG、BMP等)等硬拷贝格式。开发人员用这个类库中的对象及ArcGIS系统的其他部分创建图形输出。通常是Display和Carto类库中的对象。开发者可以为自定义设备和输出格式扩展Output类库。

GeoDatabase类库

Geodatabase类库为地理数据库提供了编程API。地理数据库是建立在标准工业关系型和对象关系数据库技术之上的地理数据仓库。Geodatabase类库中的对象为ArcGIS支持的所有数据源提供了一个统一编程模型。GeoDatabase类库定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口。开发者可以扩展地理数据库,以支持特定类型的数据对象(要素、类等);此外,Geodatabase类库还有用PlugInDataSource对象添加的自定义矢量数据源。地理数据库支持的本地数据类型不能扩展。

GISClient类库

GISClient类库允许开发者使用Web服务;这些Web服务可以由ArcIMS和ArcGISServer提供。GISClient类库中包含用于连接GIS服务器以使用Web服务的对象。该类库支持ArcIMS的图像和要素服务。GISClient类库提供以无态方式直接或通过Web服务目录操作ArcGISServer对象的通用编程模型。在ArcGIS Server上运行的ArcObjects组件不能通过GISClient接口来访问。要直接获得访问在服务器上运行的ArcObjects,开发人员应使用Server类库中的功能。

DataSourcesFile类库

DataSourcesFile类库包含用于基于文件数据源的GeoDatabase API实现。这些基于文件的数据源包括shapefile、coverage、TIN、CAD、SDC、StreetMap和VPF。开发者不能扩展DtaSourcesFile类库。

DataSourcesGDB类库

DataSourcesGDB类库包含用于数据库数据源的GeoDatabase API实现。这些数据源包括MicrosoftAccess和ArcSDE支持的关系型数据库管理系统—IBM、DB2、Informix、MicrosoftSQL Server和Oracle。开发者不能扩展DataSourcesGDB类库。

DataSourcesOleDB类库

DataSourcesOleDB类库包含用于MicrosoftOLEDB数据源的GeoDatabaseAPI实现。此类库只能用在Windows操作系统上。这些数据源包括支持数据提供者和文本文件工作空间的所有OLEDB。开发者不能扩展DataSourcesOleDB类库。

DataSourcesRaster类库

DataSourcesRaste类库包含用于栅格数据源的GeoDatabase API实现。这些数据源包括ArcSDE支持的关系型数据库管理系统—IBM、DB2、Informix、MicrosoftSQL Server和Oracle,以及其支持的RDO栅格文件格式。当需要支持新的栅格格式时,开发者不扩展这个类库,而是扩展RDO。开发者不能扩展DataSourcesRaster类库。

GeoDatabaseDistributed类库

GeoDatabaseDistributed类库通过提供地理数据库数据导入和导出工具,可以支持对企业级地理数据库的分布式访问。开发者不能扩展GeoDatabaseDistribute类库。

Carto类库

Carto类库支持地图的创建和显示;这些地图可以在一幅地图或由许多地图及其地图元素组成的页面中包含数据。PageLayout对象是驻留一幅或多幅地图及其底土元素的容器。地图元素包括指北针、图例、比例尺等。Map对象包括地图上所有图层都有的属性—空间参考、地图比例尺等,以及操作地图图层的方法。可以将许多不同类型的图层加载到地图中。

不同的数据源通常有相应的图层负责数据在地图上的显示,矢量要素由FeatureLayer对象处理,栅格数据由RasterLayer对象处理,TIN数据由TinLayer对象处理,等等。必要的话,图层可以处理与之相关数据的所有绘图操作,但通常图层都是一个相关的Renderer对象。Renderer对象的属性控制着数据在地图中的显示方式。Renderers通常用Display类库中的符号来进行实际绘制,而Renderer只是将特定符号与待绘实体的属性相匹配。Map对象和PageLayout对象可以包含元素。元素用其几何图形定义其在地图或页面上的位置,用行为控制元素的显示。包括用于基本形状、文字标注和复杂标注等的元素。Carto类库还支持地图注释和动态标注。尽管开发者可以在其应用程序中直接使用Map和PageLayout对象,但通常来说开发者更经常使用更高级的对象,如MapControl、PageLayoutControl或ArcGIS应用程序。这些高级对象简化了一些任务,尽管它们也提供对更低级别的Map和PageLayout对象的访问,允许开发者更好的控制对象。Map和Pagelayout对象并不是Carto类库中提供地图和页面绘制的仅有对象。MxdServer和MapServer对象都支持地图和页面的绘制,但不是绘制到窗口中,而是直接绘制到文件中。开发者可以用MapDocument对象保存地图和地图文档(.mxd)中页面布局的状态,以便在ArcMap或ArcGIS控件中使用。Carto类库通常可以在许多方面进行扩展。自定义Renderer、Layer等都很普遍。自定义图层通常是向地图应用程序中加载自定义数据最简单的方法。

Location类库

Location类库包含支持地理编码和操作路径事件的对象。地理编码功能可以通过细粒度对象来完全控制访问,或通过GeocodeServer对象提供的简化API来访问。开发者可以创建自己的地理编码对象。线性参考功能提供对象用于向线性要素添加事件,用各种绘制方法来绘制这些事件。开发者可以扩展线性参考功能。

NetworkAnalysis类库

NetworkAnalysis类库提供用于在地理数据库中加载网络数据的对象并提供对象用于分析加载到地理数据库中的网络。开发者开以扩展NetworkAnalysis类库以便支持自定义网络追踪。这个类库目的在于操作公共网络:供气管线、电力供应线网等。

Controls类库

开发者用Controls类库来构建或扩展具有ArcGIS功能的应用程序。ArcGISControls通过封装ArcObjects并提供粗粒度的API简化了开发过程。尽管这些控件封装了细粒度的ArcObjects,但是并不限制对这些细粒度的ArcObjects的访问。MapControl和PageLayoutControl分别封装了Carto类库的的Map和PageLayout对象。ReaderControl同时封装了Map和PageLayout对象,且在操作控件时提供了简化的API。如果授权了地图发布程序,开发者可以以访问Map和PageLayout控件类似的方式访问内部对象。Controls类库还包含实现一个目录表的TOCControl及驻留操作合适控件的命令和工具的ToolbarControl。开发者通过创建自己的用于操作控件的命令和工具来扩展Controls类库。为此Controls类库提供HookHelper对象。这个对象使得创建一个操作任何控件及操作诸如ArcMap这样的ArcGIS应用程序的命令变得非常简单。

GeoAnalyst类库

GeoAnalyst类库包含支持核心空间分析功能的对象。这些功能用在SpatialAnalyst和3Danalyst两个类库中。开发者可以通过创建新类型的栅格操作来扩展GeoAnalyst类库。为使用这个类库中的对象,需要ArcGISSpatial Analyst或3DAnalyst扩展模块许可,或者ArcGISEngine运行时空间分析或3D分析选项许可。

3DAnalyst类库

3Danalyst类库包含操作3D场景的对象,其方式与Carto类库包含操作2D地图的对象类似。Scene对象是3Danalyst类库中主要对象之一,因为该对象与Map对象一样,是数据的容器。Camera和Target对象规定在考虑要素位置与观察者关系时场景如何浏览。一个场景由一个和多个图层组成;这些图层规定了场景中包含的数据及这些数据如何显示。开发者很少扩展3Danalyst类库。为使用这个类库中的对象,需要ArcGIS3DAnalyst扩展模块许可或ArcGISEngine运行时3D分析选项许可。

GlobeCore类库

GlobeCore类库包含操作globe数据的对象,其方式与Carto类库包含操作2D地图的对象类似。Globe对象是GlobeCore类库中主要对象之一,因为该对象与Map对象一样,是数据的容器。GlobeCamera对象规定在考虑globe位置与观察者关系时golbe如何浏览。一个golbe有一个和多个图层;这些图层规定了golbe中包含的数据及这些数据如何显示。

GlobeCore类库中有一个开发控件及与其一起使用的命令和工具。该开发控件可以与Controls类库中的对象协同使用。

SpatialAnalyst类库

这个类库中的对象,需要ArcGIS空间分析扩展模块许可或ArcGIS Engine运行时空间分析选项许可。开发者很少扩展GlobeCore类库。为使用这个类库中的对象,需要ArcGIS3DAnalyst扩展模块许可或ArcGISEngine运行时3D分析选项许可。SpatialAnalyst类库包含在栅格数据和矢量数据上执行空间分析的对象。开发者通常使用这个类库中的对象,而不扩展这个类库

 

Version
Version库是ArcGIS 10新出来的一个类库,该类库包含了将独立应用程序绑定到特定的ArcGIS系列产品的函数和方法,该类库是运行Engine的应用程序的时候。

 

 

 

转载于:https://www.cnblogs.com/arxive/p/5905079.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-dialog的内容不刷新;el-dialog内容有缓存;el-dialog里面的组件不刷新问题;

el-dialog里面的内容是带缓存的,也就是说除了第一次打开会初始化,其他次打开都是直接加载缓存的; 这就导致了有时候打开弹框时候,内容不刷新。有说法说是el-dialog嵌套太深大致的。 解决方法:直接给弹框的内容部分添加…

Android布局属性详解之RelativeLayout

RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边…

el-badge标记;el-tabs配合el-badge提示数字

标签选项卡配个标记数字提示 注意&#xff1a;el-tabs可以通过具名 slot 来实现选项卡的内容 <template><div><el-tabs v-model"tabValue"><el-tab-pane label"全部" name"1"></el-tab-pane><el-tab-pane lab…

[DP之计数DP]

其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常快 都是一个很小的数然后有很多种接下来的方案使得这个数一下子变很大 计…

C++程序设计(第2版)课后习题答案--第11章

11.9 定义分数类Rational...... View Code 1 #include<iostream.h>2 #include<stdlib.h>3 class Rational{4 private:5 int fm,fz;6 int getZdgys(int a,int b);7 public:8 Rational(){9 fm1;fz0; 10 } 11 Rational(int a,int b); 1…

el-table设置动态高度:height;el-table设置最大高度max-heigh

<template><div><!-- 表格 height绑定tHeight--><el-tableref"singleTable":data"tableData":height"tHeight":max-height"maxHeight"><el-table-columnprop"date"label"日期"width&q…

C#控制台程序中处理2个关闭事件的代码实例

From: http://www.cnblogs.com/lvxiangjack/p/5363627.html 我们开发的控制台应用&#xff0c;在运行阶段很有可能被用户CtrlC终止或是被用户直接关闭。如果我们不希望用户通过CtrlC终止我们的程序&#xff0c;就需要对CtrlC或关闭事件作处理。 处理方法 在.net平台下Console类…

字典表左右选择

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><title>管理中心 - 添加新配送点 &l…

Oracle内部错误:ORA-07445[kcflfi()+466] [INT_DIVIDE_BY_ZERO]一例

一套Windows上的11.2.0.1单实例数据库在database open阶段出现了ORA-07445:core dump [kcflfi()466] [INT_DIVIDE_BY_ZERO] [] [PC:0x500282E] [] []内部错误&#xff0c;具体的出错日志如下: LOG CONTENTALERT.LOGStarting ORACLE instance (normal) LICENSE_MAX_SESSION 0 L…

提交本地项目到github

要托管到github&#xff0c;那你就应该要有一个属于你自己的github帐号&#xff0c;所以你应该先到github.com注册 打开浏览器 在地址栏输入地址&#xff1a;github.com 填写用户名、邮箱、密码 点击Sign up即可简单地注册 2完成注册&#xff0c;进入github平台&#xff0c; 点…

一个能自动搜索源文件并自动推导的Makefile

From: http://blog.csdn.net/yuliying/article/details/49635485 这份makefile可以将当前makefile所在文件夹以及所有子文件夹中的cpp文件打包成静态库和动态库. 稍作修改目标也可以用来编译为可执行文件。 自动生成所有依赖关系&#xff0c;修改任何文件都可以触发重新编译相应…

(转)android WebView loadData不能解析(找不到网页)

public void loadData (String data, String mimeType, String encoding) loadData() 中的html data中不能包含#, %, \, ?四中特殊字符&#xff0c;出现这种字符就会出现解析错误&#xff0c;显示找不到网页还有部分html代码。因为css中经常用#, %等字符&#xff0c;所以大部…

C++11 std::bind std::function 高级用法

From: http://blog.csdn.net/eclipser1987/article/details/24406203 从最基础的了解&#xff0c;std::bind和std::function [cpp] view plaincopy/* * File: main.cpp * Author: Vicky.H * Email: eclipser163.com */ #include <iostream> #include <fun…

fragment+viewpager+tablayou实现滑动切换页面

本文目标&#xff1a;实现滑动切换页面 首先&#xff0c;Tablayout控件就需要添加design library&#xff0c;在android studio中添加依赖 compile ‘com.android.support:design:23.2.1’ 或者直接&#xff1a;File-->Project structure-->app-->Dependencies中单击加…

php 的命名空间 看鸟哥后的随笔

我以前貌似真心没有想过php的命名空间&#xff0c;我每次写文件都会记得不让类名相重&#xff0c; 看完命名空间了这个&#xff0c;我发现可以解决我的一部分问题 1 MyLove.php2 namespace Zj;3 class Application{4 public function toMyLove(){5 echo Marx is…

vue页面截图;H5页面截图;vue项目中将特定网页内容生成图片(截图);html2canvas截图

功能&#xff1a; 1.兼容 PC 和 Mobile&#xff1b; 2.对指定的区域进行截取&#xff1b; 3.可以控制截图大小&#xff1b; 4.截图生成base64图片地址 一、安装插件 npm install html2canvas --save 或 yarn add html2canvas二、在.vue页面引入使用 import html2canvas fro…

CentOS6.8升级gcc到4.8.5总结

From&#xff1a; http://www.cjjjs.com/paper/czxt/2017222114137150.aspx [摘要] 操作系统是CentOS6.8的32位版本&#xff0c;yum自带的gcc版本为4.4.7&#xff0c;不支持C11特性。所以需要升级到4.8.5&#xff0c;至少要升级到4.8.1才完全支持C11。本文提供了自动安装脚本和…

JAVA设计模式之【单例模式】

任务管理器案例 1.单例类 package Singleton;/*** Created by Jim on 2016/9/28.*/ public class TaskManager {private static TaskManager tm null;private TaskManager() {System.out.println("创建任务管理器");}public void displayProcesses() {System.out.pr…

myeclipse快捷键

Ctrl1 快速修复CtrlD: 删除当前行 CtrlQ 定位到最后编辑的地方 CtrlL 定位在某行 CtrlO 快速显示 OutLine CtrlT 快速显示当前类的继承结构 CtrlW 关闭当前Editer CtrlK 快速定位到下一个 CtrlE 快速显示当前Editer的下拉列表CtrlJ 正向增量查找(按下CtrlJ后,你所输入的…

vue下载static文件

将文件放在static静态文件夹下即可&#xff0c;如果放在src统计的static不行&#xff0c;那就放在src下级的static里 downLoadFile () {var elemIF document.createElement("iframe")// elemIF.src ../../static/政策精选模板.xlsx 这样写路径不行elemIF.src sta…