ArcEngine开发之自定义工具栏--打开文件(C#)
来源:互联网 发布:淘宝商城劳保鞋 编辑:程序博客网 时间:2024/06/10 02:27
1、打开地图文档
创建GIS类,选择Base Command模版,类的名称为OpenNewMapDocument,选择第2类:ArcMap MapControl or PageLayoutControl command
以下为该文档的代码:
using System;using System.Drawing;using System.Windows.Forms;using System.Runtime.InteropServices;using ESRI.ArcGIS.ADF.BaseClasses;using ESRI.ArcGIS.ADF.CATIDs;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Carto;namespace GIS{ /// <summary> /// Summary description for OpenNewMapDocument. /// </summary> [Guid("5bf50443-f852-47cd-9c96-984184b6cca6")] [ClassInterface(ClassInterfaceType.None)] [ProgId("MapAndPageLayoutSynchApp.OpenNewMapDocument")] public sealed class OpenNewMapDocument : BaseCommand { #region COM Registration Function(s) [ComRegisterFunction()] [ComVisible(false)] static void RegisterFunction(Type registerType) { // Required for ArcGIS Component Category Registrar support ArcGISCategoryRegistration(registerType); // // TODO: Add any COM registration code here // } [ComUnregisterFunction()] [ComVisible(false)] static void UnregisterFunction(Type registerType) { // Required for ArcGIS Component Category Registrar support ArcGISCategoryUnregistration(registerType); // // TODO: Add any COM unregistration code here // } #region ArcGIS Component Category Registrar generated code /// <summary> /// Required method for ArcGIS Component Category registration - /// Do not modify the contents of this method with the code editor. /// </summary> private static void ArcGISCategoryRegistration(Type registerType) { string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID); ControlsCommands.Register(regKey); } /// <summary> /// Required method for ArcGIS Component Category unregistration - /// Do not modify the contents of this method with the code editor. /// </summary> private static void ArcGISCategoryUnregistration(Type registerType) { string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID); ControlsCommands.Unregister(regKey); } #endregion #endregion private IHookHelper m_hookHelper; private ControlsSynchronizer m_controlsSynchronizer = null; private string m_sDocumentPath = string.Empty; public OpenNewMapDocument(ControlsSynchronizer controlsSynchronizer) { base.m_category = ".NET Samples"; base.m_caption = "Open Map Document"; base.m_message = "Open Map Document"; base.m_toolTip = "Open Map Document"; base.m_name = "DotNetSamplesOpenMapDocument"; m_controlsSynchronizer = controlsSynchronizer; try { string bitmapResourceName = GetType().Name + ".bmp"; base.m_bitmap = new Bitmap(GetType(), bitmapResourceName); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message, "Invalid Bitmap"); } } #region Overriden Class Methods /// <summary> /// Occurs when this command is created /// </summary> /// <param name="hook">Instance of the application</param> public override void OnCreate(object hook) { if (hook == null) return; if (m_hookHelper == null) m_hookHelper = new HookHelperClass(); m_hookHelper.Hook = hook; } /// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { //launch a new OpenFile dialog OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Map Documents (*.mxd)|*.mxd"; dlg.Multiselect = false; dlg.Title = "Open Map Document"; if (dlg.ShowDialog() == DialogResult.OK) { string docName = dlg.FileName; IMapDocument mapDoc = new MapDocumentClass(); if (mapDoc.get_IsPresent(docName) && !mapDoc.get_IsPasswordProtected(docName)) { mapDoc.Open(docName, string.Empty); // set the first map as the active view IMap map = mapDoc.get_Map(0); mapDoc.SetActiveView((IActiveView)map); m_controlsSynchronizer.PageLayoutControl.PageLayout = mapDoc.PageLayout; m_controlsSynchronizer.ReplaceMap(map); mapDoc.Close(); m_sDocumentPath = docName; } } } #endregion public string DocumentFileName { get { return m_sDocumentPath; } } }}
调用此命令:
OpenNewMapDocument openMapDoc =new OpenNewMapDocument(m_controlsSynchronizer); openMapDoc.OnCreate(m_controlsSynchronizer.MapControl.Object); openMapDoc.OnClick();
2、打开shapefile文件
//添加Shapefile文件函数 public void AddShapefile() { ESRI.ArcGIS.Carto.IActiveView activeView = axMapControl1.ActiveView; ESRI.ArcGIS.Carto.IActiveView activeView1 = axMapControl2.ActiveView; if (activeView == null) { return; } if (activeView1 == null) { return; } System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog(); openFileDialog.Filter = "Shapefiles (*.shp)|*.shp"; if (openFileDialog.ShowDialog() == DialogResult.OK) { string shapefileLocation = openFileDialog.FileName; string pathFile = shapefileLocation; if (shapefileLocation != "") { IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(shapefileLocation), 0); IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shapefileLocation)); IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; featureLayer.Name = featureClass.AliasName; featureLayer.Visible = true; //添加到主窗口中的代码 activeView.FocusMap.AddLayer(featureLayer); activeView.Extent = activeView.FullExtent; activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); //添加到鹰眼视图窗口中的代码 activeView1.FocusMap.AddLayer(featureLayer); activeView1.Extent = activeView1.FullExtent; activeView1.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } else { MessageBox.Show("操作出错啦!"); } } }
注:希望与大家分享下自己查找到的或者自己修改后的代码,新手学习,若有错误欢迎批评指正!
- ArcEngine开发之自定义工具栏--打开文件(C#)
- ArcEngine开发之自定义工具栏--地图放大、缩小(C#)
- ArcEngine开发之打印地图(C#)
- ArcEngine开发之导出地图(C#)
- ArcEngine开发之缓冲区分析实现(C#)
- C#+ArcEngine开发笔记
- 移动混合开发之文件管理工具栏
- C# WPF 快速开发03工具栏、文件打开栏
- C#+ArcEngine:加载打开CAD数据(VS2010窗体+代码)
- ArcEngine打开数据源(FeatureClass)
- C#+ArcEngine:打开Mxd地图文档
- 基于Arcengine+C#开发程序重新打开
- ArcEngine开发之Command控件
- ArcEngine (C#)自定义命令和工具
- C#+ArcEngine:加载打开Shp矢量数据和栅格数据(VS2010窗体+代码)
- C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)
- C#+ArcEngine 不同格式数据打开,对象创建,导入导出
- C#+ArcEngine 不同格式数据打开,对象创建,导入导出
- 测试工具(二)——Easy Mock
- HTML 测验 - 1
- jquery如何清空文件上传表单
- c# 图像读取几种方法
- 风的世界里有海的七滴泪水
- ArcEngine开发之自定义工具栏--打开文件(C#)
- 商城商品展示JS特效
- 几款免费的 Web 安全测试工具推荐
- ruby特殊的分割输入
- java 读取txt文件乱码
- Java中区别.toString() ,(String),valueOf()方法
- 推荐4本c语言宝书
- 淡墨写韵,不守起承转合
- 使用Process Explorer来查看句柄泄露