摘要
将空间索引添加到 shapefile、文件地理数据库或 ArcSDE 要素类中。使用此工具可将空间索引添加到尚无空间索引的 shapefile 或要素类或者重新构建现有空间索引。
用法
ArcGIS 使用空间索引来快速查找要素类中的要素。识别要素、通过点选或框选来选择要素以及平移和缩放都需要 ArcMap 使用空间索引来查找要素。空间索引的定义方法是使用占据要素类中要素范围的基于格网的系统,类似于一般道路地图上的定位格网。
默认情况下,ArcGIS 创建和维护地理数据库要素类的空间索引。要使地理数据库不包含空间索引,必须使用移除空间索引工具将其显式移除。
空间格网 1、2 和 3 参数仅适用于文件地理数据库和某些 ArcSDE 地理数据库要素类(使用 SQL Server 二进制存储、DB2、Oracle 二进制存储或 Oracle ST_Geometry)。
- 如果您对设置空间格网大小并不熟悉或不确定该使用何种值,则使用默认值 0,0,0。当默认值为输入时,此工具通过检查所有输入要素来计算最佳格网大小。
- Shapefile 和某些 ArcSDE 地理数据库要素类(使用 Oracle Spatial、Informix 和 PostgreSQL)不使用基于格网大小的空间索引;因此,不需要指定任何空间格网值。
- 个人地理数据库要素类接收基于要素类的空间参考属性的空间索引格网大小。无法覆盖、移除或修改此索引格网。
- 空间格网 1 是第一个也是最低的格网等级,它的像元大小最小。像元是方形的,所输入的参数值即为一条边的长度。测量单位取自要素类的空间参考(如米)。空间格网 2 应至少是空间格网 1 的三倍,而空间格网 3 应至少是空间格网 2 的三倍。
如果输入要素已经有空间索引,则空间格网 1、2、3 显示当前空间索引格网值。如果输入的空间格网参数为 0,0,0 并执行此工具,则计算最佳格网大小并重新构建索引。然后,便可通过重新打开此工具并重新输入要素类或图层,来查看计算出的格网大小(之后要单击取消,因为不需要重新构建索引)。也可使用计算默认空间格网索引工具来计算最佳格网大小。
向 ArcSDE 要素类添加新的空间索引是一项非常占用服务器资源的操作。在大量用户登录到服务器时,不得对大要素类执行此操作。
- 有关空间索引的详细信息,请参阅以下内容:
语法
AddSpatialIndex_management (in_features, {spatial_grid_1}, {spatial_grid_2}, {spatial_grid_3})
参数 | 说明 | 数据类型 |
in_features | 要添加或重构空间索引的 ArcSDE 要素类、文件地理数据库要素类或 shapefile。 | Feature Layer; Mosaic Layer; Raster Catalog Layer |
spatial_grid_1 (可选) | 空间格网 1、2 和 3 参数仅适用于文件地理数据库和某些 ArcSDE 地理数据库要素类。如果对设置格网大小并不熟悉,则将这些选项保留为 0,0,0,然后 ArcGIS 会为您计算最佳大小。 | Double |
spatial_grid_2 (可选) | 第二个空间格网的像元大小。如果您只需要一个格网,则将大小设置为 0。否则,至少将大小设置为比“空间格网 1”大三倍。 | Double |
spatial_grid_3 (可选) | 第三个空间格网的像元大小。如果您只需要两个格网,则将大小设置为 0。否则,至少将大小设置为比“空间格网 2”大三倍。 | Double |
代码实例
AddSpatialIndex 示例(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 AddSpatialIndex 函数。
import arcpy
import arcpy.env as ENV
ENV.workspace = "Database Connections/Connection to esoracle.sde"
arcpy.AddSpatialIndex_management("LPI.Land/LPI.PLSSFirstDivision", 500)
AddSpatialIndex 示例 2(独立 Python 脚本)
以下 Python 脚本演示了如何在独立脚本中使用 AddSpatialIndex 函数。
# Name: AddSpatialIndex_Example2.py
# Description: Add a spatial index to a SDE feature class.
# Import system modules
import arcpy
import arcpy.env as ENV
# Set workspace
ENV.workspace = "Database Connections/Connection to esoracle.sde"
# Set local variables
in_features = "LPI.Land/LPI.PLSSFirstDivision"
spatial_grid_1 = "500"
spatial_grid_2 = ""
spatial_grid_3 = ""
# Execute AddSpatialIndex
arcpy.AddSpatialIndex_management(in_features, spatial_grid_1)