LinkToolAddin/server/CallArcGISPro.cs
2025-05-29 21:01:07 +08:00

39 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using ArcGIS.Desktop.Core.Geoprocessing;
using ArcGIS.Desktop.Framework.Dialogs;
using ArcGIS.Desktop.Framework.Threading.Tasks;
using Newtonsoft.Json;
namespace LinkToolAddin.server;
public class CallArcGISPro
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(CallArcGISPro));
public async static Task<JsonRpcResultEntity> CallArcGISProTool(string toolName, List<string> toolParams)
{
var results = await Geoprocessing.ExecuteToolAsync(toolName, toolParams);
JsonRpcResultEntity jsonRpcResultEntity;
if (results.ErrorCode == 0)
{
jsonRpcResultEntity = new JsonRpcErrorEntity()
{
Error = new Error()
{
Code = results.ErrorCode,
Message = JsonConvert.SerializeObject(results.ErrorMessages)
}
};
}
else
{
jsonRpcResultEntity = new JsonRpcSuccessEntity
{
Result = JsonConvert.SerializeObject(results.Messages)
};
}
return jsonRpcResultEntity;
}
}