【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用

ArcGIS Pro自带了1000种以上的GeoProcessing工具,几乎可以实现所有你想要做的事。

【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用_第1张图片

ArcGIS Pro的二次开发并不需要我们从底层做起,很多功能只要学会调用工具并组合使用,就完全可以实现。

下面介绍如何调用系统自带的GeoProcessing工具,以及自己做的自定义工具箱。


一、调用GepProcessing工具

以【缓冲区】工具为例,直接上代码:

        protected override async void OnClick()
        {
            // 获取当前地图
            var map = MapView.Active.Map;
            // 获取图层
            var ly = map.GetLayersAsFlattenedList()[0];
            // 生成缓冲区工具所需的参数
            var par = Geoprocessing.MakeValueArray(ly, null, @"100 Meters",null,null, "ALL");
            // 开启异步
            await QueuedTask.Run(() =>
            {
                // 执行缓冲工具
                Geoprocessing.ExecuteToolAsync("analysis.Buffer", par);
            });
        }

主要用到2个方法:

1、【Geoprocessing.MakeValueArray()】方法用于生成工具所需的参数。

每个Geoprocessing工具都必须有参数,否则不能执行。

上面以【缓冲区】为例,在ArcGIS Pro中,我们可以看到工具参数如下:

【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用_第2张图片

MakeValueArray()中的参数要按照顺序一一填写,遇到参数是空值或采用默认值时,以null代替即可。(请无视上面的参数7,8)。

2、【Geoprocessing.ExecuteToolAsync()】方法用于执行工具。

该方法有2个参数。

参数1为工具名,这个和Arcpy工具是一致的,比说如【缓冲区】工具在Arcpy中的名称为【arcpy.analysis.Buffer】,在Geoprocessing里的名称则为【analysis.Buffer】。

可以看一下我之前的文章,里面有介绍方便的查找方法:

Python小技巧【4】——在脚本中调用系统工具或者自定义工具的小技巧icon-default.png?t=N176https://blog.csdn.net/xcc34452366/article/details/128734176?spm=1001.2014.3001.5501参数2即为上面MakeValueArray()方法生成的参数。

执行结果如下:

【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用_第3张图片


二、调用自定义工具箱

以自定义的工具【ZH-消除重复要素】为例(已放入文章末尾的工程文件里,可自行下载):

【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用_第4张图片

        protected override async void OnClick()
        {
            // 获取当前地图
            var map = MapView.Active.Map;
            // 获取图层
            var ly = map.GetLayersAsFlattenedList()[0];
            // 生成缓冲区工具所需的参数
            var par = Geoprocessing.MakeValueArray(ly, "result_fc");
            // 开启异步
            await QueuedTask.Run(() =>
            {
                // 执行缓冲工具
                var ToolPath = @"E:\0-资料\GIS相关\ArcGIS Pro二次开发工具\GeoprocessingTool\消除重复要素\cc工具箱.tbx\Repeat";
                Geoprocessing.ExecuteToolAsync(ToolPath, par);
            });
        }
    }

和Geoprocessing工具不同的是,在ExecuteToolAsync()方法的第一个参数需要输入完整的工具路径。需要注意的是最后的【Repeat】是工具名,不是在目录里看到的标注名【ZH-消除重复要素】,可右键单击工具属性查看。

其它的就没有什么区别了。


三、工程文件分享

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

GeoprocessingToolicon-default.png?t=N176https://pan.baidu.com/s/14Do5RaVGvgxwv7KtNfaqug?pwd=i8fh

你可能感兴趣的:(ArcGIS,ArcGIS,Pro,SDK,arcgis,c#,visual,studio)