文件地理数据库和 Windows 资源管理器

注注:

管理文件地理数据库(包括复制、重命名和删除数据)应始终使用 ArcGIS(而非 Windows 资源管理器)来执行。ArcGIS 中的工具可确保不丢失数据或发生其他问题。

文件地理数据库以包含文件的文件夹形式存储。当使用 Windows 资源管理器查看文件夹时,除了 .gdb 扩展名之外,它看起来就像任何其他文件夹一样,并且可以查看它的内容。文件夹使用隐含命名文件存储地理数据、属性数据、索引文件、.lock 文件、特征文件以及其他文件。地理数据库中的每个要素类或表存储在两个或更多文件中。实际上,很难(甚至是不可能)说出任何给定的数据集是由哪些文件所组成。

不能使用 Windows 资源管理器对各数据集执行操作

使用 Windows 资源管理器访问文件夹及其内容时,有多个可用的 Windows 命令。尽管不推荐使用这些命令,但某些用户还是会试图使用其中一些命令。本主题将讨论使用 Windows 资源管理器可以或不可以安全执行哪些操作。

注注:

与处理其他类型的文件的方式一样,最好定期备份文件地理数据库,以防出现任何问题。

复制、重命名和删除文件

虽然文件地理数据库与 shapefile 文件夹相似,但在 Windows 资源管理器的使用方面仍存在一些重要的差异。

对于 shapefile,可以识别出单个要素类或表是由哪些文件组成的,因为 Windows 资源管理器中的名称与通过 ArcGIS 看到的数据集的名称匹配。可以使用 Windows 资源管理器来重命名或删除 shapefile 或者将其复制到另一文件夹,但不推荐采用这种方式。

在文件地理数据库中,不能使用 Windows 资源管理器对各数据集执行操作。重命名和删除文件地理数据库文件夹中的各个文件以及将文件复制到另一个位置会导致数据丢失,还会导致地理数据库无法使用。例如,如果使用 Windows 资源管理器将文件移动到另一个地理数据库文件夹,将会无法访问此数据。文件地理数据库文件夹的内容被特意给定一个隐含名称,以防止执行此类操作。对各个数据集的操作只能通过 ArcGIS 来执行。

地理数据库级的操作也只能通过 ArcGIS 来执行。但是,可以对文件地理数据库文件夹安全执行以下操作:

注注:

当另一用户正在访问数据时,无法重命名或删除地理数据库文件夹。

可通过将文件夹复制到另一位置的方式将文件地理数据库复制到另一位置(如果使用的是 Windows Vista 操作系统,还需要将新文件夹的扩展名更改为 .gdb,否则 ArcGIS 无法将其识别为文件地理数据库),但不推荐采用这种方式。仅当您确定没有其他进程正在访问数据时才可使用 Windows 资源管理器复制文件地理数据库。问题是很难得知其他进程是否正在访问数据。您可能认为没有其他进程访问数据,但您计算机上或另一计算机上的某个进程可能正在访问数据。如果您恰巧在另一进程正在访问数据时复制文件夹,可能无法正常复制数据。通常看不出来不正常的复制操作,直到日后访问新副本的某一部分时才会发现存在问题。

移除 .lock 文件

ArcGIS 通过防止多个进程以冲突方式同时访问数据来确保数据的完整性。每当进程访问数据集时,ArcGIS 都会在文件地理数据库文件夹中放置一个 *.lock 文件,从而对进程进行跟踪。当进程终止时,对应的 .lock 文件将自动删除。

当进程过早结束或崩溃时,.lock 文件可能会暂时留在地理数据库文件夹中。当新锁定发生时,ArcGIS 最终会在之后的会话中移除这些文件。同时,这些文件将不再继续锁定数据,由于它们不占用任何磁盘空间,将其移除不会带来任何好处。如果仍要将其移除,可以使用 Windows 资源管理器来删除。但执行此操作时务必谨慎,误删 .lock 文件以外的文件会导致数据损坏。如果发现某些文件无法删除,是因为它们仍处于活动状态,也就是说您计算机或另一计算机上的另一进程正在访问数据。直到占用这些锁定文件的进程终止后,才能将其移除。

“紧缩”地理处理工具以及复制和粘贴操作(Catalog 目录树中提供)也会删除未使用的 .lock 文件。“紧缩”地理处理工具可紧缩地理数据库,并移除进程中所有不活动的 .lock 文件。复制和粘贴文件地理数据库会在将数据复制到新地理数据库之前从源地理数据库移除所有不活动的 .lock 文件。

设置权限

文件地理数据库没有身份验证或授权功能。无法通过修改文件地理数据库文件夹中各文件的权限来控制对各数据集的访问。

但是,可以使用 Windows 资源管理器将文件地理数据库文件夹以只读形式共享。这样,只读用户即可显示和查询数据,但不能进行编辑。同时,具有写入权限的用户可以在其他人读取数据时对数据进行修改。当读取数据的用户刷新 ArcMap 显示时,会在读取用户的 ArcMap 会话中更新其他用户所保存的所有更改。刷新操作不会引入未保存的编辑内容,因此用户无法读取另一用户所做的未保存的更改。如果要在编辑数据时禁止其他用户对其进行访问,可在修改数据前取消文件夹共享。

9/15/2013