【ArcGIS Pro二次开发】(6):工程(Project)的基本操作

本文详细介绍了在ArcGISPro中如何通过编程进行工程管理,包括新建、打开、保存、另存为、获取当前工程信息以及创建地图和导入mxd文件的操作。示例代码展示了这些功能的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ArcGIS Pro中我们对工程的基本操作一般包括打开、新建、保存等。下面演示在二次开发中如何用代码进行以上操作。

新建一个项目,命名为【ProjectManager】,添加8个按钮,命名为【CreateEmptyProject、CreateProjectByDefault、OpenExProjest、SaveProject、SaveAsProjest、GetCurrentProject、GetDefaultGDBPath、AddMap】,分别对应8种基本操作的演示,如下图所示:

e9c4fa1a0d5440b7a3926a17823065b8.png


 一、创建一个空的工程

更新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());

        }

八、获取当前工程默认的文件夹位置

获取当前工程默认的文件夹位置。

        protected override void OnClick()
        {
            // 获取工程默认文件夹位置
            var DefalutGDB = Project.Current.HomeFolderPath;
        }

九、在当前工程中创建新的地图

通过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);
            });
        }

十、导入mxd文件

先创建IProjectMultiItem再导入,代码如下:

await QueuedTask.Run(() =>
{
    // mxd文件路径
    string mxdPath = @"D:\XXX.mxd";
    // 获取当前项目
    Project currentProject = Project.Current;
    // 创建IProjectMultiItem
    IProjectMultiItem addedItem = (IProjectMultiItem)ItemFactory.Instance.Create(mxdPath);
    // 导入IProjectMultiItem
    currentProject.ImportItem(addedItem);
});

工程文件分享

最后,放上工程文件的链接:

ProjectManagericon-default.png?t=N7T8https://pan.baidu.com/s/1enqUi4YpzxoQB-GvVfB9Xw?pwd=357c

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值