Select to view content in your preferred language

how to set the parameters of create TIN

333
0
01-21-2024 06:31 PM
YetaoYang
New Contributor II

Now I am developing arcgis pro Add-in. I need to call the tool to create TIN, but I don't know how to set the parameters.

 

var map = MapView.Active.Map;
// 创建一个图层组
GroupLayer groupLayer = null;
await QueuedTask.Run(() =>
{
    // 创建图层组
    groupLayer = LayerFactory.Instance.CreateGroupLayer(map, 0, "Tin模型");
});
foreach (FeatureLayer selectedLayer in _selectedLayers)
{
    var fcName = selectedLayer.Name;
    var fieldName = comboBox2.Text;
    var gdbPath = Project.Current.DefaultGeodatabasePath;
    var outputdata = System.IO.Path.Combine(gdbPath, $"{fcName}_TIN模型");
    await QueuedTask.Run(async () =>
    {
        // 获取图层的坐标系
        SpatialReference spatialReference = selectedLayer.GetSpatialReference();
        try
        {
            
            // 构建工具箱工具的参数 
            var parameters = Geoprocessing.MakeValueArray(
                outputdata,
                spatialReference, //坐标系
                selectedLayer,
                fieldName,
                "Mass_Points",
                null
            );

            // 执行工具
            var progDlg = new ProgressDialog("进度条", "取消", 100, true);
            progDlg.Show();
            var results = await Geoprocessing.ExecuteToolAsync("ddd.CreateTin", parameters);
            // 工具运行完毕后关闭进度条
            progDlg.Hide();

            // 处理结果
            // 获取错误信息
            if (results.IsFailed)
            {
                await QueuedTask.Run(() =>
                {
                    // 将错误消息写入日志文件
                    System.IO.File.WriteAllLines(@"C:\Users\402\Desktop\test\errorlog.txt", results.Messages.Select(msg => $"{msg.Type}: {msg.Text}"));
                    Geoprocessing.ShowMessageBox(results.Messages, "工具执行失败", GPMessageBoxStyle.Error);
                });
            }
            else
            {
                MessageBox.Show("工具执行成功!");
                await QueuedTask.Run(() =>
                {
                    var layerDoc = new LayerDocument(new Uri(outputdata).LocalPath);
                    var createParams = new LayerCreationParams(layerDoc.GetCIMLayerDocument())
                    {
                        //Set visibility
                        IsVisible = false,
                    };
                    //Layer outputLayer = LayerFactory.Instance.CreateLayer<Layer>(createParams, MapView.Active.Map);
                    LayerFactory.Instance.CreateLayer<GroupLayer>(createParams, groupLayer);
                    // 获取 GroupLayer 中的图层集合
                    var layerCollection = groupLayer.Layers;

                });
            }
        }
        catch (Exception ex)
        {
            await QueuedTask.Run(() =>
            {
                //System.Windows.MessageBox.Show($"发生错误:{ex.Message}");
                System.Diagnostics.Debug.WriteLine($"发生错误:{ex.Message}");
                System.Diagnostics.Debug.WriteLine($"StackTrace: {ex.StackTrace}");
            });
        }
    });
0 Kudos
0 Replies