ArcEngine地图的加载与保存
ArcGIS Engine指导书3
ArcEngine开发实例三一、实例目标及其实现的主要功能1、学习编程实现打开、保存,另存地图文档的方法;2、运用工具栏工具进行地图要素的添加;3、运用状态栏控件实现地图坐标信息的显示。
二、具体的实现过程及代码1、如指导书中的过程,新建一个C#工程项目,并为默认建立的窗体分别添加“ToolBarControl”“TOCControl”“MapControl”“LicenseControl”控件,执行与MapControl 控件的绑定操作,并通过“dock”属性排好。
为工具栏添加如下图所示的工具按钮。
2、添加菜单控件,依次添加菜单栏的主菜单text属性为“文件”,其name属性为“menuFile”,依次添加子菜单,其text属性分别为“打开文档”,“新建文档”,“保存文档”,“另存为….”,“退出”,其name属性分别为“menuOpenDoc”,“menuNewDoc”,“menuSaveDoc”,“menuSaveAsDoc”,“menuExitApp”。
3、打开工具箱,通过添加选项,添加statusBar控件,并双击添加到窗体上。
4、添加ArcGIS的引用ESRI.ArcGIS.Geodatabase和ESRI.ArcGIS.ADF类库,在第一个窗体的代码窗口导入命名空间:using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.ADF;using ESRI.ArcGIS.SystemUI;5、在public partial class Form1 : Form代码下添加如下的初始化语句:private IMapControl3 m_mapControl = null;private string m_mapDocumentName = string.Empty;private IContainer components;6、为窗体添加load事件,并添加以下代码:private void Form1_Load(object sender, EventArgs e){m_mapControl = (IMapControl3)axMapControl1.Object;menuSaveDoc.Enabled = false; }7、为菜单“menuOpenDoc”添加click事件,并添加如下代码:ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();8、为菜单“menuSaveDoc”添加click事件,并添加如下代码:if (m_mapControl.CheckMxFile(m_mapDocumentName)){IMapDocument mapDoc = new MapDocumentClass();mapDoc.Open(m_mapDocumentName, string.Empty);if (mapDoc.get_IsReadOnly(m_mapDocumentName)){MessageBox.Show("Map document is read only!");mapDoc.Close();return;}mapDoc.ReplaceContents((IMxdContents)m_mapControl.Map);mapDoc.Save(esRelativePaths, false);mapDoc.Close();}9、为菜单“menuSaveAsDoc”添加click事件,并添加如下代码::ICommand command = new ControlsSaveAsDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();10、为菜单“menuExitApp”添加click事件,并添加如下代码:Application.Exit();11、为菜单“menuNewDoc”添加click事件,并添加如下代码:ICommand command = new CreateNewDocument();command.OnCreate(m_mapControl.Object);command.OnClick();12、为控件“axMapControl1”添加OnMouseMove事件,并添加如下代码:statusBar1.Text = string.Format("{0}, {1} {2}", e.mapX.ToString("#######.##"),e.mapY.ToString("#######.##"), axMapControl1.MapUnits.ToString().Substring(4));13、为控件“axMapControl1”添加OnMapReplaced事件,并添加如下代码:m_mapDocumentName = m_mapControl.DocumentFilename;if (m_mapDocumentName == string.Empty){menuSaveDoc.Enabled = false;statusBar1.Text = string.Empty;}else{menuSaveDoc.Enabled = true;statusBar1.Text = Path.GetFileName(m_mapDocumentName);}三、操作通过操作调试该程序源码,观察并掌握AE中对于地图文件保存的操作方法。
ArcEngine实验内容
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后实现选定图层的要素的符号化和渲染。
arcengine要素范围
arcengine要素范围ArcGIS Engine 是由 Esri 公司开发的一种 GIS 开发平台,它提供了一套强大的工具和功能,用于构建和定制地理信息系统 (GIS) 应用程序。
ArcEngine 主要针对开发人员提供各种 GIS 功能来构建自定义 GIS应用程序,包括地理数据处理、地理分析、地图显示等。
ArcGIS Engine 提供了丰富的要素操作范围,用于管理、分析和描述地理信息。
以下是 ArcGIS Engine 的要素范围的主要特点和用途:1. 空间数据模型:ArcGIS Engine 提供了多种不同的要素类型,用于存储和管理空间数据。
其空间数据模型包括点、线、面、多点、多线、多边形等要素类型,可以满足不同类型的空间数据存储和查询需求。
3. 空间查询:使用 ArcGIS Engine,可以进行空间查询来查找满足特定空间条件的要素。
开发人员可以根据地理位置信息进行查询,例如查找一些区域内的所有建筑物或道路。
4. 地理分析:ArcGIS Engine 提供了一套强大的地理分析工具,可以对空间数据进行统计、分析和建模。
开发人员可以使用 ArcObjectsAPI 进行地理分析,以实现自定义的 GIS 分析功能。
5. 地图显示和渲染:ArcGIS Engine 支持地图的创建、显示和渲染。
开发人员可以根据需要配置地图的显示样式和符号,以满足不同应用程序的需求。
此外,还可以实现地图的交互功能,例如缩放、平移和选择等。
6. 数据输出和导出:ArcGIS Engine 允许将地理数据输出到不同的格式,包括图片、PDF、Excel等。
开发人员可以使用 ArcObjects API进行数据导出,以便将地理信息以各种形式分享给用户。
7. 数据库连接和管理:ArcGIS Engine 支持与各种类型的数据库进行连接和管理,例如 ESRI Geodatabase、Oracle、SQL Server等。
这使得开发人员可以使用实际的地理数据来进行应用程序的开发和测试。
ArcEngine开发教程:第3章地图操作基本功能 (1)
3.数据加载
• 3)加载栅格数据
• 栅格数据是GIS的数据源之一,主要有卫星影像、航空影像、扫描的地图、 照片等。常见的栅格数据格式有*.bmp、*.tif和*.jpg等,这几种栅格数据 的工作空间是其所在的文件夹。添加栅格数据主要用到IRasterPyramid3、 IRasterLayer等接口。
• IMapDocument接口定义了操作和管理地图文档对象的方法和属性。使用 这个对象可以获取、更新一个文档的内容,设置文档文件的属性以及读、 写和保存一个文档文件等。IMapDocument接口同时扮演着数据显示和数 据容器的双重身份,可以通过ActiveView获得Map数据视图,通过 FocusMap属性获得当前正在使用的Map对象的数据容器身份。一个文档 对象可能拥有多个Map对象(相当于ArcGIS中的数据框Data Frame),但 是在同一时刻内只能有一份Map处于使用状态。
2. MapControl控件接口
• 1)IMapControlDefault接口
• IMapControlDefault接口是MapControl控件的缺省接口,是代表当前版本的最新接口,开发环境自动使用这个接口定 义的属性和方法。
• 2)IMapControl2接口
• IMapControl2接口提供了一系列的属性和方法,如设置MapControl控件的显示属性、控件外观、添加和管理数据图层 和地图文档、在控件上绘制图形和返回几何对象等。
核心代码
3.数据加载
• 通过MapControl的AddShapeFile方法加载ShapeFile文件
• 用MapControl控件的AddShapeFile方法同样可加载ShapeFile文件,这样省 去了建立工作空间、数据集等步骤。调用该方法需要传入两个参数,分 别是文件路径和不带扩展名的文件名,调用方法如下: • mainMapControl.AddShapeFile(string Path,string fileName);
ArcEngine及其在WebGIS中应用的介绍
ArcEngine及其在WebGIS中应用的介绍1、引言WebGIS 是 Internet 技术应用于 GIS 开发的产物。
GIS 通过 WWW 功能得以扩展,真正成为一种大众使用的工具。
Internet 用户从 WWW 的任意一个节点进入,可以浏览 WebGIS 站点中的空间数据、专题地图,进行各种空间查询和空间分析,从而使 GIS 进入千家万户。
2、WebGIS 的特点全球化的应用、真正大众化的 GIS、跨平台特性。
3、ArcEngine概述ArcGIS Engine是开发人员用于建立自定义应用程序的嵌入式GIS组件的一个完整类库。
开发人员可以使用ArcGIS Engine将GIS功能嵌入到现有的应用程序中,包括Microsoft Office的Word和Excel等产品,也可以建立能分发给众多用户的自定义高级GIS系统应用程序。
ArcGIS Engine由一个软件开发工具包和一个可以重新分发的、为所有ArcGIS应用程序提供平台的运行时(runtime)组成。
ArcGIS Engine的五个组成部分:1.基本服务—由GIS核心ArcObjects构成,几乎所有GIS应用程序都需要,如要素几何体和显示。
2.数据存取—ArcGIS Engine可以对许多栅格和矢量格式进行存取,包括强大而灵活的地理数据库。
3.地图表达—包括用于创建和显示带有符号体系和标注功能的地图的ArcObjects,及包括创建自定义应用程序的专题制图功能的ArcObjects。
4.开发组件—用于快速应用程序开发的高级用户接口控件和用于高效开发的一个综合帮助系统。
5.运行时选项—ArcGIS Engine运行时可以与标准功能或其他高级功能一起部署。
4、ArcEngine在WebGIS中的应用ArcGIS Engine开发工具包是一个基于组件的软件开发产品,用于建立和部署自定义GIS和制图应用程序。
ArcGIS Engine开发工具包不是一个终端用户产品,而是一个应用程序开发人员的工具包。
ArcGIS_Engine二次开发——提高篇
ArcGIS Engine二次开发——提高篇1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。
在本小节中我们将学习如何制作这种鹰眼。
1.1添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。
布局如下图所示。
左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
图 1 界面布局在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮1.2代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。
当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、using ESRI.ArcGIS.Geometry、using ESRI.ArcGIS.Display三个引用。
首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下:private void axMapControl1_OnExtentUpdated(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e){//创建鹰眼中线框IEnvelope pEnv = (IEnvelope)e.newEnvelope;IRectangleElement pRectangleEle = new RectangleElementClass();IElement pEle = pRectangleEle as IElement;pEle.Geometry = pEnv;//设置线框的边线对象,包括颜色和线宽IRgbColor pColor = new RgbColorClass();pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 255;// 产生一个线符号对象ILineSymbol pOutline = new SimpleLineSymbolClass();pOutline.Width = 2;pOutline.Color = pColor;// 设置颜色属性pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 0;// 设置线框填充符号的属性IFillSymbol pFillSymbol = new SimpleFillSymbolClass();pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutline;IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;pFillShapeEle.Symbol = pFillSymbol;// 得到鹰眼视图中的图形元素容器IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;IActiveView pAv = pGra as IActiveView;// 在绘制前,清除axMapControl2 中的任何图形元素pGra.DeleteAllElements();// 鹰眼视图中添加线框pGra.AddElement((IElement)pFillShapeEle, 0);// 刷新鹰眼pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}当鼠标点击鹰眼窗体时,主窗体Extent随之改变。
ArcGIS Engine基础开发教程(3)
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对象,空间参考等对象。
ArcEngine加载图层的五个步骤
// ESRI.ArcGIS.Geodatabase
// ESRI.ArcGIS.System
//
// Intended ArcGIS Products for this snippet:
// ArcGIS Desktop (ArcEditor, ArcInfo, ArcView)
ArcEngine加载图层的五个步骤
1.创建一个类工厂
2.使用类工厂创建一个要使用的工作区
3.使用工作区打开并得到图层的dataset
4.把dataset装入到新建的图层实例
5.把图层加载到MapControl控件
示例代码:源自ArcGis help文件
1.添加rasterfile
[C#]
#region"Open Raster File As GeoDatset"
' ArcGIS Snippet Title:
' Open Raster File As GeoDatset
Open a Raster file on disk by it's name as a GeoDataset.
'
' Add the following references to the project:
/// </summary>
/// <param name="path">A System.String that is the directory location of the raster file. Example: "C:\raster_data"</param>
ArcGIS Engine开发第四章 地图显示
通过AddShapeFile方法加载图层的代码演示
Private Sub Form_Load() MapControl1.AddShapeFile "d:\data\world\", "country.shp" MapControl1.AddShapeFile "d:\data\world\", "rivers.shp" MapControl1.AddShapeFile "d:\data\world\", "cities.shp" End Sub
移动图层
通过MapControl类的MoveLayerTo方法可以实现图层的移 动
MoveLayerTo方法的具体用法:
object.MoveLayerTo (fromIndex, toIndex ) 其中: fromIndex :表示要进行移动操作的图层的索引 toIndex :表示移动操作后图层的新索引
newMapExtentYmax = .YMin - (pRectangle.YMin - .YMin) * zoomInHei ghtFactor + newMapExtentHeight
pEnvelope.PutCoords newMapExtentXmin, newMapExtentYmin, ne wMapExtentXmax, newMapExtentYmax
4.1.1 使用属性向MapControl中添加图层
(1)加载ArcGIS Engine控件
打开Visual Basic,新建一个工程,在【工程】菜单中选中 【部件】菜单,在对话框中选中“ESRI Controls”复选框,点 击“确定”按钮完成ArcGIS Engine控件的加载
ArcGIS_Engine类库介绍
下面将概述ArcGISEngine中的各个类库。
本节中的各个模型图展示了ArcGISEngine的类库架构。
理解类库结构、它们的依赖关系和基本功能将有助于开发人员了解ArcGISEngine的组件。
下面根据依赖关系的顺序对类库进行讨论。
模型图中在每个类库框的右上角显示了其序列号。
例如,作为ArcGIS体系结构基础的System类库,其编号为1,而编号为7的GeoDatabase类库依赖于模型图中其前面的6个类库—SyStem、SystemUI、Geometry、Display、Server和Output。
System类库System类库是ArcGIS体系结构中最底层的类库。
System类库包含给构成ArcGIS的其他类库提供服务的组件。
System类库中定义了大量开发者可以实现的接口。
AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGISEngine的初始化。
开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。
SystemUI类库SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGIS Engine中进行扩展。
包含ICommand、ITool和IToolControl接口。
开发者用这些接口来扩展UI组件,ArcGIS Engine开发人员自己的组件将使用这些UI组件。
这个类库中包含的对象是一些实用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。
开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。
Geometry类库Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。
大多数用户会遇到的基本几何图形对象为Point、MultiPoint、Polyline和Polygon。
除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。
ArcEngine基础开发教程
pPath.AddSegment(pSegment,ref o,ref o); //创建一个 Polyline 对象
IGeometryCollection pPolyline = new PolylineClass(); //通过 IGeometryCollection 为 Polyline 对象添加 Path 对象
本文由 fxlcoco 编写 ESRI BBS GIS 大讲堂首发
04/04/2011业大学资源与环境学院
世界有我精彩-【侯志伟】整理
//添加第一个点,不需要设置点的顺序,参数设置为 Type.Missing pMultipoint.AddPoint(pPoint1, ref o, ref o); //添加第二个点,不需要设置点的顺序,参数设置为 Type.Missing pMultipoint.AddPoint(pPoint2, ref o, ref o); ……//添加其他点 2.4.2Segment 几何对象
地理信息系统08-3
可以看到应用程序把 MXD 地图文档加载到 MapControl 地图上,可以使用 ToolbarControl 提供的常用 GIS 功能如:放大,缩小,信息查询等功能。如图5所示:
1.7 为应用程序添加编辑功能 在应用程序设计模式下右键单击 ToolbarControl,单击属性选项弹出 ToolbarControl 属性对话框,单击 Items 选 项卡,单击 Add…按钮弹出 Controls Commands 对话框,单击 Toolset 选项卡,选择 Feature Editors 选项,拖动 到属性对话框工具栏的指定位置。如图6所示
04/04/2011
本文由 fxlcoco 编写 ESRI BBS GIS 大讲堂首发 第 1 页,共 80 页
ArcEngine 开发 第六讲 地图的显示
新建线符号代码实例( 新建线符号代码实例(SimpleLineSymbol) )
public void AddLineSymbol() { //新建符号接口 新建符号接口 ISimpleLineSymbol pLineSymbol; pLineSymbol = new SimpleLineSymbol(); //设置符号的样式 设置符号的样式 pLineSymbol.Style = esriSimpleLineStyle.esriSLSDot; //设置符号的颜色 设置符号的颜色 pLineSymbol.Color = getRGB(255, 0, 0); pLineSymbol.Width = 3; //绘制线符号 绘制线符号 IGeometry pGeo; pGeo = axMapControl1.TrackLine(); object pSymbol = (object)pLineSymbol; axMapControl1.DrawShape(pGeo, ref pSymbol); }
1、添加色彩——颜色对象 、添加色彩 颜色对象
1.1 常见的颜色模型 RGB模型、CMYK模型、HSV模型、Gray模型 模型、 模型、 模型、 模型 模型 模型 模型 1.2 颜色的接口 颜色的接口IColor 1.3 颜色对话框 1.4 ColorRamp对象 对象 1.5 AE 与 C#.net 的颜色转换
其他新建点符号类型
ArrowMarkerSymbol 箭头形式的符号 CharacterMarkerSymbol 字符形式的符号 PictureMarkerSymbol 位图形式的符号 MultiLayerMarkerSymbol 多个符号叠加生成新的符号
2.2 线符号 线符号—— LineSymbol对象 对象
《ArcGISEngine开发从入门到精通》第2章ArcGISEngine中的控件资料
CurrentTool。放大工具的实现过程是:通过 ToolbarControl获取其“伙伴控件”,然后在 MapControl上提供显示终端用户拉动鼠标所画的框, 并改变MapControl的显示范围。
ToolbarControl一般要与一个“伙伴控件”协同工作,并 有一个控件命令选择集,以便快速提供功能强大的 GIS应用程序。ToolbarControl不仅提供了部分用户界 面,而且还提供了部分应用程序框架。ArcGIS Desktop 应用程序,如ArcMap、ArcGlobe和ArcScene等具有强 大而灵活的框架,包括诸如工具条、命令、菜单、泊 靠窗口和状态条等用户界面组件,这些框架使终端用 户可以通过改变位置、添加和删除这些用户界面组件 来定制应用程序。
第2章 ArcGIS Engine中的控件
Forwithy New
为了快速构建一个GIS应用程序,ArcGIS Engine给开 发者提供了一些可视化控件,如制图控件、3D控 件、框架控件等。ArcGIS控件可以通过两种方式 建立应用程序,其一,ArcGIS控件可以嵌入到现 有的应用程序中以增强制图功能;其二,ArcGIS 控件可用于创建新的独立应用程序。
息。 • Object:返回MapControl控件。
IMapControl2 mapControl2; mapControl2 = axMapControl1.Object as IMapControl2;
mapControl2 = axMapControl1.GetOcx() as IMapControl2; IMapControl3 mapControl3; mapControl3 = axMapControl1.Object as IMapControl3; mapControl3 = axMapControl1.GetOcx() as IMapControl3;
arc map的基本使用
Arc Map的基本使用介绍Arc Map是一款强大的地理信息系统软件,广泛应用于地理空间数据的管理、分析和可视化。
本文将详细介绍Arc Map的基本使用,包括软件的安装与配置、数据的导入与管理、地图的创建与编辑、空间分析等方面。
安装与配置1.下载Arc Map安装程序;2.运行安装程序,按照提示完成安装;3.打开Arc Map,进入软件的设置界面;4.配置软件的默认存储路径、界面语言等参数。
数据的导入与管理导入数据1.点击”添加数据”按钮,选择要导入的数据文件;2.在弹出的对话框中选择数据源和数据类型;3.确认导入选项,点击”确定”按钮。
管理数据1.在”目录”窗格中,右键点击数据,选择相应的管理操作;2.可以对数据进行重命名、删除、复制、移动等操作;3.可以创建数据集、数据集合、地图文档等组织数据。
地图的创建与编辑创建地图1.点击”新建地图”按钮,选择地图模板;2.设置地图的名称、坐标系统、单位等属性;3.确认设置,点击”确定”按钮。
地图的基本操作1.放大与缩小:使用放大工具或缩小工具,点击地图进行相应操作;2.平移:使用平移工具,点击并拖动地图;3.查询:使用查询工具,点击地图进行查询操作。
地图的编辑1.启用编辑:点击”编辑”菜单,选择”启用编辑”;2.选择要编辑的图层,点击”编辑工具”按钮;3.进行编辑操作,如添加、删除、移动要素等;4.保存编辑结果,点击”保存编辑”按钮。
空间分析空间查询1.选择要查询的图层,点击”查询”按钮;2.在查询对话框中设置查询条件,点击”确定”按钮;3.查询结果将以高亮显示在地图上。
缓冲区分析1.选择要进行缓冲区分析的图层,点击”缓冲区”按钮;2.在缓冲区对话框中设置缓冲区半径、单位等参数;3.确认设置,点击”确定”按钮;4.缓冲区结果将以新的图层显示在地图上。
空间统计1.选择要进行空间统计的图层,点击”统计”按钮;2.在统计对话框中选择统计字段和统计方法;3.确认设置,点击”确定”按钮;4.空间统计结果将以表格形式显示。
利用C#进行AO开发--实现地图文件的打开、保存和另存为功能
利用C#进行AO开发--实现地图文件的打开、保存和另存为功能(2007-10-27 08:51:26)由于C#继承了VB界面开发的友好性,所以完全可以利用C#提供的友好界面开发功能来实现winform的程序开发,在安装好了ArcEngine以后就可以利用其提供的控件进行GIS的二次开发,在form窗体上添加MapControl控件,MenuStrip控件(File(Open、Save、SaveAs、Exit)),saveFileDialog控件之后就可以进行编写代码,调试后的代码如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.Output;namespace openDocu{public partial class Form1 : Form{public Form1(){InitializeComponent();}IMapDocument m_MapDcument;//openFileDialogprivate void LoadMapDocument(){m_MapDcument = new MapDocumentClass();try{//打开文件对话框选取MXD文件OpenFileDialog openFileDialog2;openFileDialog2 = new OpenFileDialog();openFileDialog2.Title = "Open Map Document";openFileDialog2.Filter = "Map Documents(*.mxd)|*.mxd";openFileDialog2.ShowDialog();string sFilePath = openFileDialog2.FileName;//将数据载入pMapDocument并与map控件联系起来m_MapDcument.Open(sFilePath, "");int i;for (i = 0; i <= m_MapDcument.MapCount - 1; i++){//一个IMapDocument对象中可能有多个Map对象,遍历每个map对象axMapControl1.Map = m_MapDcument.get_Map(i);}//刷新地图axMapControl1.Refresh();}catch (Exception ex){MessageBox.Show(ex.ToString());}}//save mapprivate void SaveDocument(){//check that the document is not read onlyif (m_MapDcument.get_IsReadOnly(m_MapDcument.DocumentFilename) == true){MessageBox.Show("The map document is read only!");return;}//save with the current relative path settingm_MapDcument.Save(m_esRelativePaths,true);MessageBox.Show("Change saved successfully!");}//saveasprivate void SaveAsDocument(){//open a file dialog for saving map documentsaveFileDialog1.Title = "Sava Map Document As";saveFileDialog1.Filter = "Map Documents(*.mxd)|*.mxd";saveFileDialog1.ShowDialog();//Exit if no map document is selectstring sFilePath = saveFileDialog1.FileName;if (sFilePath == ""){return;}if (sFilePath == m_MapDcument.DocumentFilename){//Save change to the current documentSaveDocument();}else{//SaveAs a new docuemnt with relative pathsm_MapDcument.SaveAs(sFilePath, true, true);//open documentMessageBox.Show("Documnet saved successfully!");}}private void openToolStripMenuItem_Click(object sender, EventArgs e) {LoadMapDocument();}private void exitToolStripMenuItem_Click(object sender, EventArgs e) {this.Close();}private void saveToolStripMenuItem_Click(object sender, EventArgs e) {SaveDocument();}private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) {SaveAsDocument(); }}}。
arcgis datastore使用
arcgis datastore使用
ArcGIS DataStore是ArcGIS Pro软件中的一种数据存储方式,可以用于存储和管理地理空间数据。
它支持多种数据格式,包括Shapefile、GeoDatabase、CSV等。
要使用ArcGIS DataStore,可以按照以下步骤进行操作:
1.打开ArcGIS Pro软件,创建一个新的地图或加载现有的地图。
2.在“内容”窗格中,右键单击“图层”窗格中的任意位置,选择“添加数据”>“连接数据”。
3.在“连接数据”对话框中,选择“已注册的地图服务”,然后选择要连接的地图服务。
4.在“连接设置”中,选择要连接的地图服务的设置,例如要连接的图层、坐标系等。
5.点击“连接”按钮,等待连接成功。
6.一旦连接成功,ArcGIS DataStore将会自动将数据添加到地图中。
在使用ArcGIS DataStore时,需要注意以下几点:
1.要使用ArcGIS DataStore,需要先安装ArcGIS Pro软件并获得相应的许可证。
2.在使用ArcGIS DataStore时,需要确保计算机上已经安装了必要的存储库和扩展组件。
3.要使用ArcGIS DataStore,需要具备一定的地理空间数据知识和地图制作经验。
4.要使用ArcGIS DataStore进行高级操作,如数据导出、导入等,需要了解相关的命令和操作流程。
总之,ArcGIS DataStore是一种功能强大的数据存储方式,可以用于存储和管理地理空间数据,适用于各种地图制作和数据分析应用场景。
2.4.1 地图加载、保存_ArcGIS Engine 开发从入门到精通_[共4页]
ArcGIS Engine中的控件 第 2 章(3)IToolbarControlEvents:该接口是一个事件接口,定义了ToolbarControl 能够处理的全部事件,如OnDoubleClick、OnItemClick、OnKeyDown等。
在ToolbarControl上可以驻留以下3类命令。
(1)实现了响应单击事件的ICommand接口的单击命令。
用户单击事件,会导致对ICommand::OnClick方法的调用,并执行某种动作。
通过改变ICommand::Checked属性的值,简单命令项的行为就像开关那样。
单击命令是可以驻留在菜单中的惟一命令类型。
(2)实现了ICommand接口和ITool接口、需要终端用户与“伙伴控件”的显示进行交互的工具。
ToolbarControl维护CurrentTool属性。
当终端用户单击ToolbarControl上的工具时,该工具就成为CurrentTool。
ToolbarControl会设置“伙伴控件”的CurrentTool属性。
当某个工具为CurrentTool时,该工具会从“伙伴控件”收到鼠标和键盘事件。
(3)实现了ICommand接口和IToolControl接口的工具控件。
这通常是用户界面组件。
ToolbarControl驻留了来自ItoolControl:hWnd属性窗口句柄提供的一个小窗口,只能向ToolbarControl添加特定工具控件的一个例程。
可以使用3种方法向ToolbarControl添加命令,第1种是指定唯一识别命令的一个UID,第2种是指定一个progID,第3种是给AddToolbarDef方法提供某个现有命令对象的一个例程。
下面给出样例代码。
//Add a toolbardef by passing a UIDUID uID = new UIDsClass();uID.Value = "esriControls.ControlsMapNavigationToolbar";axToolbarControl1.AddToolbarDef(uID,-1,false,0,esriCommandStyles.esriCommandSt yleIconOnly);//Add a toolbardef by passing a ProgIDstring progID = "esriControls.ControlsMapNavigationToolbar";axToolbarControl1.AddToolbarDef(progID,-1,false,0,esriCommandStyles.esriComman dStyleIconOnly);//Add a toolbardef by passing an IToolbarDefIToolBarDef toolBarDef = new ControlsMapNavigationToolbarClass();axToolbarControl1.AddToolbarDef(toolBarDef,-1,false,0,esriCommasndStyles.esriC ommandstyleIconOnly);ToolbarControl更新命令的使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
OpenFileDialog dlgOpen = new OpenFileDialog();
dlgOpen.Title = "Open Map Document";
地图文档保存:
/// <summary>
/// 保存MapControl中的地图文档
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuSaveDoc_Click(object sender, System.EventArgs e)
ArcEngine地图的加载与保存
2008-03-24 14:43
/// <summary>
/// 地图加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
{
axMapControl1.Map = mapDoc.get_Map(i);
}
//刷新地图
axMapControl1.Refresh();
还可以通过axMapControl1.LoadMxFile(sFilePath)来实现,具体不详述.
mapDoc.ReplaceContents((IMxdContents)axMapControl1.Map););
mapDoc.Close();
}
}
此外,还可以通过IMapDocument接口来实现地图加载:
string sFilePath =dlgOpen.FileName;
if(sFilePath=="")
return;
//将数据载入pMapDocument并与map控件联系起来
{
sFilePath = dlgOpen.FileName;
}
else
return;
if(sFilePath!=null)
{
}
dlgOpen.Filter = "ArcMap Document(*.mxd)|*.mxd";
string sFilePath = null;
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
if (axMapControl1.DocumentFilename null !=null )
{
IMapDocument mapDoc = new MapDocumentClass();
mapDoc.Open(axMapControl1.DocumentFilename, string.Empty);
IMapDocument mapDoc = new MapDocumentClass();
mapDoc.Open(sFilePath, "");
//IMapDocument对象中可能有多个Map对象,遍历每个map对象
for (int i = 0; i < mapDoc.MapCount; i++)
if (axMapControl1.CheckMxFile(sFilePath))
{
axMapControl1.LoadMxFile(sFilePath);
}