设置空间索引快速浏览
空间索引用于在显示、编辑或查询数据时快速定位要素。因此,适合的空间索引非常重要,尤其是在处理大量数据时。
数据源不同,空间索引的工作方式也不同。DB2 中的文件地理数据库和 ArcSDE 地理数据库、使用二进制几何存储模式的 Oracle 和 SQL Server 中的 ArcSDE 地理数据库以及使用 ST_Geometry 存储类型的 Oracle 中的 ArcSDE 地理数据库都使用最多可将三个格网作为空间索引的系统。个人地理数据库使用一个格网。格网由大小定义,称为格网大小。它描述的是格网中每个单元的大小,其单位由要素类的坐标系单位指定。Oracle Spatial、Informix 和 PostgreSQL 不使用格网大小 - 它们使用 R 树索引。同样,对于 SQL Server 空间类型,空间索引也不使用格网。
ArcGIS 如何维护文件地理数据库和 ArcSDE 地理数据库中的索引
在文件地理数据库和 ArcSDE 地理数据库中完成某些操作后,ArcGIS 会自动重建空间索引,以确保索引处于最优状态。下面介绍 ArcGIS 如何管理空间索引:
- 使用“新建要素类”向导创建空要素类时,将会创建空间索引。如果要素类使用空间格网索引,将创建格网大小为 0,0,0 的索引并将其保留在未构建状态。使用 ArcCatalog 中的简单数据加载器或“追加”工具加载数据后,ArcGIS 会在加载过程的最后一步中构建空间索引。它会计算适合新添加要素的格网大小。
- 如果从个人地理数据库、shapefile 或 coverage 导入数据,或者导入计算机辅助绘图 (CAD) 或智能数据压缩 (SDC) 数据,则会为新的要素类自动计算空间索引。
- 在使用 ArcCatalog 的“复制”和“粘贴”命令将要素类从个人地理数据库复制到文件或 ArcSDE 地理数据库中时,将会自动重新构建空间索引。如果从 Oracle Spatial、PostgreSQL 或 Informix 复制要素类,也会重新构建空间索引。如果将要素类从使用格网大小的文件或 ArcSDE 地理数据库(Oracle 二进制和 ST_Geometry、SQL Server 二进制或 DB2)复制到其他使用格网大小的地理数据库,则会将索引与源数据一同复制,而不会重新计算。
- 在使用创建要素类的地理处理工具时,会检查新要素类中的要素,并自动计算出新的空间索引。
- 将编辑内容保存到 ArcMap 中的文件地理数据库要素类时,ArcGIS 会对空间索引进行分析。如果格网大小设置为 0,0,0,则会根据刚刚添加的要素自动使用适合的格网大小重新构建索引。但在 ArcSDE 地理数据库中不会执行此过程。
- 压缩文件地理数据库要素类使用的空间索引类型与未压缩要素类中使用的空间索引类型不同。在压缩文件地理数据库要素类时,系统会自动重新构建索引。此索引无法修改。解压缩要素类时,将自动重新建立与压缩前要素类所具有的相同的空间索引。
何时更新文件地理数据库和 ArcSDE 地理数据库中的索引
因为 ArcGIS 会维护文件和 ArcSDE 地理数据库中的空间索引,所以用户极少需要手动设置或重新计算索引。只有在以下少数几种情况下,才需要更改或重新计算索引:
- 在添加了大量与要素类中原有要素大小不同的要素后,需要手动重新计算索引。这只适用于在编辑会话中添加要素的情况。例如,您可能启动了一个编辑会话,并手动添加了大量线要素或使用“对象加载器”加载了这些要素。添加的许多要素与要素类中原有的要素相比可能很长或很短。要确保空间索引与新要素的配合达到最优,则应当进行更新。如果要素类使用空间格网索引,则在保存编辑内容后,可通过访问“要素类属性”对话框上的“索引”选项卡并单击“重新计算”按钮来更新索引。
- 如果要向格网大小为 0,0,0 的文件地理数据库要素类中添加要素并保存编辑内容,系统将自动构建索引。但是,如果在同一编辑会话中继续添加要素,随后的保存操作将不会重新计算索引,因为此时格网大小已不再是 0,0,0。完成要素的添加后,单击“要素类属性”对话框上的“重新计算”按钮来更新格网大小。但请切记,在添加与要素类中原有要素大小相似的要素后手动重新计算索引时,索引只会产生很小的变化甚至没有变化。
- 如果要向要素类中添加较大的要素,则在添加要素之前可能需要先删除索引。在添加要素时,如果出现错误消息提示您空间索引格网大小无效,则表示属于此类情况。此时要停止编辑,打开“要素类属性”对话框,然后删除空间索引。重新启动编辑会话并添加新要素。在完成要素的添加后,重新计算新索引。
本主题目前主要讨论了将 ArcGIS 计算的默认格网大小用于空间格网索引的情况。在大多数情况下,默认格网大小都适用于快速空间查询。但是,根据数据特征和访问方式的不同,这可能不是最佳大小。自行设置的格网大小可能会获得更好的性能。要找到更好的格网大小,需要对不同的大小进行试验,并在各种设置下运行性能测试来观察效果。但是,手动设置也许不会改善性能,因为原有的格网大小可能已经是最优设置。
如果手动输入了格网大小,但又想恢复为 ArcGIS 提供的大小,则可随时重新计算新的格网大小。单击“要素类属性”对话框“索引”选项卡上的“重新计算”按钮。ArcGIS 也可以使用“计算默认空间格网索引”地理处理工具来计算适合的格网大小,但此方法获得的大小与使用“重新计算”按钮获得的大小相同。
如果使用 Microsoft SQL Server 空间类型索引,将不会使用格网,因此不需要重新计算格网。
个人地理数据库中的空间索引
在个人地理数据库中创建要素类时,无论是使用“新建要素类”向导、地理处理工具还是任何其他方法,软件都将计算空间索引格网大小,并且此大小无法修改。计算出的格网大小将基于要素类坐标系的视界,并且始终为最优大小。