【ArcGIS Pro二次开发】(6):工程(Project)的基本操作
在ArcGIS Pro中我们对工程的基本操作一般包括打开、新建、保存等。下面演示在二次开发中如何用代码进行以上操作。
新建一个项目,命名为【ProjectManager】,添加8个按钮,命名为【CreateEmptyProject、CreateProjectByDefault、OpenExProjest、SaveProject、SaveAsProjest、GetCurrentProject、GetDefaultGDBPath、AddMap】,分别对应8种基本操作的演示,如下图所示:
一、创建一个空的工程
更新OnClick()事件,就一个方法,无参数。
代码如下:
protected override async void OnClick(){// 创建一个空的工程await Project.CreateAsync();}
二、根据系统默认模板来创建新工程
同样是创建工程的方法,但需要输入一个【设置】参数,【设置】直接引用系统默认。
更新OnClick()事件,代码如下:
protected override async void OnClick(){// 获取系统默认的工程设置var defaultProjectSettings = Project.GetDefaultProjectSettings();// 按模板创建新的工程await Project.CreateAsync(defaultProjectSettings);}
三、打开现有工程
通过打开对话框,获取要打开工程的路径,然后按此路径打开工程。
更新OnClick()事件,代码如下:
protected override async void OnClick(){OpenItemDialog openDlg = new OpenItemDialog(){Title = "选择一个工程", //打开对话框标题MultiSelect = false, //是否可以多选Filter = ItemFilters.Projects, //类型筛选};//打开对话框bool? ok = openDlg.ShowDialog();//如果没有选择内容,则返回if (!ok.HasValue || openDlg.Items.Count() == 0)return;//如果有选择内容,返回选择的内容var item = openDlg.Items.First();// 按返回的工程路径打开工程await Project.OpenAsync(item.Path);}}
四、保存当前工程
更新OnClick()事件,也是一个简单的方法,无参数。代码如下:
protected override async void OnClick(){// 保存工程await Project.Current.SaveAsync();}
五、工程另存为
通过打开对话框,获取要另存工程的路径,然后按此路径保存工程。
更新OnClick()事件,代码如下:
protected override async void OnClick(){SaveItemDialog saveDlg = new SaveItemDialog(){Title = "保存项目为", //打开对话框标题Filter = ItemFilters.Projects, //类型筛选};//打开对话框bool? ok = saveDlg.ShowDialog();//如果没有选择内容,则返回if (!ok.HasValue)return;// 按返回的工程路径保存await Project.Current.SaveAsAsync(saveDlg.FilePath);}}
六、获取当前工程
获取当前的工程,并通过消息框的方法显示。
更新OnClick()事件,代码如下:
protected override void OnClick(){// 获取当前的工程var project = Project.Current;// 用消息框显示MessageBox.Show("当前项目为:\r\n" + project.Path);}
七、获取当前工程默认的GDB数据库
获取当前工程默认的GDB数据库,并通过消息框的方法显示。
更新OnClick()事件,代码如下:
protected override void OnClick(){// 获取工程默认数据库var DefalutGDB = Project.Current.DefaultGeodatabasePath;// 用消息框显示MessageBox.Show("当前项目的默认数据库:\r\n" + DefalutGDB.ToString());}
八、在当前工程中创建新的地图
通过MapFactory.Instance.CreateMap方法创建新地图。有4个参数,第1个参数是地图名,第2,3个参数一般默认,第4个参数是要调用的底图。
更新OnClick()事件,代码如下:
protected override async void OnClick(){await QueuedTask.Run(() =>{// 创建示例地图var map = MapFactory.Instance.CreateMap("示例地图",MapType.Map,MapViewingMode.Map,Basemap.Oceans);ProApp.Panes.CreateMapPaneAsync(map);});}
九、工程文件分享
最后,放上工程文件的链接:
ProjectManagerhttps://pan.baidu.com/s/1enqUi4YpzxoQB-GvVfB9Xw?pwd=357c