arc gis+c#
- 格式:doc
- 大小:418.50 KB
- 文档页数:30
第一章1、什么是地理信息系统(GIS).它与一般计算机应用系统有哪些异同点.答:地理信息系统:是由计算机硬件、软件和不同的方法组成的系统,该系统设计支持空间数据的采集、管理、处理、分析、建模和显示,以便解决复杂的规划和管理问题。
GIS 脱胎于地图学,是计算机科学、地理学、测绘遥感学、环境科学、城市科学、空间科学、信息科学和管理科学等众多学科交叉融合而成的新兴学科。
但是,地理信息系统与这学科和系统之间既有联系又有区别: (1)GIS 与机助制图系统机助制图是地理信息系统得主要技术基础,它涉及GIS 中的空间数据采集、表示、处理、可视化甚至空间数据的管理。
地理信息系统和数字制图系统的主要区别在于空间分析方面。
一个功能完善的地理信息系统可以包含数字制图系统的所有功能,此外它还应具有丰富的空间分析功能。
(2)GIS 与DBMS(数据库管理系统) GIS 除需要功能强大的空间数据的管理功能之外,还需要具有图形数据的采集、空间数据的可视化和空间分析等功能。
因此,GIS 在硬件和软件方面均比一般事务数据库更加复杂,在功能上也比后者要多地多。
(3)GIS 与CAD 系统二者虽然都有参考系统,都能描述图形,但CAD 系统只处理规则的几何图形、属性库功能弱,更缺乏分析和判断能力。
(4)GIS 与遥感图像处理的系统遥感图像处理的系统是专门用于对遥感图像数据处理进行分析处理的软件。
它主要强调对遥感栅格数据的几何处理、灰度处理和专题信息提取。
这种系统一般缺少实体的空间关系描述,难以进行*一实体的属性查询和空间关系查询以及网络分析等功能。
2、地理信息系统有哪几个主要部分组成.它的基本功能有哪些.试举目前广泛应用的两个基础地理信息系统软件为例,列出它们的功能分类表,并比较异同点.(1)系统硬件:包括各种硬件设备,是系统功能实现的物质基础;(2)系统软件:支持数据采集、存储、加工、回答用户问题的计算机程序系统;(3)空间数据:系统分析与处理的对象,构成系统的应用基础;(4)应用人员:GIS 服务的对象,分为一般用户和从事建立、维护、管理和更新的高级用户;(5)应用模型:解决*一专门应用的应用模型,是GIS 技术产生社会经济效益的关键所在。
在ArcGis下基于C#的分割线段处理方法左涛高东生(中煤航测遥感集团有限公司陕西西安710199)摘要:目前在A r c G i s中使用线编辑功能对线段进行编辑的时候,往往需要进行精确和灵活分割的方法,如按比例分割线段、按长度分割线段、鼠标点击分割线段等。
在A r c G i s的工具箱中没有具体的方法,所以 编辑起来比较困难,针对采用G#语言进行二次开发,使用G#中的对话框界面进行参数设置,选择线段进行 编辑。
简单灵活,可实现按比例分割、按长度分割、交点处分割。
此方法简单灵活,可移植性强,能够提高 编辑效率。
关键词:ArcGis 矢量线G#1引言在ArcG i s中取编辑线段时,特别是分割线段,不同的需求需要个性化的功能,比如快捷的按比例 分割线段,按长度分割线段。
在A r c G i s的工具中 能实现,但是动作繁杂不太方便,本文使用高级语 言C#实现了按长度、按比例、在交点处分割等功能 实现,使得此处功能变得方便快捷,根据个性化定 制。
按照作业人员的习惯生成编辑对话框,便于操 作实现。
后面附上关键代码的解释便于参考,可以 类似实现其他功能强大的编辑功能。
2 ArcEngine组件式开发技术C O M是由微软公司提出的主要应用在Windows 操作系统平台上进行不同语言协作开发的一种标 准。
组件式G I S是软件组件技术在G I S软件开发中 的应用,它是指基于组件对象平台,以一组具有某 种标准通信接口的、允许跨语言应用的组件提供的 GIS。
ArcObjects(AO)是建立在微软的C O M技术基 础之上的,因此,所有支持C O M技术的程序开发语 言都可以与 ArcObjects 结合[1]。
ArcEngine(AE)是 一组跨平台的嵌入式A0,它是ArcGis软件产品的底 层组件,用来构建定制的G I S和桌面制图应用程序,或是向原有的应用程序増加新的功能,通过它,可 以构建非GIS为中心的应用。
GIS与C-GIS的结构区别气体绝缘金属封闭开关设备(Gas Insulated Switchgear,)简称GIS,是指全部或部分地采用气体而不采用处于大气压下的空气作为绝缘介质的金属封闭开关设备。
它是由断路器、隔离开关、负荷开关、接地开关、避雷器、互感器、套管或电缆终端,以及母线等元件相互直接联结在一起而构成,而且只能在这种方式下运行。
GIS的断路器一般由液压、气动、弹簧机构操作,隔离开关和接地开关一般由气动、手动、电动或电动弹簧机构操作。
GIS在输电线路中起着控制和保护作用,它是最重要的输配电设备之一。
GIS具有体积小,占地面积少,易于安装建设,不受外界环境影响,运行安全可靠,配置灵活,维护简单,检修周期长等特点,已逐步取代空气和少油产品,在72.5kV及以上电网中运行,特别是在水电站和城网变电站中的应用越来越广泛。
GIS也成为超高压输变电设备的首选。
随着城市建设规模和速度的不断加大及铁路发展需要,在中压领域,GIS也正在得到实际应用。
从1965年世界第一台SF6气体绝缘金属封闭开关设备(GIS)投运以来,GIS已广泛应用到72.5~800kV电压等级的电力系统中,GIS技术得到了很大发展。
为满足电力系统的发展需要,GIS的性能不断进行着改进和优化。
随着SF6断路器开断容量增大,GIS在参数水平上也不断提高。
已做到800kV GIS产品实际运行和1100kV GIS的试运行;SF6断路器已从多断口改为双断口或单断口。
在126kV~363kV级已采用单断口,在550kV级采用了单断口或双断口,减少了零件数,增加了可靠性;灭弧室从压缩空气式到SF6双压式再到单压式再改进为自能式,减小了操作功,使弹簧操动机构广泛应用成为可能。
在126kV~252kV级产品上,广泛应用了弹簧操动机构,在363kV以上产品上,结合弹簧操动机构,已有了弹簧液压机构;这也使GIS迈向小型化和智能化方向。
日本新近开发出只有0.9m3体积的超小型66/77 kV GIS。
ARCGIS命令大全关于arc的命令比较多,初学者会感觉比较麻烦,现列出arc命令、arc edit命令、ar cplot命令清单。
一、ARC命令1、PC-A RC/INFO的配置和测试CG ITEST 测试PC ARC/INFO显示器CON-C GI 配置PC AR C/INFO显示器CON-DIG配置PC ARC/I NFO数字化仪DI GTEST 测试P C ARC/INF O 数字化仪DU ALMODE 指定双屏幕2、获取帮助COMMA NDS列出PCARC/INFO各种命令HEL P 列出PC AR C/INFO命令的帮助3、图层层(COVERAG E)的产生与编辑ADS 产生和输入一个图层,是进行A RC/INFO 常用的一种数字化模块CR EA TE产生一个空间的图层CREA TEL ABELS 给没有LAB 点的图层产生LAB 点D ELETETIC 从一个图层中删除已选择的TIC 点GE NERA TE从键盘和文件中增加图层要素4、图层和文件转换E XPORT将图层、数据库文件、文本文件、绘图文件或者复合图转换为ARC/INFO 交换文件IMPORT将ARC/INFO交换文件转换为图层、数据库文件、文本文件、绘图文件或者复合图REC EIVE 从主机上接收图层、数据库文件、文本文件、绘图文件或者复合图文件SEND 将PC ARC/INFO的图层、数据库文件、文本文件、绘图文件或者复合图文件传至主机5、判断数字化错误EDITPL OT在PC 屏幕上交互式显示图层,可以任意选择窗口进行打印绘图或生成绘图文件LABELERRO RS 列出多边形LA B 点错误PC-Arc/In fo 简明命令手册第5页NODE ERRORS列出图层中可能的出现的节点错误6、建立拓扑关系BU ILD 建立或更新要素拓扑关系CLE AN 产生多边形拓扑关系7、图层数据操作PR OJEC T 对一图层或文件进行两种坐标转换T RAN SFORM 基于控制点对一图层的坐标进行转换8、增加、更新和操作属性数据ADDITEM给一个数据库文件增加一个数据项AD DXY把点或LAB点X,Y坐标写入P A T 文件COP YIN FO 拷贝数据库文件DBASE在ARC 环境下启动dBASE (在装有dBASE 的情况下)DROP IT EM 从数据库文件中删去一个数据项I DEDIT更新图层中的US ER-IDJO INITEM基于相同的数据合并两个文件KILLI NFO 删除数据库文件TABLES启动TABLES程序9、图层管理APPEN D 合并图层(最多可多达100 个图层)CO PYC OV 拷贝图层COUNT 列出图层所有的要素个数DESCRIBE提供图层的各种信息FREQUEN CY列出图层中要素编码的频率I NDEX产生一个空间索引,以提高对图层要素查询的效率KILL删除一个图层LO ADANNO 拷贝一个名为[COVER].TXT 的数据库文件LIST CO VS 列出当前工作区的图层N ODEP OINT在含有弧段的节点中产生点图层PO INTDIST AN CE 计算指定半径范围内一个图层中点要素相对另一图层点要素的距离RENA MCOV 改变图层的名字TOL ERA NCE 设置或显示所用图层的容差(见“二、Arc Edit命令”中的“6、PC A rc Edit中的容差”)UNGEN从一个图层生成一个具有X,Y坐标的AS CII文件U NL OADANNO从图层数据库文件中拷贝注记10、图层显示ED ITPLOT在P C 屏幕上交互式显示图层,可以任意选择窗口进行打印绘图或生成绘图文件P LOTINFO 列出绘图文件信息RO TPLOT 从一个已生成的绘图文件按一定的旋转角度产生一个新的绘图文件11、ARC处理器命令CL EAR 清除PC显示器CLS 清除PC显示器CO LOR 改变显示屏对话窗线的颜色IN FODIREC TOR Y显示当前目录的数据库和数据文件I TEMS列出图层和数据文件的数据项定义LIST 列出图层和数据文件的值POPUP 弹出窗口和显示ASCAII文件QUIT退出ARC环境DEL ETE 删除磁盘文件DRA W 显示绘图文件、复合图文件等12、数据转换换(我国用户常用命令令)DEFARC将AutoCAD的A SCII绘图转换文件(DXF)转换为图层(COVERA GE)IGES ARC将原始图形交换标准文件(IG ES)转换为图层ARCDXF将图层(COVERA GE)转换为DXF文件ARCIGE S 将图层转换图形交换标准文件(IG ES)13、矢量量-栅格数据相互转换GRIDP OLY将一种栅格文件转换成多边形图层LINE GR ID 将线状图层转换成栅格文件P OINTGRID 将点状图层转换成栅格文件POLYG RI D 将多边形图层转换成栅格文件14、空间要素合并ID ENTI TY计算两个图层的几何交点。
ArcGIS Engine开发GIS应用 VCarcgisengine开发gis应用-vc利用arcgisengine、和windows控件开发gis应用此过程表明适宜那些采用.net创建和部署应用领域的开发者,它叙述了采用arcgis控件创建和部署应用领域的方法和步骤。
你可以在下面的目录下找到相应的样例程序:\\developerkit\\samples\\developer_guide_scenarios\\arcgis_engine\\building_an_arcgis_control_application\\map_viewer注:arcgis样例程序不包含在arcgisengine开发工具包“典型”安装方式中。
如果你没有安装它们,则可以重新运行开发工具包安装向导,选择“定制”或“修改”方式,并选择软件开发包下的样例项进行安装。
一、项目描述在谷歌中读取和内嵌arcgis控件。
?向pagelayoutcontrol和mapcontrol中读取图形文档。
?设置toolbarcontrol和toccontrol的存取控件。
?处置窗口翻转。
向toolbarcontrol添加arcgisengine命令和工具。
?创建弹出式菜单在toccontrol中管理标签编辑?在mapcontrol中绘制图形。
为mapcontrol、pagelayoutcontrol和toolbarcontrol创建定制工具。
?用户化toolbarcontrol。
在windows操作系统中部署应用领域。
二、详述体)访问。
每个控件对象及其功能可以与其他esriarcobjects和自定义控件组合使用,创建用户化的客户应用程序。
此方案就是采用了c#和两种语言建立,但以下技术同时实现分散女性主义于c#方案。
许多开发者可能会感觉用更难受,那是因为他们已经比较熟识visualbasic6.0代码,然而,对于java和c++程序员来说,他们将可以真的对c#程序语言的语法更熟识。
ArcGIS-CSPro Integration GuideScenario 1: Exporting existing data from an Esri feature service and bringing it into CSPro1.Open an ArcGIS Pro map and add your Esri feature service to the map through the Catalog pane orthe Add Data button.2.If your feature service is a polygon layer, run the geoprocessing tool Feature to Point. Thisworkflow is designed to work with point features.3.Take your point data and run the geoprocessing tool Calculate Geometry Attributes. Here you canspecify the coordinate format and coordinate system to add x- and y-values as fields to each point.4.In the Contents pane, right-click your building points feature and select Export > Export table.Select an output location (outside a GDB) and specify an output name with the file type as .csv.5.Open the .csv file in Microsoft Excel and save it as an .xls file.6.Open CSPro and select Create a new application.7.Select CAPI Data Entry Application as the Application Type.8.Input a name for your data entry application.9.Click the ellipsis button next to Input Dictionary and provide a name for your new input dictionary.10.Click OK, and when prompted that the input dictionary name you entered does not exist,confirm that you would like to create it.11.Click the Tools tab at the top of the CSPro Designer and select Excel to CSPro.12.Click the second tab: Create CSPro Dictionary from Excel File.13.Click Select Excel file and navigate to the .xls form you saved in step 5.14.Click Analyze Worksheet.a.You will see each of your Esri field names in the Dictionary Contents view. Check thatthe alpha, integer, and decimal length fields make sense for your dataset, and make anynecessary adjustments.15.Select the check box in the ID column for the field that is your building ID.16.Click Create Dictionary in the top right and select the empty input dictionary you created instep 9.a.Accept that you want to overwrite the existing dictionary.17.A prompt will ask if you want to convert data with this dictionary—select Yes.a.Now you will be directed to the tab Excel to CSPro, and you will see that the file paths ofthe Excel file and CSPro dictionary you just created are already filled in.18.Click Select Output Data File and name your CSPro output data file.19.Select Create CSPro Data File.20.Close the Excel to CSPro window.21.Close CSPro. Because you changed the input dictionary, you need to restart the program to seethe data you imported.22.Open CSPro—select Open an existing application, and select the most recent project you werejust editing.a.If you are prompted to rename the input dictionary, select Rename and choose theoption with the same name from the drop-down menu.23.At the bottom left of the screen, ensure that Dicts is selected (Forms may open as the default).b.Click the plus sign (+) icons in your dictionary panel to expand the different sections, andyou should see all the Esri field names.24.Right-click any of your field names and click Add Item. Input the name of a field that you want tocollect in the Census of Population and Housing. Follow the instructions in the CSPro Getting Started Guide to continue to build out your dictionary in CSPro:https:///software/cspro/documentation/start75.pdf25.Click Save.26.Click File > New > CAPI Data Entry Application.a.Provide a new name.b.For the Input Dictionary, select your most recent dictionary file, which will be the oneyou created from the Excel file and added new fields to.c.When prompted with "Would you like CSPro to create a set of forms for you, based onthe input dictionary?" select Yes.27.If necessary, navigate to the Forms view by clicking Forms in the bottom left.28.The autogenerated forms will show your question fields from the Esri feature service, as well asthe fields you added in CSPro. Refer to the CSPro User's Guide to customize the formappearance: https:///software/cspro/documentation/cspro75.pdfa.For Input Data File, select the output from running the Excel to CSPro tool.30.You now have the features from your Esri feature service in CSEntry, where you can captureadditional data. Refer to the CSPro User’s Guide for more on how to use this application.Scenario 2: Exporting data from CSPro and bringing it into an Esri feature service1.Open the Dictionary view by clicking the blue book icon under the menu bar:b.If the blue book icon appears dimmed, you are in the right view.2.Go to Edit > Security Options and select the check box next to Allow exporting data to otherformats.3.Click OK4.On the menu bar, click Tools > Export Data.5.Input your most recently saved file, which should be your CSPro Dictionary file.6.In the CSPro Export Data window, select the check box next to the dictionary:7.Select Comma delimited (.csv) under Export Format. Accept the other defaults.8.Click Run (the third icon from the left, under the word View).9.Select your most recent CSPro Data File. the output .csv file.11.Open the .csv file in Excel.12.Select all of column A.13.Under the Data tab, select Text to Columns.b.For file type, choose Delimited. Click Next.c.For Delimiters, select Comma and deselect Tab.e.Click Next, accept the defaults, and click Finish.f.Save the .csv file, changing the file type to .csv (Comma delimited).14.Open a new map in ArcGIS Pro and create a file connection to the location where you just savedthe .csv file.15.Add the .csv file to the map.16.In the Contents pane, right-click your .csv file and select Display XY Data.17.In the Display XY data window, specify the X Field and Y Field values from your .csv file, andensure the coordinate system is consistent with the coordinate system you used to generate the x- and y-values initially.18.Now your building points will appear on the map. In the Contents pane, you will see a new pointfeature service, which contains all the building points and their associated data from CSPro. You can now publish this feature service to ArcGIS Online, perform spatial analysis with it, and add it to web apps such as ArcGIS Dashboards. Please refer to the additional resources below for moreinformation on what you can do with your data in ArcGIS.Learn lessons for getting started with ArcGIS: /Learn lessons for official statistics/census work: /More on Esri feature services: /en/server/latest/publish-services/windows/what-is-a-feature-service-.htmHow to overwrite an exsisting web layer (useful if you make updates to your data and want to update your web maps/apps without reconfiguring them): /en/pro-app/latest/help/sharing/overview/overwrite-a-web-layer.htm。
ArcGIS 编辑操作的常用快捷键一览表一、公共快捷键(对所有编辑工具有效):乙放大X :缩小C :漫游V :显示节点ESC:取消Ctrl+Z :撤销Ctrl+Y :重做SpaceBar :暂停捕捉二、编辑工具:Shift :添加至/取消选择Ctrl :移动选择锚N :下一个被选要素三、用于Edit 工具的与注记相关的快捷键:E:在Sketch工具、Edit工具和Edit Annotation 工具间切换;四、Edit Annotation 工具:Shift :添加至/取消选择Ctrl :移动选择锚N :下一个被选要素R :切换至旋转模式/从旋转模式切换F :切换至要素模式/从要素模式切换E:在Sketch工具、Edit工具和Edit Annotation 工具间切换L :在跟踪要素模式下将选中的注记要素旋转180 度0:在跟踪要素模式下打开Follow Feature Opti ons 对话框Tab:在跟踪要素模式下对注记放置的位置进行左右边的切换P:在跟踪要素模式下对注记放置的角度进行平行和垂直方向的切换。
五、Sketch 工具:Ctrl+A :方位Ctrl+F :偏转Ctrl+L :长度Ctrl+D : X,Y 增量Ctrl+G :方位/长度Ctrl+P :平行Ctrl+E :垂直Ctrl+T :切线Ctrl+Delete :删除草图F2:完成草图F6:绝对X,Y坐标F7 :线段偏转T:显示容限Arcmap 技巧总结1. 要素的剪切与延伸实用工具TASK 任务栏Extend/Trim feature 剪切所得内容与你画线的方向有关。
2. 自动捕捉跟踪工具点击Editor 工具栏中Snapping 来打开Snapping Environment 对话框捕捉设置中有 3 个选项,vertex edge end 分别是节点、终点、和边,选择end 应该会捕捉端点3. 图斑面积计算及长度计算应用工具CALCULATE AREA 或者使用VBA 代码实现新建字段并开启Advanced 写入代码,面积计算:Dim Output as doubleDim pArea as IareaSet pArea = [shape]在最后的一个空格里面写入代码(即:字段名)pArea.area 长度计算:Dim Output as doubleDim pCurve as ICurveSet pCurve = [shape]Output = pCurve.Length4. 剪切图斑Task 任务栏cut polygon feature 工具,需要sketch 工具画线辅助完成5. 配准工具Spatial Adjustment 工具需要注意先要set adjustment data 然后配准6. 影像校正Georeferncing 工具7. 要素变形Task 工具条中的reshape feature 配合sketch 工具8. 添加节点Modify feature 在需要加点的地方右键单击insert vertex 也可单击右键选择properties 打开edit sketch properties 对话框,在坐标点位置右键插入节点9. 共享多边形生成Auto-complete polygon 工具生成共享边的多边形,配合snapping environment 更好。
《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立教程采用C#语言,以VS2005为开发工具。
读者对象:ArcGIS Engine(以下简称AE)开发初学者, 了解AE基本体系,了解C#基本语法,了解VS2005的基本使用方法。
预期学习效果:进一步理解AE的体系结构与开发方法,掌握基本的GIS桌面应用程序的开发。
教程目录:第一讲桌面GIS应用程序框架的建立第二讲菜单的添加及其实现第三讲MapControl与PageLayoutControl同步第四讲状态栏信息的添加与实现第五讲鹰眼的实现第六讲右键菜单添加与实现教程Bug及优化方案1第七讲图层符号选择器的实现1第七讲图层符号选择器的实现2第八讲属性数据表的查询显示------------------------------------------------------------------第一讲:桌面GIS应用程序框架的建立本讲主要是使用MapControl、PageLayoutControl、ToolbarControl、TOCControl四个控件建立起基本的桌面GIS应用程序框架。
最终成果预览如下:1、新建项目启动VS2005,选择“文件|新建|项目”,在项目类型中选择Visual C#,再选择Windows应用程序模板,输入名称“3sdnMap”,点击确定。
在解决方案管理器中将“Form1.cs”重命名为“3sdnMap.cs”,在设计视图中,选中窗体,将其属性中的“Text”改为“3sdnMap”。
2、添加控件选择工具箱中的“菜单和工具栏|MenuStrip”,将其拖入窗体。
选择工具箱中的“ArcGIS Windows Forms”节,将“ToolbarControl”控件拖入窗体,并将其属性中的Dock设置为Top。
选择工具箱中的“菜单和工具栏|StatusStrip”,将其拖入到窗体。
选择工具箱中的“容器|SplitContainer”容器拖入窗体,并将其属性中的Dock设置为Fill。
将TabControl控件拖入Panel1,将Alignment属性设置为Bottom,Dock属性设置为Fill。
点击TabPages属性右边的按钮,弹出TabPage集合编辑器,将tabPage1的Name设置为tabPageLayer,Text设置为图层,将tabPage2的Name设置为tabPageProperty,Text设置为属性。
如下所示。
选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill。
选择“属性”选项卡,拖入DataGridView控件,设置Dock属性为Fill。
拖入TabControl控件到Panel2,设置Dock属性为Fill。
并上述类似的方法,将两个选项卡的Name和Text分别设置为:(tabPageMap、地图),(tabPageLayout,制版)。
选择“地图”选项卡,拖入MapControl控件,设置Dock属性为Fill。
选择“制版”选项卡,拖入PageLayoutControl控件,设置Dock属性为Fill。
最后将LicenseControl控件拖入到窗体的任意地方。
按F5编译运行,可以看到刚才布局好的程序界面了。
3、控件绑定通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。
分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1,如下图所示。
这样,工具条和图层控件就与地图控件关联了。
4、添加工具此时,工具条中还没有任何工具,添加的方法也很简单。
右击ToolbarControl,选择“属性|Items”,点击Add,选择Commands选项卡中的Generic,双击Open、SaveAs、Redo、Undo 即可将相应工具添加到工具条。
常见的工具有:Map Navigation中的导航工具,Map Inquiry中的查询工具,Feature Selection中的选择工具,你可以根据需要酌情添加工具。
5、编译运行按F5即可编译运行程序,至此桌面GIS应用程序框架基本框架已经搭建好了,你可以通过工具条的工具打开地图文档,浏览地图了,效果如开篇所示.第二讲菜单的添加及其实现------------------------------------------------------------------在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下。
在“属性”选项卡中,我们当时添加的是DataGridView 控件,这个控件是用来显示数据表的,而专门用于属性的查询和设置的控件是PropertyGrid 控件。
因此请你删除“属性”选项卡中的DataGridView 控件,再把位于“工具箱| 所有Windows 窗体|PropertyGrid ”(如果没有,右击选择“选择项”以添加此控件)控件拖到该选项卡。
在这一讲中,主要讲解菜单的添加和实现。
1、添加菜单在设计视图中,单击菜单栏,会出现“请在此处键入”的提示,单击提示就可以键入菜单名称,如“文件”,再单击“文件”,即可输入其下拉子菜单,如下所示:Tips :每创建一个菜单,请在其属性面板中设置Name 属性,而且不要为中文,因此Name 值将是此菜单响应函数的函数名的一部分,带中文的函数名,总是不好吧。
本讲中,我们将添加新建(New )、打开(Open )、添加数据(AddData )、保存(Save )、另存为(SaveAs )、退出(Exit )这些菜单,()内为相应的Name 属性值。
Tips:你可以在属性面板中的Text 属性中,把菜单名设置为中英文形式,如“打开O pen ”,带下划线的O 表示此项菜单的快捷键是字母O ,设置方法是在相应字母前加上“& ”字符,如“打开&Open ”。
但这种快捷键只在打开此下拉菜单时才有效,即当你单击“文件”菜单弹出下拉菜单时,按下字母O 就可以定位到“打开”菜单。
还有一种在程序运行时都有效的全局快捷键,可以在属性面板中的“ShortCutKeys ”中设置。
你还可以在属性面板中的Image 属性中设置你喜欢的菜单图标。
单击Image 那一行右边的按钮,弹出如下菜单。
选择“项目资源文件”,再单击导入就可以选择你的图标了。
最终效果如下所示。
注意,在解决方案面板中,选中刚才添加的所有图标,在其属性面板中将生成操作设置为“嵌入的资源”,这一点很重要!2、实现相关菜单首先定义指针(写在public partial class Form1 : Form 下面即可):private ESRI.ArcGIS.Controls.IMapControl3 m_mapControl = null;private ESRI.ArcGIS.Controls.IPageLayoutControl2 m_pageLayoutControl = null;private IMapDocument pMapDocument;若以上指针无效,请添加以下引用:using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.SystemUI;在设计视图中的属性面板中,选择Form1 ,即主窗体,单击事件按钮(闪电形状的那个按钮),打到“Load ”事件并双击,添加此事件。
在Form1_Load 函数中初始化这些指针:// 取得MapControl 和PageLayoutControl 的引用m_mapControl = (IMapControl3)this.axMapControl1.Object;m_pageLayoutControl = (IPageLayoutControl2)this.axPageLayoutControl1.Object;依次双击每个菜单项,添加菜单响应函数。
实现代码如下:/// <summary>/// 新建地图命令/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void New_Click(object sender, EventArgs e){// 本命令涉及到MapControl 和PageLayoutControl 同步问题,将在下一讲中实现}/// <summary>/// 打开地图文档Mxd 命令/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Open_Click(object sender, EventArgs e){// 本命令涉及到MapControl 和PageLayoutControl 同步问题,将在下一讲中实现}/// <summary>/// 添加数据命令/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void AddData_Click(object sender, EventArgs e){int currentLayerCount = yerCount;ICommand pCommand = new ControlsAddDataCommandClass();pCommand.OnCreate(this.axMapControl1.Object);pCommand.OnClick();}/// <summary>/// 保存地图文档命令/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Save_Click(object sender, EventArgs e){// 首先确认当前地图文档是否有效if (null != m_pageLayoutControl.DocumentFilename && m_mapControl.CheckMxFile(m_pageLayoutControl.DocumentFilename)){// 创建一个新的地图文档实例IMapDocument mapDoc = new MapDocumentClass();// 打开当前地图文档mapDoc.Open(m_pageLayoutControl.DocumentFilename, string.Empty);// 用PageLayout 中的文档替换当前文档中的PageLayout 部分mapDoc.ReplaceContents((IMxdContents)m_pageLayoutControl.PageLayout);// 保存地图文档mapDoc.Save(esRelativePaths, false);mapDoc.Close();}}/// <summary>/// 另存为地图文档命令/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void SaveAs_Click(object sender, EventArgs e)// 调用另存为命令ICommand command = new ControlsSaveAsDocCommandClass();command.OnCreate(m_controlsSynchronizer.ActiveControl);command.OnClick();}/// <summary>/// 退出程序/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Exit_Click(object sender, EventArgs e){Application.Exit();}3、编译运行按F5 编译运行程序。