Dear colleagues from Esri,
Most calculation or database management functions in ArcGIS Pro SDK are realized using geoprocessing. All information you can get about geoprocessing functions:
- ArcGIS Pro API reference (about Geoprocessing.ExecuteToolAsync and etc.)
- ArcGIS Pro Snippets ( about Analysis.MultipleRingBuffer and ),
- other ArcGIS documentation with ArcPy samples.
What to do for ArcGIS Pro SDK .Net developer? Run geoprocessing tool from ArcGIS Pro, copy from history arcpy code of executed tool, solve rebus how to convert geoprocessing tool name from arcpy to .Net, how to arrange parameters especially list and etc.?
For example spatial analyst Euclidean distance tool. Arcpy script from history looks like this:
out_distance_raster = arcpy.sa.EucDistance(r"Sites", 1000, 50, None, "PLANAR", None, None);
First idea is to check geoprocessing results. It is wrong way. You need somehow to understand that result raster name must be second parameter after featureclass name. Looks strange but it works.
In snippet mentioned above (Analysis.Buffer) you can find geoprocessing flag .. Try to use that flag with Euclidean distance. You will wait for results of Euclidean distance all your life and you will never get results. I had a problem few ArcGIS Pro releases ago and solving of problem was . flag adding. When that flag is useable when not?
Could you please make a table with all available geoprocessing functions for .Net developers with arguments or make some notes where are differences between arcpy and .Net calling, explain more complicated arguments converting from arcpy to .Net and put it on ArcGIS Pro API reference, ArcGIS Pro SDK GitHub or somewhere else.
One more line about ArcGIS Pro API reference on internet. Open it with MS Explorer, Edge and press "Search" button at the bottom of left corner. Search input line appears after 0,5-1 minute. In our country we have one of the fastest internet network and it is not a internet speed problem. Other internet browsers I have not tried.
Hi Gintautas, thanks for your suggestions. We're also requesting suggestions from all users. We'll add more examples, snippets as soon as possible. Meanwhile, if you have any other comments please share. Thanks again.
I am back to my suggestion.
My application needs HillShade geoprocessing tool. Situation the same as with EucDistance tool.
out_raster = arcpy.sa.HillShade("dsm", 315, 45, "SHADOWS", 1);
Output raster parameter in second place for .Net API. How to find it? I have spent half a day. Empty error messages. After some time I found old good ArcGIS 9.3 page:
and one line in the scope of page:
# Process: Hillshade gp.Hillshade_sa(InRaster, OutRaster, InAzimuth, InAltitude)
Another one note. When I execute from .Net Add-in geoprocessing tool with GPExecuteToolFlags.AddToHistory flag, if tool finishes successfully it adds it to history, otherwise -no. When you execute tool from ArcGIS Pro Geoprocessing pane it adds to history always. It would be useful to have the same functionality and from ArcGIS Pro API.
Hi Gintautas, we are in the process of adding Pro SDK C# snippets/examples along with Python examples. So, when you'll open a tool reference/help page you'll see one or more C# code examples.
However, it may take some time - don't know the final schedule yet.
Thanks again to the GeoNet community
+1 for a reference page that at least provides the name of each GP tool that can be executed using the C# Geoprocessing object. I spent most of my afternoon yesterday after upgrading from Pro 2.4 to 2.6.3. The ZonalStatisticsAsTable tool was apparently renamed to ZonalStatisticsAsTable_sa in this new version which broke my existing code. I found no documentation anywhere of this change. And this is not the first time I have had to hunt down the name of a tool.
And +1 that the search function in the ArcGIS Pro SDK function is quite slow. Using Chrome on Windows 10.
Not 9.3 - but the current version of the software. For example, ArcGIS Pro 2.5. If you look into an older version then you won't see documentation for the newer tools.
For example - the code below is done according to the documentation, however, there is no way you can specify the output raster in the code using the PRO SDK.
// according to arcgis PRO SDK var cutFillParams = Geoprocessing.MakeValueArray(raster1, raster2, z_factor); var gpresult = await Geoprocessing.ExecuteToolAsync("CutFill_sa", cutFillParams, environments);
Luckily the 9.3 Cut FIll tells you how to specify the output raster
which for Arc PRO SDK capability to set raster, you can put the outRaster before the z_factor, hence it is different than PRO SDK documentation.
// according to arcgis PRO SDK var cutFillParams = Geoprocessing.MakeValueArray(raster1, raster2, outRaster, z_factor); var gpresult = await Geoprocessing.ExecuteToolAsync("CutFill_sa", cutFillParams, environments);