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
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");
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.