jcx0128
路人甲
路人甲
  • 注册日期2008-03-11
  • 发帖数9
  • QQ
  • 铜币134枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1086回复:0

[求助]VB实现栅格数据导入SDE数据库问题

楼主#
更多 发布于:2008-05-14 10:46
<P>我网上找到的一个栅格导入SDE的程序,我导入的是tif数据,总是报操作失败的错误(operation failed),我研究了几天也不知道错误出在什么地方,我觉得不是liecense的问题,会不会是函数参数不对,希望大家帮忙看看</P>
<P>另外想问下sCatalogName 是不是指空间数据库的连接名字,就像这样:"C:\Documents and Settings\zh\Application Data\ESRI\ArcCatalog\Connection to ser.sde"</P>
<P>还有就是函数中的keywords是什么有什么用一直都没有弄清楚,谢谢各位了 </P>

<P>Public Sub LoadDirectoryToSDE(sServer As String, sInstance As String, sUser As String, sPassword As String, sCatalogName As String, sKeyword As String, sDir As String)</P>
<P>On Error GoTo eh</P>
<P>'*** ArcSDE-connection<BR>Dim pPropSet As IPropertySet<BR>Set pPropSet = New PropertySet</P>
<P>With pPropSet<BR>    .SetProperty "server", "ser"<BR>    .SetProperty "instance", "5151"<BR>    .SetProperty "user", "sde"<BR>    .SetProperty "password", "sde"<BR>    .SetProperty "version", "SDE.DEFAULT"<BR>End With</P>
<P>Dim pWsName As IWorkspaceName<BR>Set pWsName = New WorkspaceName</P>
<P>pWsName.WorkspaceFactoryProgID = "esricore.sdeworkspacefactory.1"<BR>pWsName.ConnectionProperties = pPropSet</P>
<P>'*************************************************************************<BR>'Dim pSDEConn As IRasterSdeConnection2</P>
<P>Dim pSDEConn As IRasterSdeConnection<BR>Set pSDEConn = New RasterSdeLoader<BR>pSDEConn.SdeWorkspaceName = pWsName</P>
<P>Dim pSDECatalog As IRasterSdeCatalog<BR>Set pSDECatalog = pSDEConn<BR>pSDECatalog.CatalogName = sCatalogName</P>
<P>Dim pSDEStorage As IRasterSdeStorage2<BR>Dim pSDEOp As IRasterSdeServerOperation2<BR>'Dim pSDEStorage As IRasterSdeStorage<BR>'Dim pSDEOp As IRasterSdeServerOperation<BR>'*************************************************************************<BR>Dim sRasterDir As String<BR>Dim iCount As Integer<BR>Dim sString As String<BR>Dim sName As String<BR>Dim sNewName As String<BR>Dim i As Integer<BR>Dim iSlash As Integer</P>
<P>Dim pWSF As IWorkspaceFactory<BR>Set pWSF = New RasterWorkspaceFactory</P>
<P>'*** Directory with rasters<BR>'*** RasterWorkspace<BR>Dim pRasWS As IRasterWorkspace<BR>If Not pWSF.IsWorkspace(sDir) Then Exit Sub      '我这里sDir为f:\tfw<BR>Set pRasWS = pWSF.OpenFromFile(sDir, 0)</P>
<P>Dim pWS As IWorkspace<BR>Set pWS = pRasWS</P>
<P>Dim pEnumDS As IEnumDataset<BR>Set pEnumDS = pWS.Datasets(esriDTRasterDataset)</P>
<P>Dim pDataset As IDataset<BR>Set pDataset = pEnumDS.Next</P>
<P>Dim sFileName As String</P>
<P>'*** Loop through rasters<BR>Do Until pDataset Is Nothing</P>
<P>sFileName = pDataset.Name</P>
<P>'*** RasterDataset<BR>Dim pRasDS As IRasterDataset<BR>Set pRasDS = pRasWS.OpenRasterDataset(sFileName)</P>
<P>pSDEConn.InputRasterName = sDir ; "\" ; sFileName      '我这里sFileName为t1111.tif<BR>'pSDECatalog.RasterName = "SDE.T1111"<BR>pSDEConn.SdeRasterName = "SDE.T1111"</P>
<P>Set pSDEStorage = pSDEConn        ' Set storage parameters</P>
<P>'**********************************************<BR>'*** CRS<BR>Dim pSpatialReferenceFactory As ISpatialReferenceFactory<BR>Dim pProjectedCoordinateSystem As IProjectedCoordinateSystem</P>
<P>Set pSpatialReferenceFactory = New SpatialReferenceEnvironment</P>
<P>'*** -> Change the CRS!!!<BR>Set pProjectedCoordinateSystem = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(esriSRProjCS_Germany_3)<BR>Set pSDEStorage.SpatialReference = pProjectedCoordinateSystem</P>
<P>'Set compression<BR>    <BR>pSDEStorage.CompressionType = esriRasterSdeCompressionTypeRunLength</P>
<P>' Set tilesize<BR>pSDEStorage.TileHeight = 128<BR>pSDEStorage.TileWidth = 128</P>
<P>' Pyramids option<BR>pSDEStorage.PyramidOption = esriRasterSdePyramidBuildWithFirstLevel<BR>pSDEStorage.PyramidResampleType = RSP_BilinearInterpolation<BR> <BR>'pSDEStorage.CompressionType = esriRasterSdeCompressionTypeRunLength</P>
<P>Set pSDEOp = pSDEConn</P>
<P>If i = 0 Then<BR>'pSDEStorage.Keyword = "sde.default"<BR>pSDEOp.Create<BR>Else<BR>pSDEOp.Insert</P>
<P>End If</P>
<P>pSDEOp.ComputeStatistics<BR>pSDEOp.BuildPyramids</P>
<P>i = 1</P>
<P>Set pDataset = pEnumDS.Next</P>
<P>Loop</P>
<P>'*** cleanup<BR>Set pPropSet = Nothing<BR>Set pWsName = Nothing<BR>Set pSpatialReferenceFactory = Nothing<BR>Set pProjectedCoordinateSystem = Nothing<BR>Set pSDEConn = Nothing<BR>Set pSDECatalog = Nothing<BR>Set pWSF = Nothing<BR>Set pRasWS = Nothing<BR>Set pWS = pRasWS<BR>Set pEnumDS = Nothing<BR>Set pDataset = Nothing<BR>Set pRasDS = Nothing<BR>Set pSDEStorage = Nothing<BR>Set pSDEOp = Nothing</P>
<P>Exit Sub</P>
<P>eh:<BR>MsgBox Err.Description, vbCritical, "LoadDirectoryToSDE"</P>
喜欢0 评分0
游客

返回顶部