收藏 分销(赏)

ArcGIS-Engine基础实战.ppt

上传人:可**** 文档编号:778926 上传时间:2024-03-13 格式:PPT 页数:67 大小:4.52MB
下载 相关 举报
ArcGIS-Engine基础实战.ppt_第1页
第1页 / 共67页
ArcGIS-Engine基础实战.ppt_第2页
第2页 / 共67页
ArcGIS-Engine基础实战.ppt_第3页
第3页 / 共67页
ArcGIS-Engine基础实战.ppt_第4页
第4页 / 共67页
ArcGIS-Engine基础实战.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、-1-ArcGIS Engine基础基础介绍介绍Esri西安分公司西安分公司 姚啸姚啸-2-介绍内容介绍内容ArcGIS Engine简介简介创建第一个创建第一个ArcGIS Engine程序程序练习练习DEMO-3-ARCGIS ENGEINE简介简介-4-ArcGIS Engine Developer Kit开发包是组件,APIs 和工具的集合p开发人员可以用来创建高级的 GIS 应用p组件Engine 库 制图、绘制、选择、编辑等Control 库 地图控件、布局控件、工具条等pAPIsCOM、.NET、Java、C+p工具文档、开发工具-5-ArcGIS Engine功能框功能框架架p

2、基本服务应用层需要用到的 ArcObjects 核心对象几何图形的操作与显示p数据访问地理数据集,矢量,栅格数据p地图分析属性、空间查询,地理数据处理p地图显示渲染、标注、制图表达p开发组件各种应用层面上的 Control 及 Commands&Tools-6-Engine库库组件库组件库-7-ArcGIS Engine核心组核心组件库件库System SystemUICartoControlsGeometryDisplayGeoprocessingGeoprossorGlobeCoreOutputGeodatabaseDataSourcesGDBDataSourcesFileDataSour

3、cesOleDBDataSourcesRasterGeoDatabaseDistributedServer、GISClient扩展模块-8-常用名词常用名词uDocumentuMapuLayeruFeaturerLayeruFeatureClassuCursoruRowuGeometryuFeatureuElement-9-主要类库介绍主要类库介绍System&SystemUIpSystem System 库是 ArcGIS Engine框架中最底层的一个库,它包含了一些被其他库使用的一些组件。AoInitialize、Array、EnvironmentManager、FileStream、J

4、SONReader、ObjectCopy、PropertySet、Time、UIDpSystemUI SystemUI 库定义了一些在 ArcGIS 中被用户界面组件使用的类型。象 ICommand 和 ITool 这样的接口就在这里定义。IArcGISSingleSignon、ICommand、IOperationStack、ITool-10-主要类库介绍主要类库介绍CartopCarto Carto 库包含了为数据显示服务的对象。PageLayout 和 Map对象在这个库中,以及支持各种数据类型的图层,渲染。主要包括 Element、Renderer、Layer、Symbol 的具体实现

5、。AnnotationFeature、BasemapLayer、CacheInfo、CadLayer、FeatureLayer、GraphicFeature、GroupLayer、Legend、Map、MapDocument、MapImage、MapServer、MosaicLayer、Page、PageLayout、RasterLayer、RelateInfo、TerrainLayer、TinLayer、WCSLayer、WMSLayer-11-Carto库的库的Map、PageLayout、Element-12-Carto库的库的Layer-13-Carto库的库的Render-14-主要

6、类库介绍主要类库介绍ControlpControls控件库包含了应用程序开发中用到的控件,包括在控件中使用的命令和工具。CommandPool、ControlsEditingEditTool、ControlsEditingToolbar、CustomizeDialog、EngineEditor、EngineFeatureSnap、GlobeControl、HookHelper、LicenseControl、MapControl、PageLayoutControl、SceneControl、Snapping、Symbology、TOCControl、ToolbarControl、ToolbarI

7、tem、-15-主要类库介绍DisplaypDisplay 显示库包含了支持在输出设备上显示图形的组件,屏幕显示,符号,颜色等都在这个库中定义。BalloonCallout、ScreenDisplay绘图跟踪器:EngineRotateTracker、EnvelopeTracker、字体、颜色:RgbColor、CmykColor点、线、面符号样式:简单符号、图片符号、专题符号制图表达:RepresentationRule、符号库:ServerStyleGallery、ServerStyleGalleryItem-16-17-主要类库介绍GeometrypGeometry 几何库包含了核心的几

8、何对象,比如点,线,面等。在几何库中还定义和实现了空间参考的对象,包括投影坐标系和几何坐标系。单位:AngularUnit、LinearUnit、几何体:点、多点、线、曲线、圆弧、椭圆弧、多边形、矩形、多面空间参考:Datum、GeographicCoordinateSystem、Projection、ProjectedCoordinateSystem、Spheroid、ITransform2D、ITransform3D、ITransformation、-18-19-主要类库介绍GeodataBasepGeoDatabase GeoDatabase 包含了所有相关数据组织的定义类型。要素,表,

9、网络,TIN 都在这个库中定义。其中一些类型的实现在各自的数据来源的库中。IArchivableClass、IAttachment、IDataStatistics、IFeature、IFeatureClass、IFeatureCursor、IFeatureDataset、IFeatureWorkspace、IField、IGeometricNetwork、INetwork、INetworkDataset、IPixelBlock、IQueryFilter、IRaster、IRasterCursor、IRasterDataset、IRelationship、IReplica、ISelectionS

10、et、ISurface、ITin、ITopology、IVersion、-20-主要类库介绍GeodataBasepDataSourcesFile 包含了为支持的矢量数据格式提供的工作空间工厂和工作空间。ICoverageFeatureClass、ICadDrawingLayers、IGPLayer、ArcInfoWorkspaceFactory、CadWorkspaceFactory、SDCWorkspaceFactory、ShapefileWorkspaceFactory、TinWorkspaceFactory、VpfWorkspaceFactorypDataSourcesRasterDa

11、taSourcesRaster 包含了为基于文件方式的栅格数据提供的工作空间工厂和工作空间。栅格函数、MosaicFunction、PixelBlock、RasterBand、RasterStatistics、RasterWorkspace-21-主要类库介绍GeodataBasepDataSourcesGDB包含了为存储在数据库中的矢量和栅格数据提供的工作空间工厂和工作空间。AccessWorkspaceFactory、FileGDBWorkspaceFactory、SdeWorkspaceFactory、SqlWorkspaceFactorypDataSourcesOleDB为通过 Ole

12、DB 方式提供的数据提供空组空间。ExcelWorkspaceFactory、FdoAdoConnection、OLEDBWorkspaceFactory、TextFileWorkspaceFactorypGeoDatabaseDistributed包含了需要执行的离线编辑的 GeoDatabase 对象。ICheckIn、ICheckOut、IDataChanges、IReplicationAgent、IReplicaDataChanges-22-23-Control库库组件库组件库-24-开发控件开发控件pArcGIS Engine 中提供了丰富的开发控件 LicenseControl M

13、apControl PageLayoutControl TOCControl ToolbarControl SymbologyControl GlobeControl SceneControl-25-MapControluMapControl u封装封装Map coclassu绘制单绘制单Data Frameu用来分析和浏览用来分析和浏览u暴露鼠标和绘制事件暴露鼠标和绘制事件u装载地图文档和其它文件装载地图文档和其它文件u设置当前工具设置当前工具u库库uMapControl.ocx-26-MapControl数据的访问 IMapControl3/IPageLayoutControl2uChec

14、kMxFileuLoadMxFileuReadMxMapsu关联map对象事件IMapControlEvents/IPageLayoutControlEventsuOnAfterDraw,OnBeforeScreenDraw,OnAfterScreenDraw,OnExtentUpdated,OnMouseDown/Up/Move,OnKeyDown/Up,OnOleDrop,OnViewRefreshed,OnMap/PageReplaced-27-MapControl对象对象通过通过Map你可以访问所有的对象你可以访问所有的对象LayersRenderersSymbolsFeatureCl

15、assesWorkspaces-28-使用使用map和和layers属性属性提供直接访问提供直接访问Map和和Layer对象的方法属性对象的方法属性IMapControl3AddLayerFromFile,AddShapeFile,AddLayer,DeleteLayer,MoveLayerTo,Layer,Map-29-设置地图的可视化区域设置地图的可视化区域控制显示的可视区域控制显示的可视区域可以设置多种可以设置多种shapes(geometries)IMapControl3VisibleRegion axMapControl1.VisibleRegion=extent-30-在地图上显示

16、提示在地图上显示提示可以为图层设置提示可以为图层设置提示步骤步骤1.设置ILayer:ShowTips2.在鼠标移动时显示提示文本使用使用ToolTip控件来显示提示文本控件来显示提示文本ILayer layer=axMapControl1.get_Layer(0);layer.ShowTips=true;ToolTip tootip1=new ToolTip;tootip1.SetToolTip(axMapControl1,这是一个提示这是一个提示);-31-PageLayoutControl控控件件uPageLayoutControl u封装封装PageLayout coclassu绘制地

17、图元素绘制地图元素u创建版面视图创建版面视图 u打印打印u设置当前工具设置当前工具u加载地图文档加载地图文档u库库uPageLayoutControl.ocx-32-PageLayoutControl控控件件使用使用PageLayout 来访问其它对象来访问其它对象Elements(例子代码例子代码 MapElements)FrameElementsMapFrameMapSurroundFrameGraphicElementsPictureElements-33-使用使用elements关于关于elements有很多高级的成员函数有很多高级的成员函数IPageLayoutControlAddE

18、lementFindElementByNameLocateFrontElementGraphicsContainer-34-地图上显示查询结果地图上显示查询结果element查询结果的渲染查询结果的渲染 ISimpleMarkerSymbol simpleMarkerSymbol=new SimpleMarkerSymbolClass();simpleMarkerSymbol.Color=rgb;simpleMarkerSymbol.Size=30;IMarkerElement markerElement=new MarkerElementClass();markerElement.Symbo

19、l=simpleMarkerSymbol;element=(IElement)markerElement;element.Geometry=point;graphicsContainer=(IGraphicsContainer)map;graphicsContainer.AddElement(element,0);-35-使用地图文档使用地图文档MXD 文件是结构化的存储文档文件是结构化的存储文档(保存路径保存路径)通常由通常由ArcMap创建创建包含持久对象包含持久对象Maps,Layers,PageLayout,MapDocument 使以下成为可能使以下成为可能读取 mxd,lyr,mx

20、t,and pmf files写新的 mxd files 访问map document的内容-36-IMapDocument与与mxd读取和写地图文档的成员函数读取和写地图文档的成员函数Open:打开已经存在的地图文档(mxd,mxt,lyr,pmf)SaveAs:保存当前文档到新的文件CheckMxFile:检查mxd是否存在LoadMxFile:加载mxd文档ReadMxMaps:读mxd文档New:新建mxd文档Save:保存mxd文档-37-加载加载mxdLoadMxFile if(openFileDialog2.ShowDialog()=DialogResult.OK)string

21、FilePath=openFileDialog2.FileName;if(axMapControl1.CheckMxFile(FilePath)axMapControl1.MousePointer=ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerHourglass;axMapControl1.LoadMxFile(FilePath,0,Type.Missing);axMapControl1.MousePointer=ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointer

22、Default;else MessageBox.Show(FilePath+is not a vaild ArcMap document);return;-38-访问地图文档中的对象访问地图文档中的对象控件可以直接引用对象控件可以直接引用对象(Map and PageLayout)或访问自己的拷贝或访问自己的拷贝Reference直接Copy使用ObjectCopy 避免共享引用深度复制 IMapDocument mapdoc=new MapDocument();axMapControl1.Map=mapdoc.get_Map(0);IObjectCopy objectcopy=new Obj

23、ectCopyClass();IPageLayout pagelayout=objectcopy.Copy(mapdoc.PageLayout)as IPageLayout;-39-框架控件框架控件ToolbarControl 和和 TOCControl 被设计成和其它控件协同工作被设计成和其它控件协同工作 通过一个通过一个buddy控件自动捆绑在一起控件自动捆绑在一起根据彼此的状态通信和同步根据彼此的状态通信和同步例子:active tool,layer visibilityBuddy ControlToolbarTOC-40-命令和工具命令和工具提供超过 100 个工具和命令-41-42-

24、TocControl显示所有的图层和符号显示所有的图层和符号Simple symbols,renderersGroup layers控制图层可视性控制图层可视性必须调用必须调用SetBuddyControl库库TOCControl.ocx-43-ToolbarControl自定义自定义 commands,tools 和和 menus的容器的容器允许命令和以下控件对象进行交互允许命令和以下控件对象进行交互Map,PageLayout,Scene,和 Globe必须调用必须调用 SetBuddyControl库库ToolbarControl.ocx-44-制图控件命令制图控件命令系统提供的控件命令

25、系统提供的控件命令,工具工具,工具条工具条,和菜单和菜单命令和工具命令和工具漫游,缩放,打开地图,图形绘制,工具条工具条要素选择,绘图,地图导航,和 pagelayout 菜单菜单要素选择和地图浏览库库 esriCommandControls.olb参考参考对象模型图或技术文档-45-创建第一个创建第一个ARCGIS ENGEINE应用应用程序程序创建一个控件应用程序创建一个控件应用程序使用控件成员使用控件成员使用工具条和使用工具条和TOC控件控件加载加载 MXD 文档文档保存保存mxd文档文档打开打开shp-46-开发环境开发环境pCOM Visual Studio 6.0(VB、VC+)、

26、DelphiArcGIS Engine 10 不再支持 VB 6.0p.NETVisual Studio.NET(VB.NET、C#、VC+.NET)ArcGIS Engine 10.1 不支持VS2008pC+Visual Studio 6.0、Borland C+Builder、C+pJavaJBuilder、Eclipse、JDK-47-开发环境开发环境安装安装VS2012安装安装ArcGIS SDK Developer Kit&ArcGIS Engine-48-许可授权许可授权-49-创建第一个创建第一个ArcGIS Engine应用程序模板应用程序模板新建新建MapControl工程

27、工程-50-创建第一个创建第一个ArcGIS Engine应用程序模板应用程序模板-51-创建第一个创建第一个ArcGIS Engine应用程序模板应用程序模板-52-增加一个菜单功能增加一个菜单功能-53-创建自定义应用程序创建自定义应用程序-54-创建自定义应用程序创建自定义应用程序添加控件添加控件-55-创建自定义应用程序创建自定义应用程序为为toolbar添加工具添加工具-56-控件绑定控件绑定将将toolbar和和mapcontrol绑定绑定-57-注意:许可绑定注意:许可绑定 if(!RuntimeManager.Bind(ProductCode.Engine)if(!Runtim

28、eManager.Bind(ProductCode.Desktop)MessageBox.Show(Unable to bind to ArcGIS runtime.Application will be shut down.);return;-58-打开打开mxdif(openFileDialog2.ShowDialog()=DialogResult.OK)string FilePath=openFileDialog2.FileName;if(axMapControl1.CheckMxFile(FilePath)axMapControl1.MousePointer=ESRI.ArcGIS.C

29、ontrols.esriControlsMousePointer.esriPointerHourglass;axMapControl1.LoadMxFile(FilePath,0,Type.Missing);axMapControl1.MousePointer=ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault;else MessageBox.Show(FilePath+is not a vaild ArcMap document);return;-59-打开打开shp打开打开shp/axMapControl1.Ma

30、p.ClearLayers();IWorkspaceFactory pWorkspaceFactory;IFeatureWorkspace pFeatureWorkspace;IFeatureLayer pFeatureLayer;this.openFileDialog1.Filter=shp文件文件|*.shp;if(this.openFileDialog1.ShowDialog()=DialogResult.OK)this.textBox1.Text=this.openFileDialog1.FileName.ToString();string strFullPath=openFileDi

31、alog1.FileName;if(strFullPath=)return;int Index=strFullPath.LastIndexOf();string filePath=strFullPath.Substring(0,Index);string fileName=strFullPath.Substring(Index+1);/打开工作空间并添加打开工作空间并添加shp文件文件 pWorkspaceFactory=new ShapefileWorkspaceFactoryClass();/创建工作空间创建工作空间 pFeatureWorkspace=(IFeatureWorkspace

32、)pWorkspaceFactory.OpenFromFile(filePath,0);/打开矢量数据打开矢量数据所在的空间所在的空间 pFeatureLayer=new FeatureLayerClass();/创建一个要素图层创建一个要素图层 pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass(fileName);/将要素类加如到要素图将要素类加如到要素图层层 pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;/将要素类的名称赋值给要素图层将要素类的名称赋值

33、给要素图层 axMapControl1.Map.AddLayer(pFeatureLayer);/将图层加到地图控件将图层加到地图控件 axMapControl1.ActiveView.Refresh();/刷新地图刷新地图-60-保存保存mxd IMapDocument mapDoc4=new MapDocumentClass();mapDoc4.New(F:/teuu5.mxd);IMxdContents mxdContents=axMapControl1.Map as IMxdContents;mapDoc4.ReplaceContents(mxdContents);mapDoc4.Sa

34、ve(false,true);mapDoc4.Close();-61-练习练习DEMO-62-打开数据源打开数据源打开打开gdbIWorkspaceFactory workspaceFactory=new FileGDBWorkspaceFactoryClass();workspace=workspaceFactory.OpenFromFile(“D:/data.gdb”,0);IFeatureWorkspace pFeatWorkspace=workspace as IFeatureWorkspace;IFeatureClass pFeatureClass=pFeatWorkspace.Op

35、enFeatureClass(Water)打开打开sdeIPropertySet propertySet=new PropertySetClass();propertySet.SetProperty(SERVER,server);propertySet.SetProperty(INSTANCE,instance);propertySet.SetProperty(DATABASE,database);propertySet.SetProperty(USER,user);propertySet.SetProperty(PASSWORD,password);propertySet.SetProper

36、ty(VERSION,version);IWorkspaceFactory workspaceFactory=new SdeWorkspaceFactoryClass();workspace=workspaceFactory.Open(propertySet,0);-63-属性查询属性查询ILayer layer=axMapControl1.get_Layer(0);IFeatureLayer featureLayer=layer as IFeatureLayer;/获取获取featureLayer的的featureClass IFeatureClass featureClass=featur

37、eLayer.FeatureClass;IQueryFilter queryFilter=new QueryFilterClass();IFeatureCursor featureCusor;string filter=DLMC=旱地旱地;queryFilter.WhereClause=filter;featureCusor=featureClass.Search(queryFilter,true);if(featureCusor!=null)IFeature fea=featureCusor.NextFeature();while(fea!=null)if(featureCusor=null

38、)return;IGeometry geom=fea.Shape;IPolygon polygon=geom as IPolygon;Common.renderPolygon(polygon,axMapControl1.ActiveView,axMapControl1.Map);fea=featureCusor.NextFeature();查询所有旱地查询所有旱地-64-绘制多边形绘制多边形IFillShapeElement pPolygonElement;ISimpleFillSymbol pSimpleFillSymbol=new SimpleFillSymbolClass();IPoly

39、gon pPolygon=new PolygonClass();IRubberBand pRubberBand=new RubberPolygonClass();ISimpleLineSymbol pSimpleLineSymbol=new SimpleLineSymbolClass();pPolygonElement=new PolygonElementClass();if(e.button=1)pPolygon=(IPolygon)pRubberBand.TrackNew(axMapControl1.ActiveView.ScreenDisplay,null);pSimpleLineSym

40、bol.Width=2;pSimpleLineSymbol.Style=esriSimpleLineStyle.esriSLSSolid;pSimpleLineSymbol.Color=Common.GetRGBColor(46,24,63);pSimpleFillSymbol.Color=Common.GetRGBColor(11,200,145);pSimpleFillSymbol.Outline=pSimpleLineSymbol;IElement pElement=(IElement)pPolygonElement;pElement.Geometry=pPolygon;pPolygon

41、Element.Symbol=pSimpleFillSymbol;IGraphicsContainer pGraphicsContainer=(IGraphicsContainer)axMapControl1.Map;pGraphicsContainer.AddElement(IElement)pPolygonElement,0);axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);地图点击绘制多边形,并渲染地图点击绘制多边形,并渲染-65-空间查询空间查询ISpatialF

42、ilter spatialFilter=new SpatialFilter();spatialFilter.Geometry=pPolygon;spatialFilter.GeometryField=SHAPE;spatialFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects;IFeatureLayer featureLayer=axMapControl1.get_Layer(0)as IFeatureLayer;IFeatureClass feaClass=featureLayer.FeatureClass;IFeatu

43、reCursor featureCursor=feaClass.Search(spatialFilter,false);IFeature feature=featureCursor.NextFeature();while(feature!=null)axMapControl1.Map.SelectFeature(featureLayer,feature);feature=featureCursor.NextFeature();根据上一步骤的多边形做根据上一步骤的多边形做相交查询,查询与多边形相交查询,查询与多边形相交的地块,并高亮相交的地块,并高亮-66-出图出图pActiveView.Output(g.GetHdc().ToInt32(),dpi,ref rect,pEnvelope,null);-67-ArcGIS Resources Center:Esri中国社区:中国社区: Online:http:/ http:/ http:/ ArcGIS.com http:/

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服