传输大型栅格数据集
传输栅格数据时,应考虑数据的大小、是否可创建本地副本或数据是否为远程副本,以及可使用哪种分发介质。
栅格数据(例如,栅格数据集或栅格目录)的体积可能非常大,栅格数据集的大小可达几 TB;因此,如果要将超过常用传输介质大小的数据作为整体进行移动,需要考虑特殊的方式。
如果数据是现场复制的,则可以复制和粘贴这些数据。复制和粘贴的优势在于无需额外的空间来存储导出文件,并且操作十分简单。如果栅格数据集存储在文件地理数据库中,则可以将整个文件地理数据库文件夹复制到传输介质。但是,如果文件地理数据库包含其他不希望共享的数据,则需要在传输介质上创建一个新的文件地理数据库并将栅格数据集复制到其中。
如果栅格数据集存储在 ArcSDE 地理数据库中,则可以在传输介质上创建一个文件地理数据库并将栅格数据集复制到其中。使用文件地理数据库传输数据的优势在于它可随时使用。您可方便地连接传输介质并使用数据。您还可使用 ArcSDE sdeexport 命令行工具来移动数据。由于栅格对象的文件大小对于传输介质来说可能过大,您可能需要将数据分解为多个卷。可以使用以下方式创建卷:
sdeexport –X option creates volumes
某些 DBMS 供应商提供了可分离式数据库文件。Oracle 使用可传输的表空间(例如,在 Oracle 10g 中,数据文件能够跨操作系统进行传输),而 SQL Server 则使用分离的文件。使用可分离式数据库文件要远快于加载导出的文件。
如果导出文件的大小超过传输介质的可用存储空间,则应使用 sdeexport –X 选项。–X 选项用于指定导出文件卷的最大大小。在 ArcSDE 9.0 中,最大卷大小为 4 GB。在 9.1 中,最大卷大小增加到操作系统文件大小上限。要确定将创建的导出文件的大小,请将 sderaster 列表操作与 –storage 选项结合使用。
sdeexport 命令需要大量排序空间以导出栅格数据;因此,您需要创建大小约为最终导出文件的 4% 的临时空间。如果 sderaster –o list –storage 返回总大小为 100 GB 的导出文件,则您需要具有 4 GB 的可用临时空间。
sdeexport 示例:
$ sdeexport –o create –t earth –f earth –X 4G
ArcSDE for <dbms> Mon Jul 19 16:06:36 PDT 2004
SDEX File Export Administration Utility
---------------------------------------------------------
Exporting ArcSDE object to “earth" in SDEX 9.0 export format ...
Exporting table “earth".
Spatial column "FOOTPRINT"
Raster column "RASTER"
1 features converted.
1 features exported.
$ ls –l
total 5
-rw-rw-r-- 1 sde nuucp 4294967296 Aug 5 17:01 earth.000
-rw-rw-r-- 1 sde nuucp 4294967296 Aug 5 17:01 earth.001
-rw-rw-r-- 1 sde nuucp 9281019 Aug 5 17:01 earth.002
sdeimport 示例:
$ sdeimport –o create –t earth_at_15m –f earth –k earth_at_15m
ArcSDE 9.0 for <dbms> Mon Jul 19 16:06:36 PDT 2004
SDEX File Import Administration Utility
----------------------------------------------------------
Importing SDEX from earth.000 ...
Importing spatial column "FOOTPRINT"
Importing raster column "RASTER"
1 record read.
1 record stored.
您还可以使用 DBMS 导出格式将较大的栅格对象从一个位置移动到另一个位置。除非移动整个 ArcSDE 实例,否则您将需要在导入数据时手动更新 ArcSDE 元数据表。最简单的方法是创建一个空栅格对象,删除该对象的表,然后使用导入的表替换删除的表。
可使用 SQL Server 对数据库进行分离,以便可将其文件组的各个文件复制到其他位置。
使用 Oracle 可传输的表空间,您可以将一组表空间的元数据导出到导出文件。要执行此操作,请将与表空间和导出文件相关联的数据文件复制到新位置,并将导出文件导入。导出和复制表时,表必须处于只读模式。这还需要使用参数文件。