Load SpatialAnalyst in code

580
2
02-12-2014 01:02 PM
MartinLewis
New Contributor III
Does anyone have code showing how to check if SpatialAnalyst is loaded in ArcMap and if not, then to load it?

I have code that needs to have SpatialAnalyst loaded in ArcMap.  I've figured out how to tell if my user has a SpatialAnalyst license and how to tell if SpatialAnalyst is loaded (via IJITExtensionManager.IsExtensionEnabled).

Now I want to load SpatialAnalyst if it is not loaded, but can't figure out how to do that.
0 Kudos
2 Replies
NeilClemmons
Regular Contributor III
See the functions below:

Public Const Guid_SpatialAnalyst As String = "{3C5059FE-9F15-401A-94ED-EED914D73E3E}"


        Public Shared Function IsSpatialAnalystAvailable(ByVal application As IApplication) As Boolean
            Dim uid As New UID
            uid.Value = Guid_SpatialAnalyst

            Dim extension As IExtension = application.FindExtensionByCLSID(uid)
            Dim extensionConfig As IExtensionConfig = DirectCast(extension, IExtensionConfig)

            Return (extensionConfig.State <> esriExtensionState.esriESUnavailable)
        End Function


        Public Shared Function IsSpatialAnalystEnabled(ByVal application As IApplication) As Boolean
            Dim uid As New UID
            uid.Value = Guid_SpatialAnalyst

            Dim extension As IExtension = application.FindExtensionByCLSID(uid)
            Dim extensionConfig As IExtensionConfig = DirectCast(extension, IExtensionConfig)

            Return (extensionConfig.State = esriExtensionState.esriESEnabled)
        End Function


        Public Shared Function EnableSpatialAnalyst(ByVal application As IApplication) As Boolean
            Dim uid As New UID
            uid.Value = Guid_SpatialAnalyst

            Dim extension As IExtension = application.FindExtensionByCLSID(uid)
            Dim extensionConfig As IExtensionConfig = DirectCast(extension, IExtensionConfig)

            If extensionConfig.State = esriExtensionState.esriESUnavailable Then Return False
            If extensionConfig.State = esriExtensionState.esriESEnabled Then Return True
            extensionConfig.State = esriExtensionState.esriESEnabled

            Return True
        End Function


        Public Shared Function DisableSpatialAnalyst(ByVal application As IApplication) As Boolean
            Dim uid As New UID
            uid.Value = Guid_SpatialAnalyst

            Dim extension As IExtension = application.FindExtensionByCLSID(uid)
            Dim extensionConfig As IExtensionConfig = DirectCast(extension, IExtensionConfig)

            If extensionConfig.State = esriExtensionState.esriESUnavailable Then Return False
            If extensionConfig.State = esriExtensionState.esriESDisabled Then Return True
            extensionConfig.State = esriExtensionState.esriESDisabled

            Return True
        End Function
0 Kudos
MartinLewis
New Contributor III
Thanks much.

This did the trick and saved me hours of hunting in ArcObjects.
0 Kudos