登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

ONE PIECE

永不期待,永不假设,永不强求,顺其自然。若是注定发生,必会如你所愿。

 
 
 

日志

 
 

保存栅格数据 ISaveAs.SaveAs Method (转)  

2010-04-04 19:44:25|  分类: AE+C# 开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Creates a new persistent Dataset of a given format.

[Visual Basic .NET]  Public Function SaveAs ( _      ByVal Name As String, _      ByVal Workspace As IWorkspace, _      ByVal Format As String _  ) As IDataset
[C#]  public IDataset SaveAs (      string Name,      IWorkspace Workspace,      string Format  );
[C++]  HRESULT SaveAs(    BSTR Name,    IWorkspace* Workspace,    BSTR Format,    IDataset** Dataset  );
[C++]

Parameters

Name [in]

  Name is a parameter of type BSTR

Workspace [in]

  Workspace is a parameter of type IWorkspace

Format [in]

  Format is a parameter of type BSTR

Dataset [out, retval]

  Dataset is a parameter of type IDataset

  

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Remarks

The format strings used for the supported formats are below, and they are case sensitive:

Format Name String Used
Imagine "IMAGINE Image"
TIFF "TIFF"
GRID "GRID"
JPEG "JPG"
JP2000 "JP2"
BMP "BMP"
PNG "PNG"
GIF "GIF"
PCI Raster "PIX"
X11 Pixmap "XPM"
PCRaster "MAP"
Memory Raster "MEM"
HDF4 "HDF4"
BIL "BIL"
BIP "BIP"
BSQ "BSQ"
Idrisi Raster Format "RST"
ENVI Raster Format "ENVI"
Geodatabase Raster "GDB"

 

How to SaveAs raster data

SummaryThis article shows how to save a raster to various raster formats (save as), how to set up storage properties if saved to a geodatabase, and how to control pyramid building when saved as IMG, TIFF, GRID, and geodatabase formats.


Development licensing Deployment licensing
ArcView ArcView
ArcEditor ArcEditor
ArcInfo ArcInfo
Engine Developer Kit Engine Runtime

Additional Requirements
  • Add the following References to your Visual Studio project and the corresponding using (C#) or Imports (VB.NET) statements:
  • Imports ESRI.ArcGIS.DataSourcesGDB
  • Imports ESRI.ArcGIS.DataSourcesRaster
  • Imports ESRI.ArcGIS.Geodatabase
  • Imports ESRI.ArcGIS.esriSystem


 

Saving as raster data

By using the ISaveAs interface, you can save a raster dataset or a raster into many raster formats. You can also save to a geodatabase if the output workspace is one of the geodatabase workspaces. See the following code example:
 


[C#]DE> DE>

public void SaveAs(IRasterDataset rasterDataset, IWorkspace workspace, string      sFormat, string sName)  
{  
    //Using ISaveAs2, you can specify the storage property for the output raster, such as tile size, compression,   
    //and pyramid building, etc. for geodatabase raster, some also applies to output as a file format.  
    ISaveAs saveAs = rasterDataset as ISaveAs;  
    saveAs.SaveAs(sName, workspace, sFormat);  
}    
public void SaveAsWithCompressionAndTile(IRasterDataset rasterDataset)  
{      //rasterDataset can be created from any data source, file system, or geodatabase. 
  
    //It could also be a raster object (IRaster).  
    ISaveAs2 saveAs2 = (ISaveAs2)rasterDataset;        //Set storage.   
    IRasterStorageDef rasterStorageDef = new RasterStorageDefClass();  
    IRasterStorageDef2 rasterStorageDef2 = (IRasterStorageDef2)rasterStorageDef;  
    rasterStorageDef2.CompressionType =          esriRasterCompressionType.esriRasterCompressionJPEG2000;  
    rasterStorageDef2.CompressionQuality = 50;  
    rasterStorageDef2.Tiled = true;  
    rasterStorageDef2.TileHeight = 128;  
    rasterStorageDef2.TileWidth = 128;  
    //Set output workspace.  
    IRasterWorkspaceEx rasterWorkspaceEx = OpenFileGDBWorkspace("c:\\temp\\fgdb.gdb")          ;  
    IWorkspace workspace = (IWorkspace)rasterWorkspaceEx;  
    saveAs2.SaveAsRasterDataset("filegdbRaster", workspace, "gdb", rasterStorageDef2)          ;  
}      
public IRasterWorkspaceEx OpenFileGDBWorkspace(string sPath)  
{  
    IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass();  
    IWorkspace workspace = workspaceFactory.OpenFromFile(sPath, 0);  
    IRasterWorkspaceEx rasterWorkspaceEx = (IRasterWorkspaceEx)workspace;  
    return rasterWorkspaceEx;  
}

DE>

[VB.NET]DE> DE>

 
Public Sub SaveAs(ByVal rasterDataset As IRasterDataset, ByVal workspace As IWorkspace, ByVal 
sFormat As String, ByVal sName As String)        
    'Using ISaveAs2, you can specify the storage property for the output raster, such as tile size, compression,  
    'and pyramid building, etc. for geodatabase raster, some also applies to output as a file format.  
    Dim saveAs As ISaveAs = TryCast(rasterDataset, ISaveAs)  
    saveAs.SaveAs(sName, workspace, sFormat)        
End Sub      
Public Sub SaveAsWithCompressionAndTile(ByVal rasterDataset As IRasterDataset)        
    'rasterDataset can be created from any data source, file system, or geodatabase.  
    'It could also be a raster object (IRaster).  
    Dim saveAs2 As ISaveAs2 = CType(rasterDataset, ISaveAs2)        
    'Set storage.  
    Dim rasterStorageDef As IRasterStorageDef = New RasterStorageDefClass  
    Dim rasterStorageDef2 As IRasterStorageDef2 = CType(rasterStorageDef, IRasterStorageDef2)        
    rasterStorageDef2.CompressionType = esriRasterCompressionType.esriRasterCompressionJPEG2000  
    rasterStorageDef2.CompressionQuality = 50  
    rasterStorageDef2.Tiled = True  
    rasterStorageDef2.TileHeight = 128  
    rasterStorageDef2.TileWidth = 128        
    'Set output workspace.  
    Dim rasterWorkspaceEx As IRasterWorkspaceEx = OpenFileGDBWorkspace("c:\temp\fgdb.gdb")  
    Dim workspace As IWorkspace = CType(rasterWorkspaceEx, IWorkspace)        
    saveAs2.SaveAsRasterDataset("filegdbRaster", workspace, "gdb", rasterStorageDef2)        
End Sub      
Public Function OpenFileGDBWorkspace(ByVal sPath As String) As IRasterWorkspaceEx        
    Dim workspaceFactory As IWorkspaceFactory = New FileGDBWorkspaceFactoryClass  
    Dim workspace As IWorkspace = workspaceFactory.OpenFromFile(sPath, 0)  
    Dim rasterWorkspaceEx As IRasterWorkspaceEx = CType(workspace, IRasterWorkspaceEx)        
    Return rasterWorkspaceEx        
End Function
 
Turning off pyramid building
 
You can also turn off pyramid building for outputs, such as IMG, GRID, and TIFF formats using the ISaveAs2
 
interface. See the following code example:
 


 

[C#]DE> DE>

 
public void SaveAsWithoutBuildingPyramids(IRaster raster)  
{  
    ISaveAs2 saveAs2 = (ISaveAs2)raster;    
    IRasterStorageDef rasterStorageDef = new RasterStorageDefClass();  
    IRasterStorageDef2 rasterStorageDef2 = (IRasterStorageDef2)rasterStorageDef;    
    rasterStorageDef2.PyramidLevel = 0;    
    IRasterWorkspace rasterWorkspace = SetRasterWorkspace("c:\\temp");  
    IWorkspace workspace = (IWorkspace)rasterWorkspace;    
    saveAs2.SaveAsRasterDataset("image1.img", workspace, "IMAGINE Image",          rasterStorageDef2);    
}      
public IRasterWorkspace SetRasterWorkspace(string sPath)  
{  
    IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass();  
    IWorkspace workspace = workspaceFactory.OpenFromFile(sPath, 0);  
    IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspace;    
    return rasterWorkspace;  
}

DE>

[VB.NET]DE> DE>

 
Public Sub SaveAsWithoutBuildingPyramids(ByVal raster As IRaster)        
    Dim saveAs2 As ISaveAs2 = CType(raster, ISaveAs2)        
    Dim rasterStorageDef As IRasterStorageDef = New RasterStorageDefClass      Dim rasterStorageDef2 As IRasterStorageDef2 = CType(rasterStorageDef, IRasterStorageDef2)        
    rasterStorageDef2.PyramidLevel = 0        
    Dim rasterWorkspace As IRasterWorkspace = SetRasterWorkspace("c:\temp")  
    Dim workspace As IWorkspace = CType(rasterWorkspace, IWorkspace)        
    saveAs2.SaveAsRasterDataset("image1.img", workspace, "IMAGINE Image", rasterStorageDef2)        
End Sub      
Public Function SetRasterWorkspace(ByVal sPath As String) As IRasterWorkspace        
    Dim workspaceFactory As IWorkspaceFactory = New RasterWorkspaceFactoryClass  
    Dim workspace As IWorkspace = workspaceFactory.OpenFromFile(sPath, 0)  
    Dim rasterWorkspace As IRasterWorkspace = CType(workspace, IRasterWorkspace)        
    Return rasterWorkspace        
End Function

 

 

 

  评论这张
 
阅读(3427)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018