IMxDocument pDoc;
IMap pMap;
IFeatureLayer pFeatLayer;
IFeatureClass pFeatClass;
IFeature pfeature;
IFields pFlds;
int iRaster;
IRasterValue pValue;
//int i;
IRasterDataset3 pRasterDataset;
ISaveAs pSaveAs;
IWorkspaceFactory pWorkspaceFactory;
IWorkspace pWorkspace;
IFeatureCursor pFeatcursor;
pDoc = m_application.Document as IMxDocument;
pMap = pDoc.Maps.get_Item(0);
pFeatLayer = pMap.get_Layer(0)as IFeatureLayer;
pFeatClass = pFeatLayer.FeatureClass;
pFeatcursor = pFeatLayer.Search(null, false);
pfeature = pFeatcursor.NextFeature();
while (pfeature!=null)
{
pFlds = pFeatClass.Fields;
iRaster = -1;
//i = 0;
for (int i = 0; i < pFlds.FieldCount; i++)
{
if (pFlds.get_Field(i).Type==esriFieldType.esriFieldTypeRaster)
{
iRaster = i;
}
}
pValue = pfeature.get_Value(iRaster) as IRasterValue;
pRasterDataset = pValue.RasterDataset as IRasterDataset3;
//Define the workspace to save the result to
pWorkspaceFactory = new RasterWorkspaceFactoryClass();
//**********Please change output location according to your system*********************
pWorkspace = pWorkspaceFactory.OpenFromFile(@"C:\temp\ExportOutput", 0);
pSaveAs = pRasterDataset as ISaveAs;
if (pSaveAs.CanSaveAs("JPEG"))
{
pSaveAs.SaveAs("JPG_Raster" + pfeature.OID + ".jpg",pWorkspace,"JPEG");
//pSaveAs.SaveAs("JPG_Raster" + pfeature.OID + ".jpg", pWorkspace, "JPEG");
}
pfeature = pFeatcursor.NextFeature();
}
//System.Diagnostics.Debug.Print("Export Finished");
MessageBox.Show("Export Finished");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