AE开发概念辨析
樱木 原文 AE开发之概念辨析2,AE开发涉及相关概念,AE开发相关概念
1 AE中的类库
AE总共包括了21个子库,分别是SYSTEM,SYSTEMUI,GEOMETRY,DISPLAY,SERVER,OUTPUT,GEODATABASE,GISCLIENT,DATASOURCEFILE,DATASOURCEGDB,DATASOURCEOLEDB,DATASOURCERASTER,GEODATABASEDISTRIBUTED, CARTO, LOCATION, NETWORKANALYSIS, CONTROLS,GEOANALYST, 3DANALYST,GLOBECORE和SPATIALANALYST。从这些库的名字上就能看出来基本上他们主要能实现的功能。特别是当你对于ArcGIS的应用和地理空间分析理论很熟悉的话,搞懂这些库的功能更加是易如反掌。
下面分别就上面黑体字的库做进一步的描述:
GEOMETRY:主要对几何对象的处理,重要的几何对象包括Point,MultiPoint,PolyLine, PolyGon, 还有Segment,Path和Ring。所有这些几何对象都有Z,M和IDs属性值,并且支持Buffer,Clip的操作。
DISPLAY:显示GIS数据的对象,还有控制对象显示的符号和色彩对象。
GEODATABASE:提供了对于所有ArcGIS支持的数据类型的统一编程API。
CARTO:控制地图的建立和及其附属显示的对象,例如指北针、图例等。重要的两个对象是Map和PageLayout,他们分别对应ArcMap中的data
view和layout
view。同时该库还对地图注记和动态注释提供支持。
CONTROLS:封装了几个重要的对象,对开发者开发图形用户界面的应用程序帮助很大,从此也进一步断送了MO的发展前途(我的人为:))。
GEOANALYST:对空间分析支持核心的分析功能,同样的功能可以在3D和Spatial库中找到。主要功能包括将点插值成Raster,其他格式转换成Raster或Vice
versa类型,执行表面分析(坡度,坡向等)和Raster的重分类。
SPATIALANALYST:提供了一整套完整的工具使model
development对象可以和Raster Data
Object(RDO)更紧密地工作。
容易疑惑地方:
Net中的类比AO中的类多了class后缀
比如AO中是Point类,而.NET中却多了个PointClass类,等等
其实简化理解就可以了。Point类是基于COM的纯AO类,而PointClass是AO类经.Net封装后形成的类。仅此而已,两者在使用中没有区别。
ArcGIS Engine中的AxMapControl是什么类,与MapControl什么关系
AxMapControl非AO类,它是AO的MapControl经.NET封装后形成的,因此在ArcObjects的帮助文档中查无此类。欲知AxMapControl的属性和方法,查询ArcObjects帮助中的IMapControl相应接口,基本相当。
其实,出现AxMapControl的本质在于:Engine多是创建.NET窗体程序,MapControl对象虽为Map控件,但它并不能直接添加在.NET的Form中显示。只有将MapControl封装为.NET的控件,即AxMapControl,才可以在Form程序中运行显示。
2 GIS中的几个概念的理解
2.1 要素、要素类
要素(feature):就是能代表物理实体的,具有几何形状的地图元素。地图中主要包括点,线,面三要素。是空间数据中最基本,不可分割的单位。每个要素和属性表中记录(行)存在一一对应关系。主要用来查询,分析。要素类(feature class):具有相同几何特征(形状)的同类要素的集合(即点图层中的点,线图层中的线,面图层中的面)。一个要素类一般和一个属性表相对应。事实上,某一要素或者是某类要素是通过TOC中的图层来表现的。
1、使用AE创建要素过程
(1)打开编辑空间(IWorkspaceEdit)
(2)创建Feature(FeatureClass.CreateFeature())
(3) 设置Feature的属性
(4)保存Feature(Feature.Store())
(5) 关闭编辑空间
2、对要素(Feature)的任何编辑操作都必须在“编辑空间打开的阶段”完成
3、如果打开了编辑状态,就一定要调用feature.store,或则调用discard。不然会有时抛出异常。
3、FeatureClass实际上都相当于一个容器,真正的实体分别是Feature(一些形状,比如点,线或者面等),它就是这个容器中的一个记录,就如同二维表中的某一行一样,代表了具体的实体;使用IFeatureClass的CreateFeature方法和ITable的CreateRow方法效果一样,只不过CreateFeature方法返回的是CreateRow方法创建的Feature的引用。
4、Shapefile文件是描述空间数据的几何和属性特征的非拓扑实体矢量数据结构的一种格式。一个Shapefile文件包括一个主文件(*.shp),一个索引文件(*.shx)和一个dBASE表文件(*.dbf),要注意的是Shapefile只能存储一种要素(点状或线状或面状)。而gdb里边可以存放很多要素集(feature dataset),每个要素集里边又能存放很多要素类。
5、Featureclass是个模型上的称呼,而shapefile做为一种文件格式,是Featureclass这种模型的表现形式。
6、图层(layer) 是依附于地图(Map)而存在的一个概念,FeatureClass是一系列Feature(形状)的集合,是一个存储数据的容器,当我们将FeatureClass放到Map中就成图层了,但如果要将数据存储到硬盘上怎么办呢??不能存储为Layer吧??这时我们是将它存在Shapefile文件中,像上面说的Shapefile是外在表现形式,是具体的,而像Featureclass、Layer之类的是抽象的概念。
2.2 数据容器
图层(layer):每一图层是由同一类型的要素组成,其数据来自某个要素类。因此图层可以看成是要素类在TOC中的表现形式。其对应的表存放了该图层中所有要素对应的记录。
表(table/attribute table):由若干行和列组成。列表示属性或者字段,行代表记录。当然也有和图层或要素不直接对应,相对独立的属性表,在需要的时候和其他的表建立连接,实现表的扩展。其中的记录对应了
数据框(data frame):将多个图层,属性表聚集在一起。框架有图层的名称,图例,说明,当前显示状态和独立的属性表等等。
数据源(data source):不经转换而被arcmap直接使用的空间数据,属性数据。各种要素类和表,是最常用的数据源。
图形元素(element):使用drawing工具条画出的图形元素。其存放在地图文档中,不能被别的文档使用,与属性表无关联。要注意与feature是不同的概念。Feature与表有关联,可以被别的文档使用。该元素仅用来辅助表达,注记。
地理数据库(geodatabase):包括要素类和要素集,是Arcgis应用程序用来管理地理信息的。它实现了一个面向对象的Gis数据模型,地理数据库将每一个要素以行的形式存储在表中,要素的段中,属性数据存储在其他字段中,每个表存储一个要素。除了存储矢量数据外,地理数据库还可以存储栅格数据,数据表,以及其他数据表的参考。可以将所有的空间数据存储在一个地方。地理数据库的优点是其中的要素含有内建行外,要素完全存储在单一的数据库中,数据量大的地理数据库可以实现不分块,无缝存储。
数据模型:ArcGis可以用多种格式来管理和存储地理数据。ArcGis采用的三种基本数据格式有:vector矢量,raster栅格,不规则三角网 tin。此外也可以将表格数据导入到ArcGis中。可以用三种不同的矢量模型表示地理数据要素,分别是 shapefile, coverage和地理数据库(geodatabase)。栅格数据包括影像和格网。其中矢量模型适合于表达离散要素,栅格模型适合表达连续要素。
Coverages:是一种传统的格式,可以用于进行复杂的地理处理、建立高质量的地理数据集和进行复杂的空间分析。Coverages包括三种要素类型:基本(primary)要素、复合(composite)要素和辅助(secondary)要素。Coverages的基本要素有标注点(label
point)、弧(arc)和多边形(polygon)。复合要素有路径(route)、段(section)和区域(region),它们是建立在基本要素之上的。 Coverages也可能包括辅助要素:控制点(tics)、链接(links)和注记(annotation)。控制点和链接不代表具体的地理实体,而是用于管理Coverage。注记用来为地图上的地理要素提供文本。
2.3 拓扑相关
拓扑(topoloyg):地理要素的相互连接和扩展。是明确定义和使用要素几何中内在空间关系的过程。Coverage有上中拓扑关系:连通性(conectivity),区域定义(area defination),邻接性(contiguity).coverage通过记录一列构成每个多边形边界的相连接的弧来定义区域(area),成为多边形-弧拓扑。Coverage通过记录一列弧的左边多边形和右边多边形来存储邻接信息,成为左-右拓扑。
悬结点(Dangle Node):在拓扑结构中,仅和一个线要素相连,孤立的结点。
伪结点(Pseudo Node):在拓扑结构中,两个线要素相连,共享一个结点。
普通结点(Node):在拓扑结构中,三个或者三个以上的线要素交汇,共享的一个结点。
脏区(Dirty Area):建立拓扑关系后,又被编辑过的空间范围,该范围很可能存在不符合拓扑规则的要素。
3 AE的功能层次
1、AE从功能层次上分为五部分:基本服务(Base Services)、数据存取(Data Access)、地图表达(Map Presentation)、开发组件(Developer Components)和运行时选项(Runtime Options)。
2、Abstract Class(抽象类),OMD中每个抽象类至少有一个子类,OMD符号为二维的内部有阴影的矩形。
3、Coclass(Component classes)可创建类或组件类:用New关键字创建对象或者从别的对象获得运行实例。OMD符号为带阴影的3D矩形符号。
4、Class实例化类或普通类:不能直接创建新对象,只能从其它类接口的属性函数或者其它类的方法创建,OMD符号为3D矩形内部没有阴影。
5、PageLayout与Map都是视图对象,能够显示地图,都实现了IActiveView接口;同时它们都是图形元素的容器,能存储图形元素(Graphics Element),都实现了IGraphicContainer接口。
6、ArcGis中可以显示在视图上的图形可分为两种,地理数据和元素(Element)数据。元素是一个地图中除去要素数据外的部分,即在一幅地图中,除了保存在数据库中的地理数据外,其余的对象全部是元素,Map只能保存图形元素(Graphic Element),而PageLayout能保存图形元素和框架元素(Frame Element)。
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。