Public Sub LoadToSDE(sDir As String, sInput As String, sServer As String, sInstance As String, _
sDB As String, sUser As String, sPasswd As String, sSDERaster As String)
' sDir: the directory where the input raster resides
' sInput: the name of input raster
' sServer,sInstance,sDB,sUser,sPasswd: ArcSDE connection info
' sSDERaster: the output ArcSDE raster dataset name
On Error GoTo eh
Dim pSDEConn As IRasterSdeConnection
Dim pSDEStorage As IRasterSdeStorage
Dim pSDEOp As IRasterSdeServerOperation
Dim pRasterWsFact As IWorkspaceFactory
Dim pRasterWS As IRasterWorkspace
Dim pGeoDs As IGeoDataset
' Initialize RasterSDELoader
Set pSDEConn = New RasterSdeLoader
' Make connection
pSDEConn.ServerName = sServer
pSDEConn.Instance = sInstance
pSDEConn.Database = sDB
pSDEConn.UserName = sUser
pSDEConn.Password = sPasswd
pSDEConn.InputRasterName = sDir & "\" & sInput
pSDEConn.SdeRasterName = sSDERaster
' Set storage parameters
Set pSDEStorage = pSDEConn
' Get spatialreference
Set pRasterWsFact = New RasterWorkspaceFactory
Set pRasterWS = pRasterWsFact.OpenFromFile(sDir, 0)
Set pGeoDs = pRasterWS.OpenRasterDataset(sInput)
' Set spatialreference
Set pSDEStorage.SpatialReference = pGeoDs.SpatialReference
' Set compression
pSDEStorage.CompressionType = esriRasterSdeCompressionTypeUncompressed
' Set tilesize
pSDEStorage.TileHeight = 128
pSDEStorage.TileWidth = 128
' Pyramids option
pSDEStorage.PyramidOption = esriRasterSdePyramidBuildWithFirstLevel
pSDEStorage.PyramidResampleType = RSP_BilinearInterpolation
pSDEStorage.CompressionType = esriRasterSdeCompressionTypeJPEG2000
' Start loading
Set pSDEOp = pSDEConn
pSDEOp.Create
pSDEOp.Update
' Calculate stats
pSDEOp.ComputeStatistics
' Cleanup
Set pSDEConn = Nothing
Set pSDEStorage = Nothing
Set pSDEOp = Nothing
Set pRasterWsFact = Nothing
Set pRasterWS = Nothing
Set pGeoDs = Nothing
Exit Sub
eh:
MsgBox Err.Description, vbInformation, "LoadToSDE" '错误处理
End Sub
sDB As String, sUser As String, sPasswd As String, sSDERaster As String)
' sDir: the directory where the input raster resides
' sInput: the name of input raster
' sServer,sInstance,sDB,sUser,sPasswd: ArcSDE connection info
' sSDERaster: the output ArcSDE raster dataset name
On Error GoTo eh
Dim pSDEConn As IRasterSdeConnection
Dim pSDEStorage As IRasterSdeStorage
Dim pSDEOp As IRasterSdeServerOperation
Dim pRasterWsFact As IWorkspaceFactory
Dim pRasterWS As IRasterWorkspace
Dim pGeoDs As IGeoDataset
' Initialize RasterSDELoader
Set pSDEConn = New RasterSdeLoader
' Make connection
pSDEConn.ServerName = sServer
pSDEConn.Instance = sInstance
pSDEConn.Database = sDB
pSDEConn.UserName = sUser
pSDEConn.Password = sPasswd
pSDEConn.InputRasterName = sDir & "\" & sInput
pSDEConn.SdeRasterName = sSDERaster
' Set storage parameters
Set pSDEStorage = pSDEConn
' Get spatialreference
Set pRasterWsFact = New RasterWorkspaceFactory
Set pRasterWS = pRasterWsFact.OpenFromFile(sDir, 0)
Set pGeoDs = pRasterWS.OpenRasterDataset(sInput)
' Set spatialreference
Set pSDEStorage.SpatialReference = pGeoDs.SpatialReference
' Set compression
pSDEStorage.CompressionType = esriRasterSdeCompressionTypeUncompressed
' Set tilesize
pSDEStorage.TileHeight = 128
pSDEStorage.TileWidth = 128
' Pyramids option
pSDEStorage.PyramidOption = esriRasterSdePyramidBuildWithFirstLevel
pSDEStorage.PyramidResampleType = RSP_BilinearInterpolation
pSDEStorage.CompressionType = esriRasterSdeCompressionTypeJPEG2000
' Start loading
Set pSDEOp = pSDEConn
pSDEOp.Create
pSDEOp.Update
' Calculate stats
pSDEOp.ComputeStatistics
' Cleanup
Set pSDEConn = Nothing
Set pSDEStorage = Nothing
Set pSDEOp = Nothing
Set pRasterWsFact = Nothing
Set pRasterWS = Nothing
Set pGeoDs = Nothing
Exit Sub
eh:
MsgBox Err.Description, vbInformation, "LoadToSDE" '错误处理
End Sub
本文介绍了一个用于将本地栅格数据集加载到ArcSDE数据库中的Visual Basic过程。该过程通过设置ArcSDE连接信息,指定输入栅格文件路径及名称,定义输出栅格数据集名称来实现。此外,还设置了空间参考、压缩类型、金字塔选项等参数。
3477

被折叠的 条评论
为什么被折叠?



