Funciones relacionales para ST_Geometry

Las funciones relacionales utilizan predicados para probar diferentes tipos de relaciones espaciales. Las pruebas logran esto al comparar las relaciones entre:

Los predicados prueban relaciones. Devuelven 1 ó t (TRUE) si una comparación coincide con los criterios de la función; de otro modo, devuelven 0 ó f (FALSE). Los predicados que prueban una relación espacial comparan pares de geometrías que pueden ser de diferente tipo o dimensión.

Los predicados comparan las coordenadas x e y de las geometrías analizadas. Las coordenadas z y los valores de medición, si existen, se ignoran. Las geometrías que tienen coordenadas z o mediciones se pueden comparar con aquellas que no las tienen.

El Modelo de intersección 9 dimensionalmente ampliado (DE-9IM) desarrollado por Clementi y otros amplía de manera dimensional el Modelo de intersección 9 de Egenhofer y Herring. El DE-9IM es un enfoque matemático que define la relación espacial de pares entre geometrías de diferentes tipos y dimensiones. Este modelo expresa relaciones espaciales entre todos los tipos de geometría como intersecciones de pares de su interior, límite y exterior con consideración para la dimensión de las intersecciones resultantes.

Dadas las geometrías a y b, I(a), B(a), y E(a) representan el interior, el límite y el exterior de a; I(b), B(b), y E(b) representan el interior, el límite y el exterior de b. Las intersecciones de I(a), B(a), y E(a) con I(b), B(b), y E(b) producen una matriz de tres por tres. Cada intersección puede resultar en geometrías de diferentes dimensiones. Por ejemplo, la intersección de los límites de dos polígonos podría consistir de un punto y una cadena de líneas, en cuyo caso la función dim (dimensión) devolvería la dimensión máxima de 1.

La función dim devuelve un valor de -1, 0, 1 ó 2. El -1 corresponde al conjunto nulo que se devuelve cuando no se encuentra una intersección o dim(Ø).

Interior

Límite

Exterior

Interior

dim(I(a) intersects I(b))

dim(I(a) intersects B(b))

dim(I(a) intersects E(b))

Límite

dim(B(a) intersects I(b))

dim(B(a) intersects B(b))

dim(B(a) intersects E(b))

Exterior

dim(E(a) intersects I(b))

dim(E(a) intersects B(b))

dim(E(a) intersects E(b))

Un ejemplo de predicado de intersección

Los resultados de los predicados de relación espacial se pueden entender o verificar al comparar los resultados del predicado con una matriz de patrón que representa los valores aceptables para el DE-9IM.

La matriz de patrón contiene los valores aceptables para cada una de las celdas de la matriz de intersección. Los posibles valores de patrón son los siguientes:

T: debe existir una intersección; dim = 0, 1, ó 2

F: no debe existir una intersección; dim = -1

*: no importa si hay una intersección o no; dim = -1, 0, 1, ó 2

0: debe existir una intersección y su dimensión máxima debe ser 0; dim = 0

1: debe existir una intersección y su dimensión máxima debe ser 1; dim = 1

2: debe existir una intersección y su dimensión máxima debe ser 2; dim = 2

Cada predicado tiene al menos una matriz de patrón, pero algunos requieren más de una para describir las relaciones de varias combinaciones de tipo de geometría.

La matriz de patrón del predicado ST_Within para las combinaciones de geometría tiene la forma siguiente:

b

Interior

Límite

Exterior

Interior

T

*

F

un/a

Límite

*

*

F

Exterior

*

*

*

ejemplo de matriz de patrón

Explicado de manera simple, el predicado ST_Within devuelve TRUE cuando los interiores de ambas geometrías se intersecan, y el interior y el límite de a no se intersecan con el exterior de b. Todas las demás condiciones no tienen importancia.

La sección siguiente describe los diferentes predicados utilizados para relaciones espaciales. En los diagramas de estas secciones, la primera geometría de entrada que se enumera se muestra en negro y la segunda se muestra en naranja.

ST_Contains

ST_Contains devuelve 1 ó t (TRUE) si la segunda geometría está completamente incluida en la primera geometría. El predicado de ST_Contains devuelve el resultado exactamente opuesto al del predicado de ST_Within.

ST_Contains devuelve TRUE si la segunda geometría está completamente dentro de la primera.

La matriz de patrón de un predicado de ST_Contains establece que los interiores de ambas geometrías se deben intersecar, y que el interior y el límite de la secundaria (geometría b) no debe intersecar el exterior de la primaria (geometría a).

b

Interior

Límite

Exterior

Interior

T

*

*

un/a

Límite

*

*

*

Exterior

F

F

*

Matriz de ST_Contains

Utilizar ST_Within o ST_Contains identifica solamente las geometrías que están completamente dentro de otra geometría. Esto ayuda a eliminar de la selección las entidades que podrían distorsionar sus resultados. En el ejemplo que se presenta abajo, un vendedor ambulante de helado quiere determinar qué vecindades contienen el mayor número de niños (clientes potenciales) para asegurarse de restringir su ruta a esas áreas. Compara polígonos de vecindades designados con distritos censales, que poseen un atributo del número total de niños menores de 16 años.

Muestra la diferencia entre dentro y contiene

A menos que los niños del distrito censal 1 y el distrito censal 3 vivan en el falso polígono del territorio dentro de Westside, incluir estos distritos en la selección podría elevar de manera errónea el conteo de niños en la vecindad de Westside. Al especificar que sólo se incluyan los distritos censales que están incluidos completamente en las vecindades (ST_Within = 1), el vendedor de helados evita una potencial pérdida de tiempo en esas porciones de Westside y, consecuentemente, evita perder dinero.

Consulte ST_Contains para obtener información sobre la sintaxis y ver un ejemplo.

ST_Crosses

ST_Crosses devuelve 1 ó t (TRUE) si la intersección resulta en una geometría que tiene una dimensión que es un número menor que la dimensión máxima de las dos geometrías fuente y el conjunto de intersección es interior a ambas geometrías fuente. ST_Crosses devuelve 1 ó t (TRUE) únicamente para las comparaciones ST_MultiPoint/ST_Polygon, ST_MultiPoint/ST_LineString, ST_Linestring/ST_LineString, ST_LineString/ST_Polygon y ST_LineString/ST_MultiPolygon.

ST_Crosses devuelve TRUE si la dimensión de la intersección es un número menor que la dimensión máxima de las geometrías fuente y los interiores de ambas geometrías se intersecan.

Esta matriz de patrón de predicado ST_Crosses se aplica a ST_MultiPoint/ST_LineString, ST_MultiPoint/ST_MultiLineString, ST_MultiPoint/ST_Polygon, ST_MultiPoint/ST_MultiPolygon, ST_LineString/ST_Polygon y ST_LineString/ST_MultiPolygon. La matriz establece que los interiores se deben intersecar y que al menos el interior de la primaria (geometría a) se debe intersecar con el exterior de la secundaria (geometría b).

b

Interior

Límite

Exterior

Interior

T

*

T

un/a

Límite

*

*

*

Exterior

*

*

Matriz 2 *

Matriz 1 de ST_Crosses

Esta matriz de predicado ST_Crosses se aplica a ST_LineString/ST_LineString, ST_LineString/ST_MultiLineString y ST_MultiLineString/ST_MultiLineString. La matriz establece que la dimensión de la intersección de los interiores debe ser 0 (intersección en un punto). Si la dimensión de esta intersección fuera 1 (intersección en una cadena de líneas), el predicado de ST_Crosses devolvería FALSE, pero el predicado de ST_Crosses devolvería TRUE.

b

Interior

Límite

Exterior

Interior

0

*

*

un/a

Límite

*

*

*

Exterior

*

*

*

Matriz 2 de ST_Crosses

Consulte ST_Crosses para obtener información sobre la sintaxis y ver un ejemplo.

ST_Disjoint

Disjoint devuelve 1 ó t (TRUE) si la intersección de las dos geometrías es un conjunto vacío. En otras palabras, las geometrías son inconexas si no se intersecan.

Las geometrías son inconexas si no se intersecan.

La matriz del patrón del predicado de ST_Disjoint simplemente establece que ni los interiores ni los límites de ninguna de las dos geometrías se intersecan.

b

Interior

Límite

Exterior

Interior

F

F

*

un/a

Límite

F

F

*

Exterior

*

*

*

Matriz de ST_Disjoint

Consulte ST_Disjoint para obtener información sobre la sintaxis y ver un ejemplo.

ST_Equals

ST_Equals devuelve 1 ó t (TRUE) si dos geometrías del mismo tipo tienen valores de coordenadas x,y idénticos. Los primeros y segundos pisos de un edificio de oficinas podrían tener coordenadas x,y idénticas y, por lo tanto, ser iguales. ST_Equals también puede identificar si dos entidades se ubicaron de manera errónea una encima de la otra.

Las geometrías son iguales si tienen coordenadas x,y coincidentes

La matriz de patrón DE-9IM para igualdad asegura que los interiores se intersecan y que ninguna parte del interior o el límite de las dos geometrías interseca el exterior de la otra.

b

Interior

Límite

Exterior

Interior

T

*

F

un/a

Límite

*

*

F

Exterior

F

F

*

ST_EQUAL

Consulte ST_Equals para obtener información sobre la sintaxis y ver un ejemplo.

ST_Intersects

ST_Intersects devuelve 1 ó t (TRUE) si la intersección no resulta en un conjunto vacío. ST_Intersects devuelve el resultado exactamente opuesto de ST_Disjoint.

El predicado de ST_Intersects devolverá TRUE si las condiciones de cualquiera de las siguientes matrices de patrón devuelven TRUE.

El predicado de ST_Intersects devuelve TRUE si los interiores de ambas geometrías se intersecan.

b

Interior

Límite

Exterior

Interior

T

*

*

un/a

Límite

*

*

*

Exterior

*

*

2

Matriz 1 de ST_Intersects

El predicado de ST_Intersects devuelve TRUE si el interior de la primera geometría interseca el límite de la segunda geometría.

b

Interior

Límite

Exterior

Interior

*

T

*

un/a

Límite

*

*

*

Exterior

*

*

3

Matriz 2 de ST_Intersects

El predicado de ST_Intersects devuelve TRUE si el límite de la primera geometría interseca el interior de la segunda.

b

Interior

Límite

Exterior

Interior

*

*

*

un/a

Límite

T

*

*

Exterior

*

*

4

Matriz 3 de ST_Intersects

El predicado de ST_Intersects devuelve TRUE si los límites de cualquiera de las dos geometrías se intersecan.

b

Interior

Límite

Exterior

Interior

*

*

*

un/a

Límite

*

T

*

Exterior

*

*

*

Matriz 4 de ST_Intersects

Consulte ST_Intersects para obtener información sobre la sintaxis y ver un ejemplo.

ST_Overlaps

ST_Overlaps compara dos geometrías de la misma dimensión y devuelve 1 ó t (TRUE) si su conjunto de intersección resulta en una geometría diferente de ambas pero de la misma dimensión.

ST_Overlaps devuelve 1 ó t (TRUE) solamente para geometrías de la misma dimensión y únicamente cuando su conjunto de intersección resulta en una geometría de la misma dimensión. En otras palabras, si la intersección de dos ST_Polygons resulta en un ST_Polygon, la superposición devuelve 1 ó t (TRUE).

ST_Overlaps compara dos geometrías de la misma dimensión

Esta matriz de patrón se aplica a superposiciones ST_Polygon/ST_Polygon, ST_MultiPoint/ST_MultiPoint y ST_MultiPolygon/ST_MultiPolygon. Para estas combinaciones, el predicado de la superposición devuelve TRUE si el interior de ambas geometrías interseca el interior y el exterior de la otra.

b

Interior

Límite

Exterior

Interior

T

*

T

un/a

Límite

*

*

*

Exterior

T

*

2

Matriz 1 de ST_Overlaps

La siguiente matriz de patrón se aplica a las superposiciones de ST_LineString/ST_LineString y ST_MultiLineString/ST_MultiLineString. En este caso, la intersección de las geometrías debe resultar en una geometría que tenga una dimensión de 1 (otra ST_LineString o ST_MultiLineString). Si la dimensión de la intersección de los interiores resultara en 0 (un punto), el predicado de ST_Overlaps devolvería FALSE; sin embargo, el predicado de ST_Crosses devolvería TRUE.

b

Interior

Límite

Exterior

Interior

1

*

T

un/a

Límite

*

*

*

Exterior

T

*

*

Matriz 2 de ST_Overlaps

Consulte ST_Overlaps para obtener información sobre la sintaxis y ver un ejemplo.

ST_Relate

ST_Relate devuelve un valor de 1 ó t (TRUE) si la relación espacial especificada por la matriz de patrón es válida. Un valor de 1 ó t (TRUE) indica que existe algún tipo de relación espacial entre las geometrías.

Si los interiores o los límites de las geometrías a y b están relacionados de alguna manera, ST_Relate es verdadera. No importa que los exteriores de una geometría se intersequen con el interior o el límite de la otra o no.

b

Interior

Límite

Exterior

Interior

T

T

*

un/a

Límite

T

T

*

Exterior

*

*

*

Matriz de ST_Relate

Consulte ST_Relate para obtener información sobre la sintaxis y ver un ejemplo.

ST_Touches

ST_Touches devuelve 1 ó t (TRUE) si ninguno de los puntos comunes a ambas geometrías se intersecan con los interiores de ambas geometrías. Al menos una geometría debe ser ST_LineString, ST_Polygon, ST_MultiLineString o ST_MultiPolygon.

Resulta verdadera si cualquiera de los límites de las geometrías se intersecan o si solamente los interiores de una geometría se intersecan con los de la otra

Las matrices de patrón muestran que el predicado de ST_Touches devuelve TRUE cuando los interiores de las geometrías no se intersecan y el límite de cualquiera de las dos geometrías interseca el interior o el límite de la otra.

El predicado de ST_Touches devuelve TRUE si el límite de la geometría b interseca el interior de a pero los interiores no se intersecan.

b

Interior

Límite

Exterior

Interior

F

T

*

un/a

Límite

*

*

*

Exterior

*

*

Matriz 2 *

Matriz 1 de ST_Touches

El predicado de ST_Touches devuelve TRUE si el límite de la geometría a interseca el interior de b, pero los interiores no se intersecan.

b

Interior

Límite

Exterior

Interior

F

*

*

un/a

Límite

T

*

*

Exterior

*

*

Matriz 3 *

Matriz 2 de ST_Touches

El predicado de ST_Touches devuelve TRUE si los límites de ambas geometrías se intersecan, pero los interiores no.

b

Interior

Límite

Exterior

Interior

F

*

*

un/a

Límite

*

T

*

Exterior

*

*

*

Matriz 3 de ST_Touches

Consulte ST_Touches para obtener información sobre la sintaxis y ver un ejemplo.

ST_Within

ST_Within devuelve 1 ó t (TRUE) si la primera geometría está completamente incluida en la segunda. ST_Within prueba el resultado exactamente opuesto que ST_Contains.

ST_Within devuelve TRUE si la primera geometría está completamente incluida en la segunda.

La matriz de patrón de un predicado de ST_Within establece que los interiores de ambas geometrías se deben intersecar y que el interior y el límite de la primaria (geometría a) no debe intersecar el exterior de la secundaria (geometría b).

b

Interior

Límite

Exterior

Interior

T

*

F

un/a

Límite

*

*

F

Exterior

*

*

*

Matriz de ST_Within

Consulte ST_Within para obtener información sobre la sintaxis y ver un ejemplo.

Temas relacionados

9/11/2013