Información general sobre los índices espacialesSpatial Indexes Overview

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed InstanceSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance

SQL ServerSQL Server admite datos espaciales e índices espaciales.supports spatial data and spatial indexes. Un índice espacial es un tipo de índice extendido que permite indizar una columna espacial.A spatial index is a type of extended index that allows you to index a spatial column. Una columna espacial es una columna de tabla que contiene datos de un tipo espacial, como geometría o geografía.A spatial column is a table column that contains data of a spatial data type, such as geometry or geography.

Importante

Para obtener una descripción detallada y ejemplos de las nuevas características espaciales de SQL Server 2012 (11.x)SQL Server 2012 (11.x), incluidas las características que afectan a los índices espaciales, descargue las notas del producto Nuevas características espaciales de SQL Server 2012.For a detailed description and examples of spatial features introduced in SQL Server 2012 (11.x)SQL Server 2012 (11.x), including features that affect spatial indexes, download the white paper, New Spatial Features in SQL Server 2012.

Acerca de los índices espacialesAbout Spatial Indexes

Descomponer espacio indizado en una jerarquía de cuadrículasDecomposing Indexed Space into a Grid Hierarchy

En SQL ServerSQL Server, los índices espaciales se generan usando árboles B, es decir, los índices deben representar los datos espaciales bidimensionales en el orden lineal de los árboles B.In SQL ServerSQL Server, spatial indexes are built using B-trees, which means that the indexes must represent the 2-dimensional spatial data in the linear order of B-trees. Por consiguiente, antes de leer los datos en un índice espacial, SQL ServerSQL Server implementa una descomposición uniforme jerárquica de espacio.Therefore, before reading data into a spatial index, SQL ServerSQL Server implements a hierarchical uniform decomposition of space. El proceso de creación de índices descompone el espacio en una jerarquía de cuadrículasde cuatro niveles.The index-creation process decomposes the space into a four-level grid hierarchy. Estos niveles se conocen como nivel 1 (el nivel superior), nivel 2, nivel 3y nivel 4.These levels are referred to as level 1 (the top level), level 2, level 3, and level 4.

Cada nivel sucesivo descompone el nivel superior, de manera que cada celda de nivel superior contiene una cuadrícula completa en el nivel siguiente.Each successive level further decomposes the level above it, so each upper-level cell contains a complete grid at the next level. En un nivel determinado, todas las cuadrículas tienen el mismo número de celdas a lo largo de ambos ejes (por ejemplo, 4x4 o 8x8) y las celdas son todas del mismo tamaño.On a given level, all the grids have the same number of cells along both axes (for example, 4x4 or 8x8), and the cells are all one size.

La ilustración siguiente muestra la descomposición para la celda superior derecha en cada nivel de la jerarquía de cuadrículas en una cuadrícula 4x4.The following illustration shows the decomposition for the upper-right cell at each level of the grid hierarchy into a 4x4 grid. En realidad, todas las celdas se descomponen de esta manera.In reality, all the cells are decomposed in this way. Así, por ejemplo, la descomposición de un espacio en cuatro niveles de cuadrículas 4x4 produce realmente un total de 65.536 celdas de cuatro niveles.Thus, for example, decomposing a space into four levels of 4x4 grids actually produces a total of 65,536 level-four cells.

Cuatro niveles de teselación recursivaFour-levels of recursive tessellation

Nota

La descomposición de espacio de un índice espacial es independiente de la unidad de medida que el dato de aplicación usa.The decomposition of space for a spatial index is independent of the unit of measurement that the application data uses.

Las celdas de una jerarquía de cuadrícula se enumeran de un modo lineal usando una variación de la curva de rellenado de espacio Hilbert.Grid hierarchy cells are numbered in a linear fashion by using a variation of the Hilbert space-filling curve. Para esta ilustración, sin embargo, esta discusión usa una numeración de modo de fila simple, en lugar de la numeración realmente generada por la curva de Hilbert.For the purpose of illustration, however, this discussion uses a simple row-wise numbering, instead of the numbering that is actually produced by the Hilbert curve. En la ilustración siguiente, ya se han colocado varios polígonos que representan edificios y líneas que representan calles en una cuadrícula de nivel 1 4x4.In the following illustration, several polygons that represent buildings, and lines that represent streets, have already been placed into a 4x4, level-1 grid. Las celdas de nivel 1 se numeran del 1 al 16, comenzando por la celda superior izquierda.The level-1 cells are numbered from 1 through 16, starting with the upper-left cell.

Polígonos y líneas colocados en una cuadrícula de nivel 1 4x4Polygons and lines placed into a 4x4 level-1 grid

Densidad de cuadrículaGrid Density

El número de celdas a lo largo de los ejes de una cuadrícula determina su densidad: cuanto mayor sea el número, más densa será la cuadrícula.The number of cells along the axes of a grid determines its density: the larger the number, the denser the grid. Por ejemplo, una cuadrícula 8x8 (que genera 64 celdas), es más densa que una cuadrícula 4x4 (que genera 16 celdas).For example, an 8x8 grid (which produces 64 cells), is denser than a 4x4 grid (which produces 16 cells). La densidad de cuadrícula se define por nivel.Grid density is defined on a per-level basis.

La instrucción CREATE SPATIAL INDEXTransact-SQLTransact-SQL admite una cláusula GRIDS que le permite especificar las densidades de cuadrícula diferentes en niveles diferentes.The CREATE SPATIAL INDEXTransact-SQLTransact-SQL statement supports a GRIDS clause that enables you to specify different grid densities at different levels. La densidad de cuadrícula para un nivel determinado se especifica con una de las palabras clave siguientes.The grid density for a given level is specified by using one of the following keywords.

Palabra claveKeyword Configuración de cuadrículaGrid configuration Número de celdasNumber of cells
LOWLOW 4X44X4 1616
MEDIUMMEDIUM 8X88X8 6464
HIGHHIGH 16X1616X16 256256

En SQL ServerSQL Server, cuando el nivel de compatibilidad de la base de datos se establece en 100 o menos, el valor predeterminado es MEDIUM en todos los niveles.In SQL ServerSQL Server, when the database compatibility level is set to 100 or lower, then the default is MEDIUM on all levels. Cuando el nivel de compatibilidad de la base de datos se establece en 110 o más, el valor predeterminado es un esquema de cuadrícula automática.When the database compatibility level is set to 110 or higher, then the default is an auto grid scheme. (La cuadrícula automática indica una configuración de nivel 8 de HLLLLLLL). En lugar de variar la densidad de la cuadrícula de índices, puede variar las celdas por objeto y las celdas de la ventana de consulta por objeto a través de una sugerencia.(Auto grid indicates an 8 level configuration of HLLLLLLL.) Instead of varying index grid density, you can vary cells per object and query window cells per object via hint.

Puede controlar el proceso de descomposición especificando densidades de cuadrícula no predeterminadas.You can control the decomposition process by specifying non-default grid densities. Por ejemplo, quizá sean útiles diferentes densidades de cuadrícula en niveles distintos para ajustar correctamente un índice basado en el tamaño del espacio indizado y los objetos de la columna espacial.For example, different grid densities on different levels might be useful for fine tuning an index based on the size of the indexed space and the objects in the spatial column.

Nota

Las densidades de cuadrícula de un índice espacial se ven en las columnas level_1_grid, level_2_grid, level_3_grid y level_4_grid de la vista de catálogo sys.spatial_index_tessellations cuando el nivel de compatibilidad de la base de datos se establece en 100 o menos.The grid densities of a spatial index are visible in the level_1_grid, level_2_grid, level_3_grid, and level_4_grid columns of the sys.spatial_index_tessellations catalog view when the database compatibility level is set to 100 or lower. Las opciones del esquema de teselación GEOMETRY_AUTO_GRID/GEOGRAPHY_AUTO_GRID no rellenan estas columnas.The GEOMETRY_AUTO_GRID/GEOGRAPHY_AUTO_GRID tessellation scheme options do not populate these columns. La vista de catálogo sys.spatial_index_tessellations tiene valores NULL para estas columnas cuando se usan las opciones de cuadrícula automática.sys.spatial_index_tessellations catalog view has NULL values for these columns when the auto grid options are used.

TeselaciónTessellation

Después de la descomposición de un espacio indizado en una jerarquía de cuadrículas, el índice espacial lee los datos de la columna espacial, fila por fila.After decomposition of an indexed space into a grid hierarchy, the spatial index reads the data from the spatial column, row by row. Después de leer los datos para un objeto espacial (o instancia), el índice espacial realiza un proceso de teselación para dicho objeto.After reading the data for a spatial object (or instance), the spatial index performs a tessellation process for that object. El proceso de teselación ajusta el objeto en la jerarquía de cuadrículas asociándolo a un conjunto de celdas de cuadrícula que modifica (celdas modificadas).The tessellation process fits the object into the grid hierarchy by associating the object with a set of grid cells that it touches (touched cells). Comenzando por el nivel 1 de la jerarquía de cuadrículas, el proceso de teselación continúa por el nivel primero a lo ancho .Starting at level 1 of the grid hierarchy, the tessellation process proceeds breadth first across the level. Potencialmente, el proceso puede continuar a través de los cuatro niveles, un nivel a la vez.Potentially, the process can continue through all four levels, one level at a time.

El resultado del proceso de teselación es un conjunto de celdas modificadas que se graban en el índice espacial para el objeto.The output of the tessellation process is a set of touched cells that are recorded in the spatial index for the object. Haciendo referencia a estas celdas grabadas, el índice espacial puede buscar el objeto en el espacio relativo a otros objetos de la columna espacial también almacenados en el índice.By referring to these recorded cells, the spatial index can locate the object in space relative to other objects in the spatial column that are also stored in the index.

Reglas de teselaciónTessellation Rules

Para limitar el número de celdas modificadas que se graban para un objeto, el proceso teselación aplica varias reglas de teselación.To limit the number of touched cells that are recorded for an object, the tessellation process applies several tessellation rules. Estas reglas determinan la profundidad del proceso de teselación y cuáles de las celdas modificadas se graban en el índice.These rules determine the depth of the tessellation process and which of the touched cells are recorded in the index.

Estas reglas son:These rules are as follows:

  • La regla de coberturaThe covering rule

    Si el objeto cubre una celda por completo, se dice que dicha celda está cubierta por el objeto.If the object completely covers a cell, that cell is said to be covered by the object. Se cuenta una celda cubierta y no se aplica la teselación.A covered cell is counted and is not tessellated. Esta regla se aplica a todos los niveles de la jerarquía de cuadrículas.This rule applies at all levels of the grid hierarchy. La regla de cobertura simplifica el proceso de teselación y reduce la cantidad de datos que un índice espacial registra.The covering rule simplifies the tessellation process and reduces the amount of data that a spatial index records.

  • La regla de celdas por proyectoThe cells-per-object rule

    Esta regla exige el límite de celdas por proyecto, que determina el número máximo de celdas que se pueden contar para cada objeto, excepto en el nivel 1.This rule enforces the cells-per-object limit, which determines the maximum number of cells that can be counted for each object, except on level 1. En los niveles inferiores, la regla de celdas por proyecto controla la cantidad de información que se puede grabar sobre el objeto.At lower levels, the cells-per-object rule controls the amount of information that can be recorded about the object.

  • La regla de celda más profundaThe deepest-cell rule

    La regla de celda más profunda genera la mejor aproximación de un objeto grabando solo las únicas celdas de la parte más inferior que se han teselado para el objeto.The deepest-cell rule generates the best approximation of an object by recording only the bottom-most cells that have been tessellated for the object. Las celdas principales no contribuyen al recuento de celdas por objeto y no se graban en el índice.Parent cells do not contribute to the cells-per-object count, and they are not recorded in the index.

Estas reglas de teselación se aplican en cada nivel de cuadrícula de forma recursiva.These tessellation rules are applied recursively on each grid level. El resto de esta sección describe las reglas de teselación con más detalle.The rest of this section describes the tessellation rules in more detail.

Regla de coberturaCovering Rule

Si un objeto cubre una celda por completo, se dice que dicha celda está cubierta por el objeto.If an object completely covers a cell, that cell is said to be covered by the object. Por ejemplo, en la ilustración siguiente, una de las celdas de segundo nivel, 15.11, está cubierta completamente por la parte media de un octágono.For example, in the following illustration, one of the second-level cells, 15.11, is completely covered by the middle portion of an octagon.

Optimización de coberturaCovering optimization

Se cuenta una celda cubierta y se graba en el índice, y la celda no se divide más en mosaicos.A covered cell is counted and recorded in the index, and the cell is not tessellated any further.

Regla de celdas por proyectoCells-Per-Object Rule

El nivel de teselación de cada objeto depende principalmente del límite de celdas por proyecto del índice espacial.The extent of tessellation of each object depends primarily on the cells-per-object limit of the spatial index. Este límite define el número máximo de celdas que la teselación puede contar por objeto.This limit defines the maximum number of cells that tessellation can count per object. Sin embargo, tenga en cuenta que la regla de celdas por proyecto no se exige para el nivel 1, de modo que es posible superar este límite.Note, however, that the cells-per-object rule is not enforced for level 1, so it is possible to exceed this limit. Si el recuento del nivel 1 alcanza, o supera, el límite de celdas por objeto, no se produce más teselación en los niveles inferiores.If the level-1 count reaches, or exceeds, the cells-per-object limit, no further tessellation occurs at the lower levels.

Siempre que el recuento sea menor que el límite de celdas por proyecto, el proceso de teselación continúa.As long as the count is less than the cells-per-object limit, the tessellation process continues. Empezando por la celda modificada de número inferior (por ejemplo, la celda 15.6 de la ilustración anterior), el proceso prueba todas las celdas para evaluar si contarlas o dividirlas en mosaicos.Starting with the lowest-number touched cell (for example, cell 15.6 in the preceding illustration), the process tests each cell to evaluate whether to count it or tessellate it. Si con la teselación de una celda se superaría el límite de celdas por proyecto, se cuenta la celda y no se realiza su teselación.If tessellating a cell would exceed the cells-per-object limit, the cell is counted and not tessellated. De lo contrario, la celda se divide en mosaicos y se cuentan las celdas de nivel inferior modificadas por el objeto.Otherwise, the cell is tessellated, and the lower-level cells that are touched by the object are counted. El proceso de teselación continúa de esta manera, en toda la amplitud, por el nivel.The tessellation process continues in this way, breadth-wise, across the level. Este proceso se repite recursivamente para las cuadrículas de nivel inferior de las celdas divididas en mosaicos hasta que se alcanza el límite o no hay más celdas que contar.This process is repeated recursively for the lower-level grids of the tessellated cells until the limit is reached or there are no more cells to count.

Por ejemplo, piense en la ilustración anterior, que muestra un octágono que se ajusta por completo a la celda 15 de la cuadrícula de nivel 1.For example, consider the preceding illustration, which shows an octagon that fits completely into cell 15 of the level-1 grid. En la ilustración, se ha realizado la teselación en la celda 15, diseccionando el octágono en nueve celdas de nivel 2.In the figure, cell 15 has been tessellated, dissecting the octagon into nine level-2 cells. Esta ilustración supone que el límite de celdas por proyecto es 9 o más.This illustration assumes that the cells-per-object limit is 9 or more. Sin embargo, si el límite de celdas por proyecto fuera 8 o menos, no se realizaría la teselación en la celda 15 y solo se contaría dicha celda 15 para el objeto.If the cells-per-object limit were 8 or less, however, cell 15 would not be tessellated, and only that cell 15 would be counted for the object.

De forma predeterminada, el límite de celdas por proyecto es de 16 celdas por objeto, lo que proporciona un equilibrio satisfactorio entre espacio y precisión para la mayoría de los índices espaciales.By default, the cells-per-object limit is 16 cells per object, which provides a satisfactory trade-off between space and precision for most spatial indexes. Sin embargo, la instrucción CREATE SPATIAL INDEXTransact-SQLTransact-SQL admite una cláusula CELLS_PER_OBJECT = n que le permite especificar un límite de celdas por proyecto entre 1 y 8192, incluidos.However, the CREATE SPATIAL INDEXTransact-SQLTransact-SQL statement supports a CELLS_PER_OBJECT**=**n clause that enables you to specify a cells-per-object limit between 1 and 8192, inclusive.

Nota

El valor cells_per_object de un índice espacial es visible en la vista de catálogo sys.spatial_index_tessellations .The cells_per_object setting of a spatial index is visible in the sys.spatial_index_tessellations catalog view.

Regla de celda más profundaDeepest-Cell Rule

La regla de celda más profunda se aprovecha del hecho de que todas las celdas de nivel inferior pertenecen a la celda superior: una celda de nivel 4 pertenece a una celda de nivel 3, una celda de nivel 3 pertenece a una celda de nivel 2 y una celda de nivel 2 pertenece a una celda de nivel 1.The deepest-cell rule exploits the fact that every lower-level cell belongs to the cell above it: a level-4 cell belongs to a level-3 cell, a level-3 cell belongs to a level-2 cell, and a level-2 cell belongs to a level-1 cell. Por ejemplo, un objeto que pertenezca a la celda 1.1.1.1, también pertenece a la celda 1.1.1, a la celda 1.1 y a la celda 1.For example, an object that belongs to cell 1.1.1.1 also belongs to cell 1.1.1, cell 1.1, and cell 1. El conocimiento de dichas relaciones de jerarquía de celdas está integrado en el procesador de consultas.Knowledge of such cell-hierarchy relationships is built into the query processor. Por consiguiente, solo las celdas de nivel más profundo se tienen que grabar en el índice, minimizando la información que el índice tiene que almacenar.Therefore, only the deepest-level cells need to be recorded in the index, minimizing the information that the index needs to store.

En la ilustración siguiente, un polígono en forma de rombo relativamente pequeño se divide en mosaicos.In the following illustration, a relatively small diamond-shaped polygon is tessellated. El índice usa el límite de celdas por proyecto predeterminado de 16, que no se alcanza para este objeto pequeño.The index uses the default cells-per-object limit of 16, which is not reached for this small object. Por lo tanto, la teselación continúa bajando hasta el nivel 4.Therefore, tessellation continues down to level 4. El polígono reside en las siguientes celdas del nivel 1 hasta el nivel 3: 4, 4.4, 4.4.10 y 4.4.14.The polygon resides in the following level-1 through level-3 cells: 4, 4.4, and 4.4.10 and 4.4.14. Sin embargo, si se usa la regla de celda más profunda, la teselación solo cuenta las doce celdas del nivel 4: 4.4.10.13-15 y 4.4.14.1-3, 4.4.14.5-7 y 4.4.14.9-11.However, using the deepest-cell rule, the tessellation counts only the twelve level-4 cells: 4.4.10.13-15 and 4.4.14.1-3, 4.4.14.5-7, and 4.4.14.9-11.

Optimización de celda más profundaDeepest-cell optimization

Esquemas de teselaciónTessellation Schemes

El comportamiento de un índice espacial depende en parte de su esquema de teselación.The behavior of a spatial index depends partly on its tessellation scheme. El esquema de teselación es el tipo de datos concreto.The tessellation scheme is data-type specific. En SQL ServerSQL Server, los índices espaciales admiten dos esquemas de teselación:In SQL ServerSQL Server, spatial indexes support two tessellation schemes:

  • Teselación de cuadrícula de geometría, que es el esquema para el tipo de datos geometry .Geometry grid tessellation, which is the scheme for the geometry data type.

  • Teselación de cuadrícula de geografía, que se aplica a las columnas del tipo de datos geography .Geography grid tessellation, which applies to columns of the geography data type.

Nota

El valor tessellation_scheme de un índice espacial es visible en la vista de catálogo sys.spatial_index_tessellations .The tessellation_scheme setting of a spatial index is visible in the sys.spatial_index_tessellations catalog view.

Esquema de teselación de cuadrícula de geometríaGeometry Grid Tessellation Scheme

La teselación GEOMETRY_AUTO_GRID es el esquema de teselación predeterminado para el tipo de datos geometry de SQL Server 2012 (11.x)SQL Server 2012 (11.x) y versiones posteriores.GEOMETRY_AUTO_GRID tessellation is the default tessellation scheme for the geometry data type for SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later. La teselación GEOMETRY_GRID es el único esquema de teselación disponible para los tipos de datos geometry de SQL Server 2008SQL Server 2008.GEOMETRY_GRID tessellation is the only tessellation scheme available for geometry data types in SQL Server 2008SQL Server 2008. En esta sección se tratan los aspectos de teselación de cuadrícula de geometría relacionados con trabajar con índices espaciales: métodos compatibles y cuadros de límite.This section discusses aspects of geometry grid tessellation that are relevant to working with spatial indexes: supported methods and bounding boxes.

Nota

Puede especificar explícitamente este esquema de teselación con la cláusula USING (GEOMETRY_AUTO_GRID/GEOMETRY_GRID) de la instrucción Transact-SQLTransact-SQL CREATE SPATIAL INDEX.You can explicitly specify this tessellation scheme by using the USING (GEOMETRY_AUTO_GRID/GEOMETRY_GRID) clause of the CREATE SPATIAL INDEX Transact-SQLTransact-SQL statement.

El cuadro de límiteThe Bounding Box

Los datos geométricos ocupan un plano que puede ser infinito.Geometric data occupies a plane that can be infinite. Sin embargo, en SQL ServerSQL Server, un índice espacial requiere un espacio finito.In SQL ServerSQL Server, however, a spatial index requires a finite space. Para establecer un espacio finito para descomposición, el esquema de teselación de cuadrícula de geometría exige un cuadro de límiterectangular.To establish a finite space for decomposition, the geometry grid tessellation scheme requires a rectangular bounding box. El cuadro de límite está definido por cuatro coordenadas, (x-min,y-min) y (x-max,y-max), que se almacenan como propiedades del índice espacial.The bounding box is defined by four coordinates, (x-min,y-min) and (x-max,y-max), which are stored as properties of the spatial index. Estas coordenadas representan lo siguiente:These coordinates represent the following:

  • x-min es la coordenada x de la esquina inferior izquierda del cuadro de límite.x-min is the x-coordinate of the lower-left corner of the bounding box.

  • y-min es la coordenada y de la esquina inferior izquierda.y-min is the y-coordinate of the lower-left corner.

  • x-max es la coordenada x de la esquina superior derecha.x-max is the x-coordinate of the upper-right corner.

  • y-max es la coordenada y de la esquina superior derecha.y-max is the y-coordinate of upper-right corner.

Nota

Estas coordenadas están especificadas por la cláusula BOUNDING_BOX de la instrucción CREATE SPATIAL INDEXTransact-SQLTransact-SQL .These coordinates are specified by the BOUNDING_BOX clause of the CREATE SPATIAL INDEXTransact-SQLTransact-SQL statement.

Las coordenadas (x-min,y-min) y (x-max,y-max) determinan la posición y las dimensiones del cuadro de límite.The (x-min,y-min) and (x-max,y-max) coordinates determine the placement and dimensions of the bounding box. El espacio exterior del cuadro de límite se trata como una celda única con el número 0.The space outside of the bounding box is treated as a single cell that is numbered 0.

El índice espacial descompone el espacio que se encuentra dentro del cuadro de límite.The spatial index decomposes the space inside the bounding box. La cuadrícula de nivel 1 de la jerarquía de cuadrículas rellena el cuadro de límite.The level-1 grid of the grid hierarchy fills the bounding box. Para colocar un objeto geométrico en la jerarquía de cuadrículas, el índice espacial compara las coordenadas del objeto con las coordenadas del cuadro de límite.To place a geometric object in the grid hierarchy, the spatial index compares the coordinates of the object to the bounding-box coordinates.

La ilustración siguiente muestra los puntos definidos por las coordenadas (x-min,y-min) y (x-max,y-max) del cuadro de límite.The following illustration shows the points defined by the (x-min,y-min) and (x-max,y-max) coordinates of the bounding box. El nivel superior de la jerarquía de cuadrículas se muestra como una cuadrícula 4x4.The top-level of the grid hierarchy is shown as a 4x4 grid. Para la ilustración, se omiten los niveles inferiores.For the purpose of illustration, the lower levels are omitted. Un cero (0) indica el espacio exterior del cuadro de límite.The space outside of the bounding box is indicated by a zero (0). Tenga en cuenta que el objeto 'A' se extiende, en parte, más allá del cuadro y el objeto 'B' permanece por completo fuera del cuadro de la celda 0.Note that object 'A' extends partly beyond the box, and object 'B' lies completely outside the box in cell 0.

Cuadro de límite que muestra las coordenadas y la celda 0.Bounding box showing coordinates and cell 0.

Un cuadro de límite se corresponde a alguna parte de los datos espaciales de una aplicación.A bounding box corresponds to some portion of an application's spatial data. Depende de la aplicación si el cuadro de límite del índice contiene por completo los datos almacenados en la columna espacial, o solo contiene una parte.Whether the bounding-box of the index completely contains the data stored in the spatial column, or only contains a portion, is up to the application. Solo las operaciones calculadas en los objetos que están completamente dentro del cuadro de límite se benefician del índice espacial.Only operations computed on objects that are entirely inside of the bounding box benefit from the spatial index. Por consiguiente, para aprovechar al máximo un índice espacial en una columna geometry , se debe especificar un cuadro de límite que contenga todos los objetos o la mayoría de ellos.Therefore, to gain the greatest advantage from a spatial index on a geometry column, you need to specify a bounding-box that contains all or most of the objects.

Nota

Las densidades de cuadrícula de un índice espacial están visibles en las columnas bounding_box_xmin, bounding_box_ymin, bounding_box_xmax y bounding_box_ymax de la vista de catálogo sys.spatial_index_tessellations .The grid densities of a spatial index are visible in the bounding_box_xmin, bounding_box_ymin, bounding_box_xmax, and bounding_box_ymax columns of the sys.spatial_index_tessellations catalog view.

El esquema de teselación de cuadrícula de geografíaThe Geography Grid Tessellation Scheme

Este esquema de teselación solo se aplica a una columna geography .This tessellation scheme applies only to a geography column. Esta sección resume los métodos admitidos por teselación de cuadrícula de geografía y trata cómo se proyecta el espacio geodésico en un plano, que se descompone a continuación en una jerarquía de cuadrículas.This section summarizes the methods that are supported by geography grid tessellation and discusses how geodetic space is projected onto a plane, which is then decomposed into a grid hierarchy.

Nota

Puede especificar explícitamente este esquema de teselación con la cláusula USING (GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID) de la instrucción CREATE SPATIAL INDEXTransact-SQLTransact-SQL .You can explicitly specify this tessellation scheme by using the USING (GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID) clause of the CREATE SPATIAL INDEXTransact-SQLTransact-SQL statement.

Proyección del espacio geodésico en un planoProjection of the Geodetic Space onto a Plane

Los cálculos en instancias de geography (objetos) tratan el espacio que contiene los objetos como un elipsoide geodésico.Computations on geography instances (objects) treat the space containing the objects as a geodetic ellipsoid. Para descomponer este espacio, el esquema teselación de cuadrícula geography divide la superficie del elipsoide en sus hemisferios superior e inferior y, a continuación, realiza los pasos siguientes:To decompose this space, the geography grid tessellation scheme divides the surface of the ellipsoid into its upper and lower hemispheres and then performs the following steps:

  1. Proyecta cada hemisferio en las caras de una pirámide cuadrangular.Projects each hemisphere onto the facets of a quadrilateral pyramid.

  2. Aplana las dos pirámides.Flattens the two pyramids.

  3. Une las pirámides aplanadas para formar un plano no euclidiano.Joins the flattened pyramids to form a non-Euclidean plane.

La ilustración siguiente muestra una vista esquemática del proceso de descomposición de tres pasos.The following illustration shows a schematic view of the three-step decomposition process. En las pirámides, las líneas de puntos representan los límites de las cuatro facetas de cada pirámide.In the pyramids, the dotted lines represent the boundaries of the four facets of each pyramid. En los pasos 1 y 2 se muestra el elipsoide geodésico, con una línea horizontal de color verde para representar la línea de latitud ecuatorial y una serie de líneas verticales de color verde para representar varias líneas de longitud.Steps 1 and 2 illustrate the geodetic ellipsoid, using a green horizontal line to represent the equatorial latitude line and a series of green vertical lines to represent several longitude lines. El paso 1 muestra las pirámides proyectándose sobre los dos hemisferios.Step 1 shows the pyramids being projected over the two hemispheres. El paso 2 muestra las pirámides aplanándose.Step 2 shows the pyramids being flattened. El paso 3 muestra las pirámides aplanadas, una vez que se han combinado para formar un plano, mostrando varias líneas de longitud proyectadas.Step 3 illustrates the flattened pyramids, after they have been combined to form a plane, showing a number of projected longitude lines. Observe que estas líneas proyectadas se ponen rectas y varían en longitud, dependiendo de dónde se encuentra en las pirámides.Notice that these projected lines are straightened and vary in length, depending on where they fall on the pyramids.

Proyección de la elipsoide en un planoProjection of the ellipsoid onto a plane

Una vez que se ha proyectado el espacio en el plano, éste se descompone en la jerarquía de cuadrículas de cuatro niveles.Once the space has been projected onto the plane, the plane is decomposed into the four-level grid hierarchy. Diferentes niveles pueden usar distintas densidades de cuadrícula.Different levels can use different grid densities. La ilustración siguiente muestra el plano una vez se ha descompuesto en una cuadrícula de nivel 1 4x4.The following illustration shows the plane after it has been decomposed into a 4x4 level-1 grid. Para esta ilustración, se omiten los niveles inferiores de la jerarquía de cuadrículas.For the purposes of illustration, the lower-levels of the grid hierarchy are omitted. En realidad, el plano se descompone totalmente en una jerarquía de cuadrículas de cuatro niveles.In actuality, the plane is fully decomposed into a four-level grid hierarchy. Cuando termina el proceso de descomposición, se leen los datos geográficos, fila por fila, desde la columna geography y, a su vez, se lleva a cabo el proceso de teselación para cada objeto.After the decomposition process finishes, the geographic data is read, row by row, from the geography column, and the tessellation process is performed for each object in turn.

Cuadrícula de geography de nivel 1Level-1 geography grid

Métodos admitidos por los índices espacialesMethods Supported by Spatial Indexes

Métodos de Geometry que los índices espaciales admitenGeometry Methods Supported by Spatial Indexes

En ciertas condiciones, los índices espaciales son compatibles con los siguientes métodos de geometry y orientados a conjuntos: STContains(), STDistance(), STEquals(), STIntersects(), STOverlaps(), STTouches() y STWithin().Spatial indexes support the following set-oriented geometry methods under certain conditions: STContains(), STDistance(), STEquals(), STIntersects(), STOverlaps(), STTouches(), and STWithin(). Para que un índice espacial los admita, estos métodos se deben usar dentro de la cláusula WHERE o JOIN ON de una consulta, y se deben producir dentro de un predicado con el formato general siguiente:To be supported by a spatial index, these methods must be used within the WHERE or JOIN ON clause of a query, and they must occur within a predicate of the following general form:

geometry1.nombre_método(geometry2)operador_comparación**número_válidogeometry1.method_name(geometry2)comparison_operator**valid_number

Para devolver un resultado no nulo, geometry1 y geometry2 deben tener el mismo identificador de referencia espacial (SRID).To return a non-null result, geometry1 and geometry2 must have the same spatial reference identifier (SRID). De lo contrario, el método devolverá NULL.Otherwise, the method returns NULL.

Los índices espaciales son compatibles con los formatos de predicado siguientes:Spatial indexes support the following predicate forms:

Métodos de Geography admitidos por los índices espacialesGeography Methods Supported by Spatial Indexes

En ciertas condiciones, los índices espaciales son compatibles con los siguientes métodos de geography orientados a conjuntos: STIntersects(),STEquals() y STDistance().Under certain conditions, spatial indexes support the following set-oriented geography methods: STIntersects(),STEquals(), and STDistance(). Para que un índice espacial los admita, estos métodos se deben usar dentro de la cláusula WHERE y se deben producir dentro de un predicado con el formato general siguiente:To be supported by a spatial index, these methods must be used within the WHERE clause of a query, and they must occur within a predicate of the following general form:

geography1.nombre_método(geography2)operador_comparación**número_válidogeography1.method_name(geography2)comparison_operator**valid_number

Para devolver un resultado no nulo, geography1 y geography2 deben tener el mismo identificador de referencia espacial (SRID).To return a non-null result, geography1 and geography2 must have the same Spatial Reference Identifier (SRID). De lo contrario, el método devolverá NULL.Otherwise, the method returns NULL.

Los índices espaciales son compatibles con los formatos de predicado siguientes:Spatial indexes support the following predicate forms:

Consultas que usan índices espacialesQueries that use Spatial Indexes

Solo se admiten índices espaciales en las consultas que incluyen un operador espacial indizado en la cláusula WHERE .Spatial indexes are only supported in queries that include an indexed spatial operator in the WHERE clause. Por ejemplo, sintaxis como la siguiente:For example syntax such as:

[spatial object].SpatialMethod([reference spatial object]) [ = | < ] [const literal or variable]  

El optimizador de consultas entiende la conmutatividad de las operaciones espaciales ( @a.STIntersects(@b) = @b.STInterestcs(@a) ).The query optimizer understands the commutativity of spatial operations (that @a.STIntersects(@b) = @b.STInterestcs(@a) ). Sin embargo, el índice espacial no se usará si el principio de una comparación no contiene el operador espacial (por ejemplo, WHERE 1 = spatial op no usará el índice espacial).However, the spatial index will not be used if the beginning of a comparison does not contain the spatial operator (for example WHERE 1 = spatial op will not use the spatial index). Para usar el índice espacial, vuelva a escribir la comparación (por ejemplo, WHERE spatial op = 1).To use the spatial index, rewrite the comparison (for example WHERE spatial op = 1).

Como ocurre con cualquier otro índice, cuando se admite un índice espacial, el uso del índice espacial se elige en función del costo, de modo que el optimizador de consultas no elige usar el índice espacial aunque se cumplan todos los requisitos para usarlo.As with any other index, when a spatial index is supported, the use of the spatial index is chosen based on cost, so the query optimizer might not choose to use the spatial index even though all requirements for using it are met. Use el plan de presentación para ver si se usó el índice espacial y, si es necesario, proporcione sugerencias de consulta para forzar un plan de consulta deseado.Use showplan to see if the spatial index was used and if necessary provide query hints to force a desired query plan.

El tipo de vecino más cercano de consulta también admite índices espaciales; sin embargo, solo si se escribe una sintaxis de consulta específica.The nearest neighbor type of query also supports spatial indexes however only if a specific query syntax is written. La sintaxis adecuada es:The appropriate syntax is:

SELECT TOP(K) [WITH TIES] *   
FROM <Table> AS T [WITH(INDEX(<SpatialIndex>))]  
WHERE <SpatialColumn>.STDistance(@reference_object) IS NOT NULL  
ORDER BY <SpatialColumn>.STDistance(@reference_object) [;]  

Vea tambiénSee Also

Datos espaciales (SQL Server)Spatial Data (SQL Server)