四、使用SDERaster进行数据加载
在ArcGIS9/ArcSDE9的环境中,推荐使用ArcGIS geoprocessing工具来向geodatabase中加载栅格数据。但是,某些情况下,用户需要使用SDERaster命令来加载数据(比如当ArcSDE及数据都安装在UNIX系统下,用户需要采用SDERaster批处理脚本)。
在9版本中,栅格数据集和栅格目录表的结构都含有一个几何列,但是SDERaster命令不识别这种几何列,因为这种结构是在geodatabase的层次上定义的,而geodatabase是SDE客户端应用程序的最高层次。通常,SDERaster命令仅向栅格列(raster column)加载数据。对于栅格数据集,在ArcGIS中读取和显示数据并不需要几何列,因此使用SDERaster命令加载栅格数据集将创建一个能在ArcGIS9中直接使用的栅格数据集。如果某些应用程序需要使用几何列,则可以编写代码通过AO在geodatabase中注册栅格。
使用SDERaster创建和插入栅格目录表
使用SDERaster命令创建的栅格目录表将是8.3结构的,它的业务表中不含有几何列。这种栅格目录表在ArcGIS9里面表现为带有栅格列的表格。为了使之成为一个9版本的geodatabase栅格目录表,用户在加载完所有数据之后应该对其在geodatabase中进行注册。
使用geoprocessing工具创建栅格目录表并使用SDERaster插入栅格
如果用户使用geoprocessing工具或者ArcObjects创建栅格目录表,那么该栅格目录表就具有9版本的结构,它不仅含有栅格列,还含有几何列。一旦栅格目录表被创建,SDERaster命令就可用于向其中插入栅格数据。栅格列由栅格数据而生成,而几何列仍为空值,因为SDERaster无法使用几何列。由于几何列是空值,所以栅格目录表无法在ArcGIS中预览。因为目前没有geoprocessing工具或环境菜单可用来为栅格目录表更新几何列(译者注:当时是2004年,不知道现在是否有相应的工具解决这个问题),所以只能使用ArcObjects来完成这个工作了。下面是更新栅格目录表的几何列的VB代码。这个代码也可以在开发者帮助中找到:on Developer Help > Raster > Converting Raster Data > Update Geometry Column In Raster Catalog
更新几何列的VB代码
Sub UpdateGeometryInRasterCatalog(pSDEWs As IRasterWorkspaceEx, sCatalog As string)
' Update the geometry column in a 9.0 raster catalog
Dim pCatalog As IRasterCatalog
Dim pCatalogHelper As IRasterCatalogHelper
'Open raster catalog
Set pCatalog = pSDEWs.OpenRasterCatalog(sCatalog)
'Initialize helper class
Set pCatalogHelper = New RasterCatalogHelper
'Update the geometry
pCatalogHelper.UpdateFootprint pCatalog
Set pCatalog = Nothing
Set pCatalogHelper = Nothing
End Sub