That worked a treat. I modified it to strip straight from sde... Got lazy with Db.null. If it appears in arcpy I imagine I'll be able to do the below in about a dozen lines.Private Sub ExtractRasters(ByVal FCName As String, ByVal Fieldx As Integer, ByVal OutputDir As String)
Dim pValue As IRasterValue
Dim pRasterDataset As IRasterDataset3
Dim pWorkspaceFactory As IWorkspaceFactory
Dim pWorkspace As IWorkspace
Dim pSaveAs As ISaveAs
Dim pPropSet As IPropertySet = New PropertySetClass()
With pPropSet
.SetProperty("Server", My.Settings.Server)
.SetProperty("Instance", My.Settings.Instance)
.SetProperty("Database", My.Settings.Database)
.SetProperty("AUTHENTICATION_MODE", My.Settings.AUTHENTICATION_MODE)
.SetProperty("USER", My.Settings.USER)
.SetProperty("PASSWORD", My.Settings.PASSWORD)
.SetProperty("version", "sde.DEFAULT")
End With
Dim pSDEWorkspace As IWorkspace
Dim pSDEWorkspaceFactory As New SdeWorkspaceFactory
pSDEWorkspace = pSDEWorkspaceFactory.Open(pPropSet, 0)
Dim pFeatureWorkspace As IFeatureWorkspace = pSDEWorkspace
Dim pFeatureClass As IFeatureClass = pFeatureWorkspace.OpenFeatureClass(FCName)
Dim pFeatcursor As IFeatureCursor = pFeatureClass.Search(Nothing, True)
Dim pfeature As IFeature = pFeatcursor.NextFeature
Dim pFlds As IFields = pFeatureClass.Fields
If pFlds.Field(Fieldx).Type <> esriFieldType.esriFieldTypeRaster Then
Console.WriteLine("Field chosen (" + Fieldx.ToString + ") is not a raster field!")
Exit Sub
End If
Dim fcount As Integer = 0
While Not pfeature Is Nothing
Try
pValue = pfeature.Value(Fieldx)
pRasterDataset = pValue.RasterDataset
pWorkspaceFactory = New RasterWorkspaceFactoryClass
pWorkspace = pWorkspaceFactory.OpenFromFile(OutputDir, 0)
pSaveAs = pRasterDataset
Dim filename As String = "JPG_Raster" + pfeature.OID.ToString + ".jpg"
If pSaveAs.CanSaveAs("JPEG") And System.IO.File.Exists(OutputDir + "\" + filename) = False Then
pSaveAs.SaveAs(filename, pWorkspace, "JPEG")
fcount += 1
End If
Catch ex As Exception
Console.WriteLine(ex.Message + " CONTINUING")
End Try
pfeature = pFeatcursor.NextFeature
End While
pfeature = Nothing
Console.WriteLine(fcount.ToString + " file/s written out.")
End Sub