[求助]VB实现栅格数据导入SDE数据库问题
我网上找到的一个栅格导入SDE的程序,我导入的是tif数据,总是在pSDEOp.Create这里报操作失败的错误(operation failed),我研究了几天也不知道错误出在什么地方,我觉得不是liecense的问题,会不会是函数参数不对,希望大家帮忙看看
另外想问下sCatalogName 是不是指空间数据库的连接名字,就像这样:"C:\Documents and Settings\zh\Application Data\ESRI\ArcCatalog\Connection to ser.sde"
还有就是函数中的keywords是什么有什么用一直都没有弄清楚,谢谢各位了
Public Sub LoadDirectoryToSDE(sServer As String, sInstance As String, sUser As String, sPassword As String, sCatalogName As String, sKeyword As String, sDir As String)
On Error GoTo eh
'*** ArcSDE-connection
Dim pPropSet As IPropertySet
Set pPropSet = New PropertySet
With pPropSet
.SetProperty "server", "ser"
.SetProperty "instance", "5151"
.SetProperty "user", "sde"
.SetProperty "password", "sde"
.SetProperty "version", "SDE.DEFAULT"
End With
Dim pWsName As IWorkspaceName
Set pWsName = New WorkspaceName
pWsName.WorkspaceFactoryProgID = "esricore.sdeworkspacefactory.1"
pWsName.ConnectionProperties = pPropSet
'*************************************************************************
'Dim pSDEConn As IRasterSdeConnection2
Dim pSDEConn As IRasterSdeConnection
Set pSDEConn = New RasterSdeLoader
pSDEConn.SdeWorkspaceName = pWsName
Dim pSDECatalog As IRasterSdeCatalog
Set pSDECatalog = pSDEConn
pSDECatalog.CatalogName = sCatalogName
Dim pSDEStorage As IRasterSdeStorage2
Dim pSDEOp As IRasterSdeServerOperation2
'Dim pSDEStorage As IRasterSdeStorage
'Dim pSDEOp As IRasterSdeServerOperation
'*************************************************************************
Dim sRasterDir As String
Dim iCount As Integer
Dim sString As String
Dim sName As String
Dim sNewName As String
Dim i As Integer
Dim iSlash As Integer
Dim pWSF As IWorkspaceFactory
Set pWSF = New RasterWorkspaceFactory
'*** Directory with rasters
'*** RasterWorkspace
Dim pRasWS As IRasterWorkspace
If Not pWSF.IsWorkspace(sDir) Then Exit Sub '我这里sDir为f:\tfw
Set pRasWS = pWSF.OpenFromFile(sDir, 0)
Dim pWS As IWorkspace
Set pWS = pRasWS
Dim pEnumDS As IEnumDataset
Set pEnumDS = pWS.Datasets(esriDTRasterDataset)
Dim pDataset As IDataset
Set pDataset = pEnumDS.Next
Dim sFileName As String
'*** Loop through rasters
Do Until pDataset Is Nothing
sFileName = pDataset.Name
'*** RasterDataset
Dim pRasDS As IRasterDataset
Set pRasDS = pRasWS.OpenRasterDataset(sFileName)
pSDEConn.InputRasterName = sDir ; "\" ; sFileName '我这里sFileName为t1111.tif
'pSDECatalog.RasterName = "SDE.T1111"
pSDEConn.SdeRasterName = "SDE.T1111"
Set pSDEStorage = pSDEConn ' Set storage parameters
'**********************************************
'*** CRS
Dim pSpatialReferenceFactory As ISpatialReferenceFactory
Dim pProjectedCoordinateSystem As IProjectedCoordinateSystem
Set pSpatialReferenceFactory = New SpatialReferenceEnvironment
'*** -> Change the CRS!!!
Set pProjectedCoordinateSystem = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(esriSRProjCS_Germany_3)
Set pSDEStorage.SpatialReference = pProjectedCoordinateSystem
'Set compression
pSDEStorage.CompressionType = esriRasterSdeCompressionTypeRunLength
' Set tilesize
pSDEStorage.TileHeight = 128
pSDEStorage.TileWidth = 128
' Pyramids option
pSDEStorage.PyramidOption = esriRasterSdePyramidBuildWithFirstLevel
pSDEStorage.PyramidResampleType = RSP_BilinearInterpolation
'pSDEStorage.CompressionType = esriRasterSdeCompressionTypeRunLength
Set pSDEOp = pSDEConn
If i = 0 Then
'pSDEStorage.Keyword = "sde.default"
pSDEOp.Create
Else
pSDEOp.Insert
End If
pSDEOp.ComputeStatistics
pSDEOp.BuildPyramids
i = 1
Set pDataset = pEnumDS.Next
Loop
'*** cleanup
Set pPropSet = Nothing
Set pWsName = Nothing
Set pSpatialReferenceFactory = Nothing
Set pProjectedCoordinateSystem = Nothing
Set pSDEConn = Nothing
Set pSDECatalog = Nothing
Set pWSF = Nothing
Set pRasWS = Nothing
Set pWS = pRasWS
Set pEnumDS = Nothing
Set pDataset = Nothing
Set pRasDS = Nothing
Set pSDEStorage = Nothing
Set pSDEOp = Nothing
Exit Sub
eh:
MsgBox Err.Description, vbCritical, "LoadDirectoryToSDE"