ArcEngine初识 -- 打开地图

一句代码

  1. 创建winform程序
  2. 必须要添加LicenseControl控件
  3. TOCControl视图控件 => 属性,设置关联属性绑定(Buddy)到地图控件上
  4. ToolbalControl工具条控件 伙伴控价 => 设置关联属性绑定到地图控件上
  5. MapControl地图控件 也可以设置属性设置默认打开的地图
  6. 引用ESRI.ArcGIS.Version
  7. 在主程序代码中加入:
1
2
3
//在窗口加载前添加    绑定产品码
// 注意是 program.cs文件
 ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

才能正常运行

常见的AE控价

  • PageLayoutControl 布局视图
  • TOOControl 内容列表
  • MapControl 数据视图

打开地图文档

F1 自己写的
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//打开mxd文档 F1
            try
            {
                //实例化一个对象
                OpenFileDialog open = new OpenFileDialog();
                //设置参数
                //检查文件是否存在
                open.CheckFileExists = true;
                open.Title = "打开地图文档";
                // 不允许多个文件同时打开
                open.Multiselect = false;
                // 存储时打开的文件路径
                open.RestoreDirectory = true;
                //打开文件格式
                open.Filter = "地图文档(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|*.mxt";|所有地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf"/文件过滤条件
                open.Multiselect = false;//禁止多选
                open.RestoreDirectory = true;  // 存储打开的文件路径
                //判断如果文件正常打开
                if (open.ShowDialog() == DialogResult.OK)
                {
                    // 获取文件路径  path+name
                    string fileName = open.FileName;
                    // 数据窗口加载地图文档
                    axMapControl1.LoadMxFile(fileName);
                    // 刷新一下页面
                    axMapControl1.ActiveView.Refresh();
                    // 伙伴控件可以通过下面的方式来进行绑定
                    axTOCControl1.SetBuddyControl(axMapControl1);

                }
            }
            catch(Exception)
            {
                MessageBox.Show("请打开正确的文档!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }
       
F2 使用IMapControl接口的LoadMxFile方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
            OpenFileDialog open = new OpenFileDialog();
            //设置参数
            //检查文件是否存在
            open.CheckFileExists = true;
            open.Title = "打开地图文档";
            // 不允许多个文件同时打开
            open.Multiselect = false;
            // 存储时打开的文件路径
            open.RestoreDirectory = true;
            //打开文件格式
            open.Filter = "地图文档(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|*.mxt;|所有地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";//文件过滤条件
            open.Multiselect = false;//禁止多选
            open.RestoreDirectory = true;  // 存储打开的文件路径
            open.ShowDialog();
            //文件名
            string fileName = open.FileName;

            if (fileName == "")
            {
                return;
            }
            //检查地图文档有效性
            if (mainMapControl.CheckMxFile(fileName))
            {
                mainMapControl.LoadMxFile(fileName);
                mainMapControl.ActiveView.Refresh();

            }
            else
            {
                MessageBox.Show(fileName + "是无效的地图文档!", "信息提示");
                return;
            }
F3 使用IMapDocument接口
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// using ESRI.ArcGIS.Carto;
            OpenFileDialog open = new OpenFileDialog();
            //设置参数
            //检查文件是否存在
            open.CheckFileExists = true;
            open.Title = "打开地图文档";
            // 不允许多个文件同时打开
            open.Multiselect = false;
            // 存储时打开的文件路径
            open.RestoreDirectory = true;
            //打开文件格式
            open.Filter = @"地图文档(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|*.mxt;|所有地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";//文件过滤条件
            open.Multiselect = false;//禁止多选
            open.RestoreDirectory = true;
            //打开窗口
            open.ShowDialog();
            // 存储打开的文件路径
            string fileName = open.FileName;
            if (mainMapControl.CheckMxFile(fileName))
            {
                //将数据载入pMapDocument并与Map控件关联
                IMapDocument pMapDocument = new MapDocument();   // using ESRI.ArcGIS.Carto;
                pMapDocument.Open(fileName, "");
                //获取Map地图中激活的地图文档
                mainMapControl.Map = pMapDocument.ActiveView.FocusMap;
                mainMapControl.ActiveView.Refresh();
            }
F4 使用ControlsOpenDocCommandClass类库资源 =》 适合比赛用
1
2
3
4
5
//using ESRI.ArcGIS.Controls;
            ICommand command = new ControlsOpenDocCommandClass();    //using ESRI.ArcGIS.Controls;
            command.OnCreate(mainMapControl.Object);
            command.OnClick();
            mainTOCControl.SetBuddyControl(mainMapControl);
待改进之处:
  1. 窗口的大小以及出现的位置,美化
  2. Form的name随着文档的名字改变
0%