ArcEngine地图基本操作的实现
- 格式:ppt
- 大小:2.80 MB
- 文档页数:4
ArcEngine实验内容实验一:熟悉ArcEngine中的TocControl、ToolbarControl、MapControl基本控件,创建简单的ArcEngine开发框架,能进行放大、缩小、平移、全图,并具有鹰眼功能;实验二:自定义简单功能的Commands、Tools,并使用ToolbarControl加载到工具栏上;实验三:使用ISegmentCollection、IPointCollection、IGeometryCollection接口,在地图上构建IPoint、Line、Polyline、Polygon、IEnvelope、IMultipoint、Path 对象,可以直接添加到一个图层中,也可以在地图上以Element元素的方式添加到地图上。
实验四:在TocControl控件中添加快捷菜单,当在某一图层上右击弹出快捷菜单,快捷菜单中实现对点、线、面图层分别进行符号化。
系统必须自动能判断当前图层是那种类型的图层(如点、线、面),实现对这些图层的简单符号化和高级符号化的功能。
1.调用ArrowMarkerRender对象、CharacterMarkerSymbol对象、PictureMarkerSymbol对象、MultiLayerMarkerSymbol对象实现点状符号化。
2.调用、CartographicLineSymbol对象、PictureLineSymbol对象实现线状符号化。
3.调用LineFillSymbol对象、MarkerFillSymbol对象、GradientFillSymbol对象实现面状符号化。
4.使用IFormattedTextSymbol对象、MarkerTextBackground对象、BallonCallout对象、LineCallout对象实现向MapContrl控件中添加符号化处理的文字。
5.对每个图层能进行SimpleRenderer(简单渲染)、ClassBreaksRenderer(分级渲染)、UniqueValueRenderer(按值渲染)、BiUniqueValueRenderer (双变量渲染)、ProportionalSymbolRenderer (梯度渲染)、ChartRenderer (图表渲染)、DotDensityRenderer (点密度渲染)、ScaleDependentRenderer (按比例尺渲染)图层的符号化和渲染的参数尽可能使用一个对话框,在对话框中实现对图层颜色、样式、文字字体的设置,按确定Button后实现选定图层的要素的符号化和渲染。
ArcgisEngine实现对地图的放、缩小和平移:个人觉得平移,不过网上的都漫游,通俗的说就把一个地图对象从一边拉到另一边而已。
就看人说话吧.具体实现:一、引入命名空间using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.Controls;二、代码实现.int flag = 0;private void 放ToolStripMenuItem_Click(object sender, EventArgs e){axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPageZoomIn; flag = 1;}private void 缩小ToolStripMenuItem_Click(object sender, EventArgs e){axMapControl1.MousePointer =esriControlsMousePointer.esriPointerPageZoomOut;flag = 2;}private void 平移ToolStripMenuItem_Click(object sender, EventArgs e){axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPan;flag = 3;}private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e){IEnvelope ipenv= axMapControl1.TrackRectangle();if(flag==1){axMapControl1.Extent = ipenv;}else if(flag==2){ipenv = axMapControl1.Extent;ipenv.Expand(2, 2, true);axMapControl1.Extent = ipenv;}else if(flag==3){ipenv= axMapControl1.Extent ;axMapControl1.Pan();}}}三、补充:在AE中,在地图控件中.jpg,.bmp类型图层文件时,调用方法会简单很多的.IRasterLayer rasterLayer = new RasterLayer();rasterLayer.CreateFromFilePath(str);axMapControl1.ALayer(rasterLayer, 0);其中,str文件路径.。
ArcGIS Engine基础开发教程(5)——学习地图查询地图查询地图查询、统计是一个GIS系统的基本的功能模块,实际上统计功能的前提也是通过查询获取结果以文字或者图表等报表的形式展现查询结果数据。
地图查询有两种类型的查询:1.空间查询:在地图上设置一定范围,查询这一范围内的要素。
例如在地图上画一范围查询这一区域内的所有消防栓,这一范围的所有消防栓高亮显示(或者其他显示方式)并展现出所有的消防栓的属性信息。
2.属性查询:通过一定的查询条件获取目标要素。
例如我们需要查询中国行政区上人口大于5000万,同时GDP大于1万亿的省份,通过执行查询,符号条件的省份高亮显示(或者其他显示方式)并展现出这些省份的属性信息。
ArcGIS Engine9.3为开发者提供了无需写代码即可进行查询功能的Identify工具,但是这个工具是一个通用的信息查询新工具。
而开发者通常需要自己开发一套符合自己业务需求更加灵活的查询功能模块,甚至一些功能不仅仅是查询信息,很多编辑编辑功能以及和业务相结合的功能开发都用到查询功能。
所以很有必要了解ArcGIS Engine的查询机制。
5.1目标1.熟悉Cursor,FeatureCursor对象,使用IFeatureCursor接口2.熟悉QueryFilter, SpatialFilter对象使用IQueryFilter,ISpatialFilter接口3.熟悉要素选择集SelectionSet对象,会使用IFeatureSelection,ISelectionSet接口4.开发一个属性查询小功能Demo, 获取符号查询条件的Feature,并IFeatureLayerDefinition接口创建一个新的要素图层加载到Mapcontrol上5.开发一个空间多边形查询功能的小Demo, 学会创建内存半透明图层用于显示选择范围5.2准备工作1.IDE:Visual Studio 2005/20082.ArcGIS Engine Developer kit 9.33.准备一份用于查询的的矢量数据(文章内有说明)5.3Cursor对象Cursor(游标)本质上是一个指向数据的指针,本身并不包含数据内容,它是连接到Row对象或要素对象的桥梁。
作者简介黄勇奇(1976-),男,江西高安人,博士,讲师,从事地图学与地理信息系统方面的理论与应用研究。
收稿日期2007!01!19专题地图(ThematicMap)是着重表示一种或几种自然或社会经济现象的地理分布,或强调表示这些现象的某一方面特征的地图。
专题制图是按照特定专题渲染地图的过程。
专题通常使用数据集中的一组或多组数据,并利用颜色渲染、填充图案、符号、直方图和饼状图表示数据,根据数据中的特定值指派这些颜色、图案或符号,从而创建不同的专题地图。
GIS脱胎于计算机地图制图,但又以其非凡的地理空间分析功能改善和优化了制图过程,不仅提高了制图效率,还能提高现有数据利用率。
ArcGISEngine简称ArcEngine,ArcEngine是由ESRI公司提供的基于ArcObject的面向开发的嵌入式GIS产品。
应用ArcEngine做GIS应用开发时彻底脱离了ArcGIS桌面产品ArcMap,提高了开发效率,为GIS用户提供了一个低成本、可定制的、轻量级的GIS应用选择。
它是由一组核心ArcObject包组成,其对象是与平台无关的,它能够在各种编程接口中调用;开发人员能够通过它提供的强大的工具构建定制的GIS和制图应用。
在ArcEngine产品中,它有着非常丰富的专题地图的制作功能,能以专题符号化方法显示地理特征要素。
1ArcEngine的专题地图制作功能的实现与开发实例在ArcEngine中主要提供了分别对应着制作单值专题图,唯一值专题地图、分段专题图、等级符号图、点密度图、柱状图/三维柱状图、饼状图/三维饼图、堆积图/三维堆积图功能的ISimpleRenderer、IUniqueValueRender、IClassBreaksRenderer、IPoportionalSymbolRenderer、IDotDensityRenderer、IPieChartRenderer(I3DChartSymbol)、IBarChartSymbol(I3DChartSymbol)、IStackedChartSymbol(I3DChartSymbol)的渲染接口,它们主要存在于ESRI.ArcGIS.Carto库中,在开发时要用Imports语句将它引用进来。
ArcGIS Engine基础开发教程(3)——学习地图和地图布局Engine, ArcGIS, 教程, 地图, 基础本章是ArcGIS Engine基础开发教程的第三章,主要给大家大致讲解了,地图和地图布局的相关对象。
这些对象非常重要,如果这些基本对象都不熟悉就开始搞ArcGIS Engine开发是不科学的也走不远的。
3地图和地图布局3.1地图3.1.1Map对象Map对象是ArcGIS Engine的主要对象,本章将给大家介绍地图组成结构,如何创建地图,如何对组成地图的对象进行操作,在介绍这些内容时尽量结合ArcMap学习效果会更好。
在Map对象上能显示的图形有两类一类是地理数据,一类是元素。
地理数据包括矢量类型的要素数据,栅格数据,Tin等表面数据等,这些数据都保存在Geodatabase或数据文件如shapefile中,它们是用于GIS分析制图的源数据;图1而元素是另一种可以显示在Map上的对象,它分为两部分一类是图形元素,一类是框架元素,图形元素可以显示出来,而框架元素充当了“容器”的角色。
在ArcMap中可以使用“Draw”工具在Map上直接绘制一个矩形,圆形,文本等对象,在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这些都是图形元素。
图2在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是一个框架元素。
Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮演了数据显示器的角色,当加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围,刷新地图的时候它是数据的显示者。
Map对象主要实现的接口由IMap,IGraphicContainer,IActiveView,IMapBookmark等接口。
IMap接口主要用于管理Map对象中的Layer对象,要素选择集对象,MapSourround对象,空间参考等对象。
ArcGIS Engine基础开发教程(0)——目录1创建第一个ArcGIS Engine桌面应用程序 (6)2几何对象与空间参考 (15)3地图和地图布局 (44)4图层符号化 (64)5地图查询 (91)6.空间分析 (110)7地图输出... 121、下周讲推出第三章和第四章内容。
我只是给大家介绍了入门的知识以及经验,最重要的还是自己敲代码感悟。
很多人是不熟悉ArcGIS Desktop就开始从网上Down代码修改代码开始了自己的开发之旅,包括我,我大学时代是MapInfo的粉丝,一直没学过ArcGIS。
这是非常不科学的,因为ArcGIS Desktop就是从AO开发起来的,你只有掌握了ArcGIS Desktop的使用,才能很容易理解AO接口提供的功能。
实际上ArcGIS Engine二次开发说白了就是在ArcGIS Desktop所提供的功能和业务相结合进行的创新性开发。
所以熟悉ArcGIS Desktop以及ArcGIS数据模型对学习ArcGIS Engine二次开发非常重要!祝大家学习愉快!ArcGIS Engine基础开发教程(1)——创建第一个ArcGIS Engine桌面应用程序ESRI BBS GIS大讲堂首发,转载请注明出处1创建第一个ArcGIS Engine桌面应用程序ArcGIS Engine9.3提供了丰富的GIS组件方便用户快速的定制开发一个GIS应用程序,无需写代码即可实现GIS数据加载,地图操作等功能甚至可以实现高级编辑以及空间分析功能。
接下来使用ArcGIS Engine9.3提供了MapControl Application模块来创建第一个ArcGIS Engine桌面应用程序,并为桌面应用应用程序提供编辑功能。
1.1目标1.创建第一个ArcGIS Engine桌面应用程序2.为应用程序添加编辑功能。
1.2准备工作1.IDE:Visual Studio 2005/20082.ArcGIS Engine Developer kit 9.33.制作ArcGIS实验数据地图文档MXD1.3设计流程图1.4制作地图文档在ArcMap中加载数据后,点击保存生成一个*.mxd地图文档,如图1所示:图11.5创建第一个ArcGIS Engine桌面应用程序在Visual Studio2008中新创建项à选择àArcGISàEngineàMapControl Application,点击确定,如图2所示:图2可以看到在Visual Studio中看到在新创建的项目中自动加载了ToolBarControl、TocControl、LicenseControl、MapControl四个ArcGIS Engine控件以及一个.NET ToolStripMenuItem菜单控件,如图3所示:图31.6加载MXD地图文档数据单击F5键运行程序,然后单击打开MXD地图文档按钮打开MXD地图文档,如图4所示:图4可以看到应用程序把MXD地图文档加载到MapControl地图上,可以使用ToolbarControl 提供的常用GIS功能如:放大,缩小,信息查询等功能。
ArcGIS Engine二次开发——基础篇1ArcGIS Engine二次开发——基础篇1.1第一个简单的ArcGIS Engine地图显示程序这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。
如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二次开发大门的极好例子,将从零开始引导您一步一步完成任务。
1.1.1创建一个新的工程首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个Visual C#的Windows应用程序,之后更改项目名称为“地图浏览”,更改文件的路径为个人实习文件夹,点击“确定”即可。
图1新建项目对话框选中项目“地图浏览”中的窗体“Form1”,修改其Name属性为“MainForm”,Text属性为“地图浏览”,图2窗体命名1.1.2添加控件及引用点击编译器最左侧的“工具箱”(不存在时可通过“视图”“工具箱”打开),在弹出的选择项中找到“ArcGIS Windows Forms”项,单击其中的MapControl,之后在Form1的空白处单击鼠标左键不放并拖拽鼠标,直到调整MapControl到合适的大小再松开鼠标(您也可以直接在工具箱中双击MapControl,该控件则会自动加入到Form1中)。
用同样的方法,再将LicenseControl添加到Form1中。
图3 打开工具箱图4工具箱如果您在工具箱中找不到MapControl,则请依次尝试以下两种解决方案。
首先单击工具栏,待工具箱弹出之后,在工具箱的任意位置上单击鼠标右键,从弹出菜单中选择“重置工具箱”。
如果这一步操作之后仍然无法看到MapControl,则在工具箱的任意位置上单击鼠标右键,找到“常规”选项卡,然后在“常规”选项卡上单击鼠标右键,在弹出菜单中单击“选择项(I)…”,在弹出的对话框中选择“.NET Framework组件”,找到“LicenseControl”和“MapControl”,将这两项前的复选框打上勾,最后点击确定即可(如果在“.NET Framework 组件”这个面板中找不到这两项,则选择“COM 组件”面板,在“ESRI LicenseControl”和“ESRI. MapControl”前面打勾)。
实验一基于ArcGIS Engine的程序设计入门实验数据:"country.shp"、"rivers.shp"、"cities.shp"实验内容:1.基于ArcGIS Engine开发一个简单的系统(基于控件)2.地图操作的基本功能实现(基于代码)3.地图操作基本功能的简单合成1.基于ArcGIS Engine开发一个简单的系统(基于控件)1)设置VB选项,明确变量类型启动Visual Basic6,从“工具”菜单中选择“选项”项,在“选项”对话框中点中“要求变量声明”2)控件加载(1)加载ArcGIS Engine控件①打开Visual Basic,新建一个工程,在【工程】菜单中选中【部件】菜单,在弹出的“部件”对话框中选中“ESRI Controls”复选框,点击“确定”按钮完成ArcGIS Engine 控件的加载②在【工程】菜单中选中【引用】,在列表中添加以下常用的类库引用:●ESRI Carto Object Library●ESRI Display Object Library●ESRI Geometry Object Library●ESRI System Object Library●ESRI SystemUI Object Library(2)在窗体中嵌入ArcGIS Engine控件双击工具箱中的工具图标,将MapControl控件添加到窗体中,用同样的方法将TOCControl、ToolbarControl、LicenseControl都添加到窗体上,并调整好大小和位置。
3)加载地图文档(1)利用MapControl控件的属性加载地图文档或图层①右键单击MapControl控件,在弹出的对话框中选择【Properties】②在弹出的属性页窗体中添加地图文档或图层③右键单击TOCControl控件,在弹出的菜单中选择【Properties】,在弹出的对话框中点击【Buddy】下拉菜单,选择要绑定的地图控件MapControl1④运行程序,显示结果(2)通过代码加载地图文档在Form的Load事件中添加如下代码,既可以通过代码的方式在地图控件中添加地图文右键单击ToolbarControl控件,在弹出的菜单中选择【Properties】,在弹出的对话框中点击【Buddy】下拉菜单,选择要绑定的地图控件MapControl14)地图操作基本功能实现(基于ToolbarControl控件实现)(1)设置ToolbarControl控件的属性(2)运行程序,显示结果2.地图操作的基本功能实现(基于代码)1)移动地图代码2)拉框放大地图3)拉框缩小地图4)中心放大地图5)中心缩小地图6)全图显示7)历史视图切换①前一视图②后一视图3.地图操作基本功能的简单合成1)使用ToolBar来合成地图操作的基本功能请同学们使用ToolBar来合成地图操作的基本功能,实现的界面如下图所示:这些图片位于“实验一基于ArcGIS Engine的程序设计入门\小图标”文件夹中。
基于ArcGIS Engine的地图制图系统开发与实现作者:王封祚来源:《科技探索》2013年第03期摘要:基于ESRI公司的ArcGIS Engine组件开发了地图制图系统,实现图面整饰,打印输出等功能。
关键词:地图制图 C# ArcGIS Engine1、概述自二十世纪末以来,环境、资源、可持续发展成为全球的焦点问题,空间信息的可视化显得尤为重要,而空间信息可视化最基本的表达方式就是地图。
地图作为人类形象思维的一种方式,地理学的第二语言,源远流长又方兴未艾。
随着空间探测技术的发展,以及经济建设和空间信息传输对地图的需要,现代科学技术和理论在地图学中被不断引用,计算机地图制图,遥感制图和地理信息系统技术开始出现,人们对地图的人事不断深化。
GIS技术的出现为计算机地图制图提供了更加强大的功能和便利的条件,传统的专题制图技术与GIS技术相结合,使专题地图制图方法更加简便、表达更加清晰、内容更加丰富。
目前,国内外已经有很多成熟的商用GIS制图软件。
国外的有ESRI公司的ArcGIS系列软件、mapinfo软件、intergraph等等;国内的有mapgis、supermap、geostar、citystar等。
这些软件已经在各行各业得到了广泛的应用。
商业化的GIS软件制图效果很好,所面向的行业很多,但针对性不强,这在无形中就增加的了生产中的支出。
GIS集成二次开发很好的解决了这个问题。
用户可以根据自己的需要购买组件,然后在一定的软件开发环境下实现自己的功能,这样在很大程度上节约了开支。
本文在visual studio 2008开发环境下,使用C#语言,在ArcGIS Object基础之上实现了地图制图系统的开发,能够进行图面整饰,打印输出等功能。
2、专题制图内容1)地图模板。
具体包括图框大比例小,图框的类型与颜色,模板的底色等。
2)地图格网。
地图格网是地图表达的重要内容,反应地图的坐标系统和投影信息。