<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Summarize Attributes using ExecuteToolAsync in ArcGIS Pro SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193781#M8449</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have wrote about geoprocessing sdk help for .Net developers few times but unsuccessful.&lt;/P&gt;&lt;P&gt;Geoprocessing tool name should be constructed like&amp;nbsp; "&lt;SPAN&gt;SummarizeAttributes_&lt;/SPAN&gt;&lt;SPAN&gt;geoanalytics"&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MakeValueArray method doesn't need MCT. It should look like this:&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;List&amp;lt;string&amp;gt; fields = new List&amp;lt;string() { "Class_name", "Ft2" };
var sum_params = Geoprocessing.MakeValueArray(summarizeLayer, out_table, $"{string.Join(",", fields)}");&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 20 Jul 2022 05:53:41 GMT</pubDate>
    <dc:creator>GKmieliauskas</dc:creator>
    <dc:date>2022-07-20T05:53:41Z</dc:date>
    <item>
      <title>Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193730#M8447</link>
      <description>&lt;P&gt;Hi&amp;nbsp; - I'm not having success running the Summarize Attributes tool in the GeoAnalytics Desktop Tools using ExecuteToolAsync in ArcPro sdk 3.0. Below is my code.&amp;nbsp; Am I approaching this the correct way? I'm not sure if the tool name is correct, and I don't think the parameters I'm passing are correct either&amp;nbsp;&lt;/P&gt;&lt;P&gt;//summarize landscape classifications&lt;BR /&gt;var progSumDlg = new ProgressDialog("Running Geoprocessing Tool", "Cancel", 100, true);&lt;BR /&gt;progSumDlg.Show();&lt;BR /&gt;var sum_tool_name = "geoanalytics.Summarize";&lt;BR /&gt;//layer to summarize&lt;BR /&gt;var summarizeLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType&amp;lt;FeatureLayer&amp;gt;().First(l =&amp;gt; l.Name.Equals("test_clip"));&lt;BR /&gt;//field to classifiy and field to get stats for&lt;BR /&gt;Table table = summarizeLayer.GetTable();&lt;BR /&gt;TableDefinition tableDefinition = table.GetDefinition();&lt;BR /&gt;Field classField = tableDefinition.GetFields().FirstOrDefault(x =&amp;gt; x.Name.Contains("Class_name"));&lt;BR /&gt;Field statField = tableDefinition.GetFields().FirstOrDefault(x =&amp;gt; x.Name.Contains("Ft2"));&lt;BR /&gt;//output table&lt;BR /&gt;var out_table = System.IO.Path.Combine(gdb, "test_clip_summary");&lt;BR /&gt;var sum_params = await QueuedTask.Run(() =&amp;gt;&lt;BR /&gt;{&lt;BR /&gt;return Geoprocessing.MakeValueArray(new object[] { summarizeLayer, out_table, classField, statField});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;await Geoprocessing.ExecuteToolAsync(sum_tool_name, sum_params,&lt;BR /&gt;null, new CancelableProgressorSource(progSumDlg).Progressor, GPExecuteToolFlags.Default);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Pete&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jul 2022 23:36:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193730#M8447</guid>
      <dc:creator>PeteVitt</dc:creator>
      <dc:date>2022-07-19T23:36:53Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193781#M8449</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have wrote about geoprocessing sdk help for .Net developers few times but unsuccessful.&lt;/P&gt;&lt;P&gt;Geoprocessing tool name should be constructed like&amp;nbsp; "&lt;SPAN&gt;SummarizeAttributes_&lt;/SPAN&gt;&lt;SPAN&gt;geoanalytics"&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MakeValueArray method doesn't need MCT. It should look like this:&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;List&amp;lt;string&amp;gt; fields = new List&amp;lt;string() { "Class_name", "Ft2" };
var sum_params = Geoprocessing.MakeValueArray(summarizeLayer, out_table, $"{string.Join(",", fields)}");&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 05:53:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193781#M8449</guid>
      <dc:creator>GKmieliauskas</dc:creator>
      <dc:date>2022-07-20T05:53:41Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193891#M8451</link>
      <description>&lt;P&gt;You can use the syntax "geoanalytics.SummarizeAttributes" for tool names.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 12:44:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193891#M8451</guid>
      <dc:creator>KenBuja</dc:creator>
      <dc:date>2022-07-20T12:44:26Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193894#M8452</link>
      <description>&lt;P&gt;You will need to put a couple of lines inside of a QueuedTask.Run&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;Table table = summarizeLayer.GetTable();
TableDefinition tableDefinition = table.GetDefinition();
Field classField = tableDefinition.GetFields().FirstOrDefault(x =&amp;gt; x.Name.Contains("Class_name"));
Field statField = tableDefinition.GetFields().FirstOrDefault(x =&amp;gt; x.Name.Contains("Ft2"));&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 12:59:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193894#M8452</guid>
      <dc:creator>KenBuja</dc:creator>
      <dc:date>2022-07-20T12:59:07Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193944#M8453</link>
      <description>&lt;P&gt;I changed the tool name to "&lt;SPAN&gt;geoanalytics.SummarizeAttributes"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I tried two ways to call the tool as suggested:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;1) with field objects inside QueuedTask&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;var sum_params = await QueuedTask.Run(() =&amp;gt;&lt;BR /&gt;{&lt;BR /&gt;Table table = summarizeLayer.GetTable();&lt;BR /&gt;&amp;nbsp;TableDefinition tableDefinition = table.GetDefinition();&lt;BR /&gt;Field classField = tableDefinition.GetFields().FirstOrDefault(x =&amp;gt; x.Name.Contains("Class_name"));&lt;BR /&gt;&amp;nbsp;Field statField = tableDefinition.GetFields().FirstOrDefault(x =&amp;gt; x.Name.Contains("Ft2"));&lt;BR /&gt;&amp;nbsp;var out_table = System.IO.Path.Combine(gdb, "test_clip_summary");&lt;BR /&gt;&amp;nbsp;return Geoprocessing.MakeValueArray(new object[] { summarizeLayer, out_table, classField, statField });&lt;BR /&gt;});&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;await Geoprocessing.ExecuteToolAsync(sum_tool_name, sum_params,&lt;BR /&gt;null, new CancelableProgressorSource(progSumDlg).Progressor, GPExecuteToolFlags.Default);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;2) with fields as strings:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;List&amp;lt;string&amp;gt; fields = new List&amp;lt;string&amp;gt;() { "Class_name", "Ft2" };&lt;BR /&gt;var out_table = System.IO.Path.Combine(gdb, "test_clip_summary"); ;&lt;BR /&gt;var sum_params = Geoprocessing.MakeValueArray(summarizeLayer, out_table, $"{string.Join(",", fields)}");&lt;/P&gt;&lt;P&gt;await Geoprocessing.ExecuteToolAsync(sum_tool_name, sum_params,&lt;BR /&gt;null, new CancelableProgressorSource(progSumDlg).Progressor, GPExecuteToolFlags.Default);&lt;/P&gt;&lt;P&gt;in both cases the summary table is not being generated.&lt;/P&gt;&lt;P&gt;I've based my call to 'Summarize Attributes' on the Parameters section of&amp;nbsp; the Tool Reference located here:&lt;/P&gt;&lt;P&gt;&lt;A href="https://pro.arcgis.com/en/pro-app/2.8/tool-reference/big-data-analytics/summarize-attributes.htm" target="_blank"&gt;https://pro.arcgis.com/en/pro-app/2.8/tool-reference/big-data-analytics/summarize-attributes.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;I haven't so far been able to find a snippet or example of the tool being called by the sdk&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Pete&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 14:41:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193944#M8453</guid>
      <dc:creator>PeteVitt</dc:creator>
      <dc:date>2022-07-20T14:41:47Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193967#M8455</link>
      <description>&lt;P&gt;The first thing you'll want to do is to check in the ArcGIS Pro Geoprocessing History to see if the tool ran properly and what errors it encountered if it didn't. You should also be able to tell whether your inputs are what you expected.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 15:01:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193967#M8455</guid>
      <dc:creator>KenBuja</dc:creator>
      <dc:date>2022-07-20T15:01:43Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193993#M8458</link>
      <description>&lt;P&gt;I'm not seeing any of the sdk initiated geoprocessing calls (even successful ones) in the geoprocessing history&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 15:25:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1193993#M8458</guid>
      <dc:creator>PeteVitt</dc:creator>
      <dc:date>2022-07-20T15:25:26Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1194005#M8460</link>
      <description>&lt;P&gt;You can use the flag GPExecuteToolFlags.AddToHistory. This is an example of one of my calls&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;IGPResult result = await Geoprocessing.ExecuteToolAsync("management.Dissolve", Geoprocessing.MakeValueArray(arguments.ToArray()), null, null, null, GPExecuteToolFlags.AddToHistory);&lt;/LI-CODE&gt;&lt;P&gt; &lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 15:34:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1194005#M8460</guid>
      <dc:creator>KenBuja</dc:creator>
      <dc:date>2022-07-20T15:34:54Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1194716#M8471</link>
      <description>&lt;P&gt;First thing I notice is that the toolname is "Summarize&lt;EM&gt;Attributes&lt;/EM&gt;" rather than "Summarize" as u have it so that needs to be changed.&lt;/P&gt;&lt;P&gt;Second thing I noticed was that using the toolname "geoanalytics.SummarizeAttributes" I actually got a&amp;nbsp;&lt;STRONG&gt;_server_&lt;/STRONG&gt; flavor of the tool and not the _desktop_ flavor (not that I knew there were two as I am not personally familiar with the Geoanalytics toolbox).&lt;/P&gt;&lt;P&gt;I wonder if you have a similar issue and are invoking the Geoanalytics &lt;EM&gt;server&lt;/EM&gt; tool and not the desktop tool?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GP_tool3.png" style="width: 419px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/46483iD78C1F1D67BD2F72/image-size/large?v=v2&amp;amp;px=999" role="button" title="GP_tool3.png" alt="GP_tool3.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Well, eventually, I ended up with a toolname of "gapro.SummarizeAttributes" which seemed to do the trick and invoke the desktop toolbox. You can try my code below. (I am using the "Interacting with Maps.gdb\Crimes" dataset from the pro community sample data fyi).&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;internal class GPTestButton : Button {

  protected async override void OnClick()
  {
     var sum_tool_name = "gapro.SummarizeAttributes";
     //var sum_tool_name = "geoanalytics.SummarizeAttributes";
     var extent = MapView.Active.Extent;
     var summarizeLayer = MapView.Active.Map.GetLayersAsFlattenedList()
            .OfType&amp;lt;FeatureLayer&amp;gt;().FirstOrDefault(l =&amp;gt; l.Name == "Crimes");
     if (summarizeLayer == null) return;

     var gdb = Project.Current.DefaultGeodatabasePath;
     //output table
     var out_table = System.IO.Path.Combine(gdb, "crimes_summary");

     var fields = new List&amp;lt;string&amp;gt;() { "Major_Offense_Type", "Police_Precinct" };
     var summary_fields = new List&amp;lt;string&amp;gt;() { "Major_Offense_Type COUNT" };

     var sum_params = await QueuedTask.Run(() =&amp;gt;
     {
        return Geoprocessing.MakeValueArray(
           new object[] { summarizeLayer, out_table, fields, summary_fields });
     });

     await Geoprocessing.ExecuteToolAsync(sum_tool_name, sum_params,
               null, CancelableProgressor.None,
               GPExecuteToolFlags.InheritGPOptions);
     //Or open the dialog
     //Geoprocessing.OpenToolDialog(sum_tool_name, sum_params);
  }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Gives:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GP_tool2.png" style="width: 575px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/46480i7525AA2B94C8211C/image-size/large?v=v2&amp;amp;px=999" role="button" title="GP_tool2.png" alt="GP_tool2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;This is the tool dialog invoked via&amp;nbsp;Geoprocessing.OpenToolDialog&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GP_tool1.png" style="width: 373px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/46485iB6F8FE3D41BA855A/image-size/large?v=v2&amp;amp;px=999" role="button" title="GP_tool1.png" alt="GP_tool1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note: To resolve the toolname I had to look in the GP tool cache to see what it (GP) was looking for. You can find that here:&amp;nbsp;C:\Users\your_username\AppData\Local\ESRI\Local Caches. Despite their rather intimidating appearance they are just text files. Just drag and drop one of them into notepad. I searched for "SummarizeAttributes" and came up with two hits:&amp;nbsp;"geoanalytics.SummarizeAttributes" and&amp;nbsp;"gapro.SummarizeAttributes". As I had already tried "geoanalytics.SummarizeAttributes", I went with the other one.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GP_tool4.png" style="width: 999px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/46486i52D321415BE93D8F/image-size/large?v=v2&amp;amp;px=999" role="button" title="GP_tool4.png" alt="GP_tool4.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GP_tool5.png" style="width: 934px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/46487i83C93CF85FA438C4/image-size/large?v=v2&amp;amp;px=999" role="button" title="GP_tool5.png" alt="GP_tool5.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jul 2022 21:58:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1194716#M8471</guid>
      <dc:creator>CharlesMacleod</dc:creator>
      <dc:date>2022-07-21T21:58:34Z</dc:date>
    </item>
    <item>
      <title>Re: Summarize Attributes using ExecuteToolAsync</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1194739#M8473</link>
      <description>&lt;P&gt;Thanks Charles that worked&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Pete&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jul 2022 22:32:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/summarize-attributes-using-executetoolasync/m-p/1194739#M8473</guid>
      <dc:creator>PeteVitt</dc:creator>
      <dc:date>2022-07-21T22:32:38Z</dc:date>
    </item>
  </channel>
</rss>

