So, I am trying to create a standalone app with the Pro SDK to run a geoprocessing tool (Register with Geodatabase).
First of all, I call ArcGIS.Desktop.Core.Geoprocessing.Geoprocessing.MakeValueArray(object[] args)
This call fails with
"System.NullReferenceException: Object reference not set to an instance of an object".
I've debugged this to the FindModule function in ArcGIS.Desktop.Framework.Contracts.Module and it comes down to the code:
if (FrameworkApplication._this == null)
return (ArcGIS.Desktop.Framework.Contracts.Module) null;
Which is always true in my standalone application. I guess that this means that MakeValueArray() does not work in standalone mode? Or can I create my own FrameworkApplication without starting ArcGIS Pro?
Solved! Go to Solution.
Sverker,
CoreHost applications don't have access to any of the ArcGIS.Desktop assemblies. To execute a geoprocessing tool, you have to shell out to an external process and call Python directly.
--Rich
Sverker,
CoreHost applications don't have access to any of the ArcGIS.Desktop assemblies. To execute a geoprocessing tool, you have to shell out to an external process and call Python directly.
--Rich
Thanks Rich!
That's what I thought and calling a python process was the solution I was thinking about using.
Not sure what the point is of CoreHost apps if they don't have access to basic functionality like invoking GP tools...is there any plan to extend the API to work with ArcGIS.Desktop assemblies? Also not sure how else to write Unit Tests without this ability...
There are no plans that I am aware of. Many customers are using CoreHost for data migration and similar applications.
--Rich
Is this still the case with ArcGIS Pro 3.0? I have a stand alone vb.net exe that executes geoprocessing models using libraries/assemblies from ArcMap 10.8.1. Windows Task Scheduler wakes it up every hour and it also performs a lot of SQL tasks via native SQL Server client libraries. It also calls a geoprocessing model that geocode addresses and later calls another geoprocessing model that appends those features to a feature class. Since ArcMap will not exist in the future, I'm trying to migrate it to rely on libraries from Pro.
Here's the VB.net / ArcObjects code:
Dim parameters As ESRI.ArcGIS.esriSystem.IVariantArray = New ESRI.ArcGIS.esriSystem.VarArray
Dim GP As esri.ArcGIS.Geoprocessing.IGeoProcessor2 = New esri.arcgis.Geoprocessing.Geoprocessor()
'Add the BestPath toolbox.
GP.AddToolbox("C:\path\to\my\toolbox.tbx")
parameters.Add(sGDBPath & "\databasename.DBO.myfeatureclass")
'Execute the model tool by name.
GP.Execute("DeleteCountyStatusPermits", parameters, Nothing)
There's no way to do this on machines that have Pro and not ArcMap? It would be nice to not have to 'wrap' these models in python scripts - that adds too much complexity to maintaining my project.
Thanks for your time,
Alex
I am trying to re-write older ArcObject (ArcGIS 10.8) to reproduce some background processing that updates a feature class by first deleting all the rows and then appending all new data from an interim in memory feature class. I ran into a wall when trying to call the geoprocessing tools DeleteFeatures and Append - well actually it was the Geoprocessing.MakeValueArray() that failed. Reading this, looks like it is not possible. Not a good experience of "Upgrade", loosing functionality.
Actually, just found the deleteFeatures method on the table object - That's 1+ for improvement. Maybe there is an Append or Copy features that I haven't found yet in the new API. Sorry for the negative comments before about the new SDK.