GIS软件应用(一)ArcInfo环境及数据输入_第1页
GIS软件应用(一)ArcInfo环境及数据输入_第2页
GIS软件应用(一)ArcInfo环境及数据输入_第3页
GIS软件应用(一)ArcInfo环境及数据输入_第4页
GIS软件应用(一)ArcInfo环境及数据输入_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Gis开发ArcGIS的体系结构:ArcEngine功能层次由以下5部分组成:基本服务:由GIS核心ArcObjects构成。几乎所有的GIS应用程序都需要,如几何体和显示。数据存取:对许多栅格和矢量格式的数据进行存取,包括GeoDatabase。地图表达:创建和显示带有符号、标注的地图以及专题地图的ArcObjects对象。开发组件:快速应用开发的高级用户接口控件和综合帮助系统。运行时选项:与标准功能或其他高级功能一起部署的部件。标准Engine功能:地图浏览、地图制作、数据查询、数据分析所有的开发控件 MapControl, PageLayout, Toolbar, TOC, ArcRea

2、der对所有矢量和栅格数据源的读权限、对Shapefile和pGDB的写权限读/写 MXD文件ArcGIS Engine类库System类库是ArcGIS系统结构中最底层的类库。System类库包含了构成为ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口,如AoInitializer对象就是在System类库中定义的,所有开发者必须使用这个对象来初始化ArcGIS Engine。SystemUI 包含用户界面组件接口定义。如:Icommand、Itool和IToolControl接口。开发者使用这些接口来扩展UI组件。包含的一些使用工具对象,通过使用这些对

3、象来简化用户界面的开发, 如Icommand和Itool这样的接口就在这里定义。Geometry处理存储在要素类中的要素形状。如:Point、MultiPoint、Polyline、Polygon等。存储构成几何要素的子要素。如:Segement、Path、Ring等。存储几何要素的空间参考对象。包括:投影坐标和地理坐标系统等。Display用于控制地图显示。包含用于显示GIS数据的对象。包含符号、颜色等用来控制显示的对象。包含交互操作时提供给用户显示回馈的对象,如MoveEnvelopeFeedback。Carto包含操作2D地图的对象。支持2D地图的创建和显示。提供Map和PageLayo

4、ut等基础对象。提供MapDocument对象来操作地图文档。使用ArcGIS Engine可以开发多种应用程序。独立的非可视化应用程序。如控制台和实用工具应用程序。独立的可视化应用程序。如Wiondows和基于控件的应用程序。嵌入式应用程序。如嵌入到现有的应用程序中的组件。跨平台的上述应用程序。用Java或C+编写。ArcGIS Engine控件概念嵌入式组件 一每个ArcGIS控件都是嵌入式组件,可以拖放到可视化设计环境提供的容器窗体或对话框中。一旦放在了容器内,就可以改变ArcGIS控件的大小和位置,以便与其他嵌入式组件一起为应用程序提供用户界面。属性页 一旦控件被放入了容器中,就可以使

5、用右键点击该控件来弹出属性页面,可以方便的访问控件的属性和方法 ,减少代码的编写工作量伙伴控件一这种类型的ArcGIS控件不能单独使用,需要和另外一个控件一起协同工作。一ToolbarControl和TOCControl是伙伴控件一对应的伙伴控件一般为:MapControl、PageLayoutControl、ReaderControl、SceneControl或GlobeControl控件。一可以通过属性页面来设置伙伴控件的关联属性。控件命令一ArcGIS Engine提供了一系列的命令、工具和菜单与ArcGIS控件系统工作。如放大、缩小、漫游等等。一开发人员也可以通过创建自己定义的命令、工

6、具和菜单来使用ArcGIS Engine提供的命令集。一可以使用HookHelper、GlobeHookHelper和SceneHookHelper等对象来简化自定义的命令。按照控件的功能,AE控件可以分为3类:制图控件:MapControl、PageLayoutControl等MapControl控件MapControl对应于ArcMap Desktop 应用中的“数据” 。 MapControl控件中封装了Map对象,用于管理控件的外观、显示属性和地图属性、管理、添加数据图层,装载地图文档,显示、绘制跟踪图层。它实现的主要接口有IMapControlDefault、IMapControl2

7、、 IMapControl3、 IMapControlEventsPageLayoutControl控件PageLayoutControl控件主要用于页面布局与制图。对应于ArcMap Desktop 应用中的“页面布局”视图,该控件封装了PageLayout类。PageLayoutControl控件不能添加地图图层或地理数据,必须通过MXD文件来加载需要处理的数据。PageLayoutControl控件主要实现 IPageLayoutControlDefault、 IPageLayoutControl、 IPageLayoutControl2、 IPageLayoutControlevent

8、s等接口。框架控件:TOCControl、ToolbarControl等图层树控件(TOCControl)TOCControl用来管理图层的可见性和标签的编辑。 TOCControl需要一个“伙伴控件”一起工作, “伙伴控件”可以是一个MapControl、 PageLayoutControl、ReaderControl、 SceneControl或者GlobeControl。“伙伴控件”能够在设计的时候通过TOCControl的属性页设置。或者在程序运行中通过SetBuddyControl方法来设置。“伙伴控件”都实现了ITOCBuddy接口。 TOCControl利用“伙伴控件”来显示交互

9、性的树结构目录,包括“伙伴控件”的地图、图层、符号等内容。工具栏控件(ToolbarControl)ToolbarControl需要与一个“伙伴控件”一起工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,SceneControl或者是GlobeControl。“伙伴控件”能够在设计的时候通过ToolbarControl的属性页设置。ToolbarControl实现了ARCGIS中的所有功能,如果想使这些功能进一步扩展,难度很大。三维控件:GlobeControl、SceneControl等创建菜单控件 & PageLayoutControl 的使用可

10、被各控件加载的文档类型ArcGIS Engine类库:DataSourcesFile包含用于基于文件数据源的GeoDatabase API实现。基于文件的数据源包括:shapefile、coverage、TIN、CAD、SDC、StreetMap和VPF。开发者不能扩展DataSourcesFile。GeoDatabase为ArcGIS支持的所有数据源提供了一个统一编程模型。定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口。开发者可以扩展地理数据库,以支持特定类型的数据对象。该类库还支持PlugInDataSource对象添加的自定义矢量数据源。地图控件与布局控件同步在Ar

11、cMap中,能够很方便地进行MapView和Layout View两种视图的切换,而且二者之间的数据是同步显示的。Arcgis Engine中,可以通过MapControl和PageLayoutControl的关联实现两者的同步显示。实现这一功能的核心接口是IObjectCopy,该接口提供了Copy方法用于地图的复制Overwrite方法用于地图写入PageLayoutControl控件的视图中。布局控件中添加图例和比例尺添加图例uid类别为esriCarto.legend添加比例尺需要将uid的类别设为” esriCarto.ScaleLine“或者esriCarto.ScaleText”

12、TOC控件图层操作&鹰眼功能设计Ilayer是所有图层类都实现的接口,该接口定义了所有图层的公共方法和属性;IBasicMap是IMap接口的一个子集,可用于管理Map对象中的Layer对象等。在ArcMap中,要调整图层的现实顺序,只需要简单的鼠标拖拽就可以完成,既简单又直观。但是TOCControl控件并未实现此功能。本实例即实现此功能。在本实例中主要利用TOCControl控件的OnMouseDown、OnMouseUp两个事件和HitTest()、Update()方法。OnMouseDown事件方法的主要功能是获取源图层pMovelayer。OnMouseUp事件方法的主要功能

13、是:1) 获取目标图层及其索引号;2) 利用IMap提供的Movelayer(pMoveLayer, Toindex)将源图层pMoveLayer移到目标图层(Toindex)的下方; 3)使用ITOCControl提供的Update()方法更新TOCControl控件中显示的内容。Envelope对象 Envelope也称包络线,是一个矩形区域,是每个几何形体的最小外接矩形。每个Geometry都拥有一个Envelope。 IEnvelope是包络线对象的主要接口。它定义了Xmax、Xmin、Ymax、Ymin、Height和Width等属性,用于获取或设置一个存在的包络线对象的空间坐标。I

14、Envelope接口提供了一些方法,例如:Expand:用于按比例缩放包络线的范围。Offset:是一个偏移方法,通过一个设定的(X,Y)移动包络线。CenterAt:通过改变包络线的中心点来移动包络线。PutCoords:通过指定的坐标点来构造包络线。Map对象 Map对象是ArcEngine的主要组成部分。Map对象既是数据的管理容器,同时也是数据显示的主要载体。 Map对象的主要接口有IMap、IActiveView、IActiveViewEvents、IMapBookmark、IGraphicsContainer、ITableCollection等。Imap接口主要用于管理Map对象中

15、的layer对象。常用的方法或属性包括:ActiveGraphicsLayer: 地图的活动图形图层,如果没有则会自动创建一个存放图形的图层。AddLayer:向地图中添加单个图层;AddMapSurround:向图层中添加辅助图形元素(如:比例尺、图例等)ClearLayer:从地图中移除所有图层。ClearSelection:清除地图选择集。DeleteLayer:从Map中删除图层。DeleteMapSurround:从地图中删除辅助图形元素。DistanceUnits:地图的距离单位。FeatureSelection:地图中选择的要素。LayerCount:地图中图层的数目。Layer

16、s:地图中的图层集合。IGraphicsContainer接口主要用于管理图形元素(包括图形元素和框架元素)。IGraphicsContainer接口提供了以下主要方法:AddElement: 添加元素、UpdateElement: 更新元素、DeleteElement: 删除元素IActiveView接口是Map对象最主要、最常用接口之一,该接口定义了Map对象的数据显示功能。可以在Map上绘制图形、改变视图范围等。 Arc Engine中PageLayout和Map对象都实现这个接口,分别 代表了布局视图和数据视图。 IActiveView接口提供的主要属性和方法有:Extent属性:用于

17、返回Map对象当前的视图范围,是一个Envelope对象。FullExtent属性:用于返回视图的全图范围。ScreenDisplay属性:用于指向一个ScreenDisplay对象PartialRefresh方法:该方法通过指定esriViewDrawPhase参数,可以实现不同方式的局部刷新。Layer对象 Map对象是用来装载地理数据的,而这些数据又是以图层的形式放入地图对象中,Layer作为地图图层的装载单位。 Layer本身没有装载数据,其作用是获得数据的引用,用于管理数据源的连接。 Ilayer是所有图层类都实现的接口。Point对象 Point对象代表一个0纬的具有X、Y坐标的几

18、何对象。 Ipoint接口定义了Point对象的属性和方法, Point可以使用PutCoords方法创建,也可以使用IConstructPoint接口来创建。Element对象 Element对象就是地图上不保存到数据库中的元素。例如DrawShape和DrawText方法绘制的图形都是Element对象。 IElement是所有图形元素和框架元素类都能实现的接口。 LineElement和MarkElement是最简单的图形元素。ILineElement接口只提供了一个Symbol属性,用于设置线的样式。IMarkElement接口也只提供一个Symbol ,用于设置点的样式。FillSh

19、apeElement是一个抽象类,该类泛化出CircleElement、EllipseElement、PolygonElement和RectanguleElement等。 该类实现了IFillShapeElement接口,通过接口提供的Symbol属性可以设置元素的样式, Symbol必须是Ifillsymbol对象。MapSurround对象 MapSurround是一个修饰地图的辅助图形元素对象,该对象会根据Map对象的变化而做出反应。例如地图视图范围发生变化后,ScaleBar对象也会自动调整。Color对象 Color对象是一个抽象类,它又泛化为5个类:CmykColor、GrayCo

20、lor、HlsColor、HsvColor和RgbColor,它们分别对应的接口为: ICmykColor、IGrayColor、IHlsColor、IHsvColor和IRgbColor。专题地图制作分层设色法使用的主要对象及接口: ColorRamp对象在专题地图制作中,我们常常会用到一个颜色带,而不是单一的颜色。 ArcEngine中ColorRamp类的对象就是用于产生颜色带,它实现了IColorRamp接口,定义了一系列颜色带公共方法。 ColorRamp还有4个子类,分别是:AlgorithmicColorRamp、RandomColorRamp、MultipartColorRam

21、p和PresetColorRamp。AlgorithmicColorRamp颜色带是通过指定起始和终止的颜色,中间的颜色通过规则计算,生成一组有序颜色带。RandomColorRamp颜色带是在给定的颜色范围内,随机生成一组颜色带,这个颜色范围是HSV颜色模型的。MultipartColorRamp颜色带是用多种叠加方法生成一组颜色带。PresetColorRamp颜色带是根据预设颜色进行调整,生成一组颜色带。Symbol对象Symbol就是用来在地图上修饰要素或者图形元素的对象。GIS中的离散实体分为3种:点、线、面。 ArcEngine中分别用MarkerSymbol、LineSymbol

22、和FillSymbol来表示,此外还有:TextSymbol用于文字标注,3Dchart符号用于显示饼图等3维对象。MarkerSymbol对象是用于修饰点对象的符号。它拥有12个子类:ArrowMarkerSymbol、BarChartSymbol、CharacterMarkerSymbol、PieChartSymbol等等。所有的MarkerSymbol类都实现了IMarkerSymbol接口,定义了Angle、Color、Size、Xoffset、Yoffset等属性。LineSymbol对象是用于修饰线型几何对象的符号。ILineSymbol作为其接口,定义了两个公共属性:Color和

23、Width。LineSymbol类是抽象类,该类泛化出8个类:CartographicLineSymbol、HashLineSymbol、MarkerLineSymbol、MultiLayerLineSymbol、PictureLineSymbol、SimpleLine3DSymbol、SimpleLineSymbol和TextureLineSymbol。GradientFillSymbol使用渐变颜色进行填充,该类实现了IGradientFillSymbol接口。 ColorRamp属性用于设置这个渐变填充符号的颜色带,在设置颜色条的时候,IntervalCount属性设置用户使用的颜色梯度

24、。 Style属性用于设置渐变填充的样式,系统提供了4种样式:esriGFSLine、esriGFSRectangular、esriGFSCircular和esriGFSBuffered,它们决定了符号是采用线、矩形、圆形或缓冲的填充方法。专题地图常用表示方法及设计几种常用表示法使用的主要对象及接口:FillSymbol对象DotDensityFillSymbol是一种基于数据的点密度填充符号。 它一般与DotDensityRenderer着色对象一起使用,由MarkerSymbol组成的随机位置点来显示数据属性,而面积内的点的个数则由DotDensityRenderer对象计算出来。 该对象

25、实现了IDotDensitySymbol接口,通过该接口可以设置填充符号的属性,如Marker的数量、尺寸、颜色等属性;BackgroundColor用于设置填充区域的背景颜色。Color属性设置点的颜色,OutLine属性用于设置点的外框。3DChartSymbol3DChartSymbol是一个抽象类。它包含3个子类:BarChart、PieChart、StackedChart。 3DChartSymbol实现了多个接口,如:IChartSymbol、IBarChartSymbol、IPieChartSymbol和IStackedChartSymbol。 IChartSymbol接口主要用

26、于计算一个ChartSymbol对象中的柱状和饼状部分的尺寸。 使用3D符号着色时,符号可能不止一种,这时可以使用ISymbolArray接口来管理一个着色对象中的多个参与着色的符号对象。BarChartSymbol对象实现了IBarChartSymbol接口,该对象使用不同类型的柱子来表示一个要素的不同属性。柱子的高度代表该属性值的大小。 VerticalBar属性用于确定使用水平还是垂直的柱子。Width和Spacing属性可以设置柱子间的空隙,Axes属性设置每个柱子的轴线。 PieChartSymbol对象实现了IPieChartSymbol接口。该接口定义了饼图的外观属性。例如Clo

27、ckWise属性确定饼图中的着色方向,True则对应顺时针分布;UseOutline属性设置为True时,可设置饼图外框轮廓线。AE中提供了多个着色对象用于生成专题图,可以使用标准着色方案,也可以自定义着色方案。标准着色方案都是对一个图层中的所有要素进行渲染。如果要对图层中的部分要素单独着色,则可以通过对这些要素绘制图形元素或将需着色的对象放入选择集中,为选择集创建一个新图层,然后对新图层着色的方法来实现。 SimpleRenderer 该方法是使用单一符号进行着色分类,不涉及对要素图层数据的分析处理。对同一图层中的所有元素使用同一种符号。ClassBreakRenderer 该方法是也称为分

28、级着色法,通过要素图层中要素的某个数值字段的值,根据用户设定将,这些值分为多个等级,每个级别用不同的Symbol显示。 ClassBreakRenderer对象实现了IClassBreakRenderer接口,该接口提供了分级显示的属性和方法,例如:Field属性设置分级着色的字段,BreakCount属性用于设置分级的数目。ChartRenderer ChartRenderer方法使用饼图或者柱状图来显示一个要素的多个属性。 该对象实现了IChartRenderer接口,该接口提供了ChartSymbol方法设置着色对象的符号,Label属性用于设置Legend的标签。 该方法可比较一个要素

29、的不同属性,因此需要获取着色图层的一个或多个字段,可通过RendererField对象来操作,该类实现了IRendererField接口,可通过AddField方法来添加字段。地图要素的选择 & 空间分析空间查询是GIS的基本功能之一,主要分为两类:基于属性查询和基于空间位置查询(空间关系查询)字符型字段查询基于字符型字段的语句通常使用“=”和“LIKE”进行SQL查询,若我们确切知道某字段的值,则可用“=”。例如查找美国佛罗里达州的表达式为:“State_name =Florida ” 。但大多数情况下不能确定某个要查询字段的确切值,那么通过使用“LIKE”进行模糊查询,例如查找美国

30、所有开头为A的州,则表达式为: “State_name” LIKE A% 。数值型字段查询基于数值型字段的语句通常使用比较操作符和运算符来完成,其中比较操作符包括>,<,>=,<=几种; 运算符包括+,-,*,/。 如查找面积大于1500 km2的林地的表达式为“Area > 1500 ” 。有时,一些特殊的查找仅仅靠字段值的比较是不能完成的,此时引入运算符来完成任务。 如查找人口密度小于或者等于25人/km2的城市的表达式为“POP2000 / Area<=25 ” 。高级查询应用中经常采用复合式多标准查询,条件之间用“AND”,“OR”和“NOT”来连接

31、,还有“IN” 操作符。如查找面积大于100 km2的红树林。此查询需满足两个条件:面积大于100 km2 ;树种是红树林。需要用AND操作符,AND代表所有的条件都为真,表达式为:“VEGETATION=红树林” AND “AREA>100 ” 。QueryFilter 对象与SpatialFilter 对象在关系型数据库中,查询条件是通过SQL 语句的Where 子语句来完成的。在ArcEngine 中不能直接使用SQL 语句,但ArcGIS Engine 提供了QueryFilter和SpatialFilter 两个过滤器对象来配合完成查询条件的设置,从而查询到想要的数据。Quer

32、yFilter 过滤器主要用于对属性数据查询条件的设置,它主要实现IQueryFilter 接口从而实现属性查询功能。AE中空间查询主要用到IspatialFilter接口,属性查询主要用到IqueryFilter接口。QueryFilter组件类指定一个属性查询过滤器,利用该过滤器可以从要素集中筛选出满足条件的对象。对应的AddField方法用于向输出字段集中添加一个字段,WhereClause用于获取或设置查询过滤条件。空间拓扑运算:空间拓扑描述的是地理对象的空间位置关系,即相邻、重合、连通等等。 拓扑是在同一个要素集(FeatureDataset)下的要素类之间的关系的集合。 在ESRI

33、提供的数据存储方式中,Coverage和GeoDatabase能够建立拓扑,而Shape格式的数据不能建立拓扑。AE中提供了ITopplogicalOperator接口用于拓扑运算。该接口通过对已存在的几何对象做空间拓扑运算,以产生新的结合对象。实现该接口的类有:Point、Multipoint、Polyline和Multipatch等等。ITopplogicalOperator接口在GIS开发中应用非常广泛,其主要的方法有:方法名称说明Boundary几何图形对象的边界Buffer对几何图形对象进行缓冲区空间拓扑操作Clip对几何图形对象进行裁剪空间拓扑操作ConstructUnion高效的

34、合并多个枚举几何对象与单个几何对象合并为单个几何对象,这对于大量几何对象的合并非常高效ConvexHull构建几何对象的凸边形Cut切割几何对象Difference一个几何图形减去它与另一个几何图形相交的部分Intersect两个同维度几何对象的交集部分Simplify使几何对象拓扑一致SymmetricDifference对称差分将两个几何图形的并集部分减去两个几何图形交集的部分Union合并两个同维度的几何对象为单个几何对象Boundary方法用于几何图形对象的边界操作。要注意的是多边形的边界是组成它的Polyline对象,Polyline对象的边界是组成它的顶点Point对象,Point

35、对象的边界则为空。Buffer方法用于几何图形缓冲区拓扑操作,Buffer方法用于给一个高级几何对象生成一个缓冲区。无论Polygon、Polyline还是Point,它们的缓冲区都是具有面积的几何对象。Clip方法用于对几何图形对象进行裁剪空间拓扑操作。它是用一个Envelope对象对一个几何对象进行裁剪,操作结果是几何对象被Envelope对象所包围的部分。Difference方法用于从一个几何图形中减去其与另一个几何图形相交的部分,生成两个几何对象的差集。ConstructUion方法用于将多个枚举对象与单个几何对象合并成为单个几何对象。Union方法用于将两个同维度的几何对象合并为单个

36、几何对象,Union方法和ConstructUion都用于合并几何对象,所不同的是Union合并两个同维度的几何对象,后者是将多个几何对象与单个几何对象合并为单个几何对象。Intersection方法用于获取两个同维度的几何对象的交集部分。SymmetricDifference(对称差分)方法可将两个几何图形的并集部分减去两个几何图形的交集的部分。什么是空间关系?空间关系是GIS的重要理论问题之一,在GIS数据建模、空间查询、空间分析、空间推理、制图综合、地图理解等过程中起着重要作用。目前国际上对空间关系的研究主要集中在空间关系的语义问题、空间关系描述、空间关系表达、基于空间关系的查询分析等方

37、面。空间关系主要包括距离关系、方向关系、拓扑关系及空间关系相似性等。 地理要素之间的空间区位关系可抽象为点、线(或弧)、多边形(区域)之间的空间几何关系 。空间关系运算主要用到Irelationaloperator和IProximityOperator 接口,通过该接口的方法获取两个几何对象之间的关系是否存在。IRelationalOperator几何对象之间都存在空间上的某种关联关系,例如:包含、相交、相等、相接等。 AE中这些关联关系都可以通过IRelationalOperator接口来获得。 关系运算是在两个几何对象之间进行,通过IRelationalOperator 的某个方法返回一个布尔值来说明这两个几何对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论