在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