Las secciones anteriores contenían una introducción a las tres categorías de funciones espaciales:
Esta sección contiene una introducción a otras tres categorías:
Varias funciones espaciales devuelven información sobre formas en que las funciones geográficas se pueden relacionar o comparar entre sí. La mayoría de estas funciones, denominadas predicados, son funciones booleanas. Esta sección describe los predicados en general y luego cada uno de ellos por separado.
Las funciones de predicado devuelven 1 (TRUE) si una comparación cumple con los criterios de la función o 0 (FALSE) si la comparación falla. Los predicados que comprueban una relación espacial comparan pares de geometrías que pueden ser de distinto tipo o dimensión.
Los predicados comparan las coordenadas X e Y de las geometrías sometidas. Las coordenadas Z y la medida (si las hay) se pasan por alto. Esto permite comparar geometrías que tienen coordenadas Z o medida con otras que no las tienen.
El Modelo de intersección 9 ampliado dimensionalmente (DE-9IM) 1 es un enfoque matemático que define la relación espacial entre pares de geometrías de distintos tipos y dimensiones. Este modelo expresa las relaciones espaciales entre todos los tipos de geometrías como intersecciones entre pares de su interior, límite y exterior, teniendo en cuenta la dimensión de las intersecciones resultantes.
Supongamos que tenemos las geometrías a y b: I(a ), B(a ) y E(a ) representan el interior, límite y exterior de a. E I(b), B(b) y E(b) representan el interior, límite y exterior de b. La intersección de I(a), B(a) y E(a) con I(b), B(b) y E(b) genera una matriz 3 por 3. Cada intersección puede dar lugar a geometrías de diferentes dimensiones. Por ejemplo, la intersección de los límites de dos polígonos consta de un punto y una serie lineal, en cuyo caso la función dim devolvería la dimensión máxima de 1.
La función dim devuelve un valor de 1, 0, 1 ó 2. El 1 corresponde a
la serie nula de dim(null), que se devuelve cuando no se encuentra ninguna
intersección.
|
Interior
|
Límite
|
Exterior
|
Interior
|
dim(I(a) &intersect. I(b))
|
dim(I(a) &intersect. B(b))
|
dim(I(a) &intersect. E(b))
|
Límite
|
dim(B(a) &intersect. I(b))
|
dim(B(a) &intersect. B(b))
|
dim(B(a) &intersect. E(b))
|
Exterior
|
dim(E(a) &intersect. I(b))
|
dim(E(a) &intersect. B(b))
|
dim(E(a) &intersect. E(b))
|
Los resultados de los predicados de relación espacial se pueden entender o comprobar comparando los resultados del predicado con una matriz patrón que representa los valores aceptables para el DE-9IM.
La matriz patrón contiene los valores aceptables para cada una de las celtas de la matriz de intersecciones. Los posibles valores patrón son:
Por ejemplo, la siguiente matriz patrón correspondiente al predicado
ST_Within incluye los valores T, F y *.
Tabla 40. Matriz correspondiente a ST_Within
La matriz patrón del predicado ST_Within correspondiente a combinaciones de geometrías. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
F
|
|
Límite
|
*
|
*
|
F
|
|
Exterior
|
*
|
*
|
*
|
El predicado ST_Within devuelve TRUE si los interiores de ambas geometrías forman intersección y si el interior y el límite de a no forma intersección con el exterior de b. Las demás condiciones no importan.
Cada predicado tiene al menos una matriz patrón, pero algunos necesitan más de una para describir las relaciones de combinaciones de varios tipos de geometrías.
ST_Equals devuelve 1 (TRUE) si las dos geometrías del mismo tipo tienen valores de coordenadas X,Y idénticos.
Figura 14. ST_Equals. Las geometrías son iguales si tienen coordenadas X,Y coincidentes.
![]() |
Tabla 41. Matriz correspondiente a igualdad
La matriz de patrón DE-9IM correspondiente a igualdad asegura que los interiores forman intersección y que ninguna parte del interior o del límite de ninguna geometría forma intersección con el exterior de la otra. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
F
|
|
Límite
|
*
|
*
|
F
|
|
Exterior
|
F
|
F
|
*
|
Para obtener más información, consulte el tema ST_Equals.
ST_OrderingEquals compara dos geometrías y devuelve 1 (TRUE) si las geometrías son iguales y las coordenadas están en el mismo orden; si no es así, devuelve 0 (FALSE). Para obtener más información, consulte el tema ST_OrderingEquals.
ST_Disjoint devuelve 1 (TRUE) si la intersección de las dos geometrías es un conjunto vacío.
Figura 15. ST_Disjoint. Las geometrías están desunidas si no forman intersección entre sí en ninguna forma.
![]() |
Tabla 42. Matriz correspondiente a ST_Disjoint
La matriz patrón del predicado ST_Disjoint indica que ni los interiores ni los límites de ninguna geometría forman intersección. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
F
|
F
|
*
|
|
Límite
|
F
|
F
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obtener más información, consulte el tema ST_Disjoint.
ST_Intersects devuelve 1 (TRUE) si la intersección no da como resultado un conjunto vacío. La intersección devuelve exactamente el resultado opuesto a ST_Disjoint.
El predicado ST_Intersects devuelve TRUE si las condiciones de algunas
de las siguientes matrices patrón devuelven TRUE.
Tabla 43. Matriz correspondiente a ST_Intersects (1)
El predicado ST_Intersects devuelve TRUE si los interiores de ambas geometrías forman intersección. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
*
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabla 44. Matriz correspondiente a ST_Intersects (2)
El predicado ST_Intersects devuelve TRUE si el límite de la primera geometría forma intersección con el límite de la segunda. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
*
|
T
|
*
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabla 45. Matriz correspondiente a ST_Intersects (3)
El predicado ST_Intersects devuelve TRUE si el límite de la primera geometría forma intersección con el interior de la segunda. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
*
|
*
|
*
|
|
Límite
|
T
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabla 46. Matriz correspondiente a ST_Intersects (4)
El predicado ST_Intersects devuelve TRUE si los límites de alguna de las geometrías forman intersección. | ||||
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
*
|
*
|
*
|
|
Límite
|
*
|
T
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obtener más información, consulte el tema ST_Intersects.
Esta función devuelve 1 (TRUE) su las envolturas de dos geometrías forman intersección. Es una función muy útil que implanta de forma eficiente ST_Intersects (ST_Envelope(g1),ST_Envelope(g2)). Para obtener más información, consulte el tema EnvelopesIntersect.
ST_Touches devuelve 1 (TRUE) si ninguno de los puntos comunes a ambas geometrías forman intersección con los interiores de ambas geometrías. Al menos una geometría debe ser serie lineal, polígono, varias series lineales o varios polígonos.
![]() |
Las matrices patrón muestran que el predicado ST_Touches devuelve TRUE
cuando los interiores de las geometrías no forman intersección y el límite de
alguna de las geometrías forma intersección con el interior o el límite de la
otra.
Tabla 47. Matriz correspondiente a ST_Touches (1)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
F
|
T
|
*
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabla 48. Matriz correspondiente a ST_Touches (2)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
F
|
*
|
*
|
|
Límite
|
T
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabla 49. Matriz correspondiente a ST_Touches (3)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
F
|
*
|
*
|
|
Límite
|
*
|
T
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obtener más información, consulte el tema ST_Touches.
ST_Overlaps compara dos geometrías de la misma dimensión. Devuelve 1 (TRUE) si su conjunto de intersecciones da lugar a una geometría distinta de ambas, pero que tenga la misma dimensión.
![]() |
La matriz patrón de la Tabla 50 se aplica a recubrimientos polígono/polígono, varios
puntos/varios puntos y varios polígonos/varios polígonos. Para estas
combinaciones, el predicado overlay devuelve TRUE si el interior de cada
geometría forma intersección con el interior y el exterior del otro.
Tabla 50. Matriz correspondiente a ST_Overlaps (1)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
T
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
T
|
*
|
*
|
La matriz patrón de la Tabla 51 se aplica a recubrimientos serie lineal/serie lineal y
varias series lineales/varias series lineales. En este caso, la
intersección de las geometrías debe dar lugar a una geometría con una
dimensión de 1 (otra serie lineal). Si la dimensión de la intersección
de los interiores es 1, el predicado ST_Overlaps devolvería FALSE, pero el
predicado ST_Crosses devolvería TRUE.
Tabla 51. Matriz correspondiente a ST_Overlaps (2)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
1
|
*
|
T
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
T
|
*
|
*
|
Para obtener más información, consulte el tema ST_Overlaps.
ST_Crosses devuelve 1 (TRUE) si la intersección da lugar a una geometría cuya dimensión es un grado menor que la dimensión máxima de las dos geometrías fuente y el conjunto de intersecciones es interior a ambas geometrías fuente. ST_Crosses devuelve 1 (TRUE) sólo para comparaciones varios puntos/polígono, varios puntos/serie lineal, serie lineal/serie lineal, serie lineal/polígono y serie lineal/varios polígonos.
![]() |
La matriz patrón de la Tabla 52 se aplica a varios puntos/serie lineal, varios puntos/varias
series lineales, varios puntos/polígono, varios puntos/varios polígonos, serie
lineal/polígono, serie lineal/varios polígonos. La matriz indica que
los interiores deben formar intersección y que el interior de la geometría
principal (geometría a ) debe formar intersección con el exterior
de la secundaria (geometría b ).
Tabla 52. Matriz correspondiente a ST_Crosses (1)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
T
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
La matriz patrón de la Tabla 53 se aplica a serie lineal/serie lineal, serie lineal/varias
series lineales y varias series lineales/varias series lineales. La
matriz indica 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 es 1
(intersección en una serie lineal), el predicado ST_Crosses devuelve
FALSE; sin embargo, el predicado ST_Overlaps devuelve TRUE.
Tabla 53. Matriz correspondiente a ST_Crosses (2)
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
0
|
*
|
*
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obtener más información, consulte el tema ST_Crosses.
ST_Within devuelve 1 (TRUE) si la primera geometría queda completamente dentro de la segunda geometría. ST_Within devuelve exactamente el resultado opuesto a ST_Contains.
![]() |
La matriz patrón del predicado ST_Within indica que los interiores de
ambas geometrías deben formar intersección, y que el interior y el límite de
la geometría principal (geometría a ) no deben formar intersección
con el exterior de la secundaria (geometría b ).
Tabla 54. Matriz correspondiente a ST_Within
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
F
|
|
Límite
|
*
|
*
|
F
|
|
Exterior
|
*
|
*
|
*
|
Para obtener más información, consulte el tema ST_Within.
ST_Contains devuelve 1 (TRUE) si la segunda geometría queda completamente contenida en la primera geometría. El predicado ST_Contains devuelve exactamente el resultado opuesto al predicado ST_Within.
![]() |
La matriz patrón del predicado ST_Contains indica que los interiores de
ambas geometrías deben forman intersección y que el interior y el límite de la
geometría secundaria (geometría b ) no debe formar intersección con
el exterior de la principal (geometría a ).
Tabla 55. Matriz correspondiente a ST_Contains
|
|
b
|
|
|
|
|
Interior
|
Límite
|
Exterior
|
a
|
Interior
|
T
|
*
|
*
|
|
Límite
|
*
|
*
|
*
|
|
Exterior
|
F
|
F
|
*
|
Para obtener más información, consulte el tema ST_Contains.
La función ST_Relate compara dos geometrías y devuelve 1 (TRUE) si las geometrías cumplen con las condiciones especificadas por la serie de la matriz patrón DE-91M; si no es así, la función devuelve 0 (FALSE). Para obtener más información, consulte el tema ST_Relate.
La función ST_Distance indica la distancia mínima que separa dos funciones desunidas. Si las funciones no están desunidas, la función indicará una distancia mínima de 0.
Por ejemplo, ST_Distance podría indicar la distancia más corta que debe recorrer un avión entre dos ubicaciones. La Figura 20 ilustra esta información.
Figura 20. Distancia mínima entre dos ciudades. ST_Distance puede tomar las coordenadas correspondientes a las ciudades de Los Ángeles y Chicago como entrada y devolver un valor que indique la distancia mínima entre estas ubicaciones.
![]() |
Para obtener más información, consulte el tema ST_Distance.
DB2 Spatial Extender ofrece predicados y funciones de transformación que generan geometrías nuevas a partir de geometrías existentes.
La función ST_Intersection devuelve el conjunto de intersecciones de dos geometrías. El conjunto de intersecciones siempre se devuelve como un grupo que es la dimensión mínima de las geometrías fuente. Por ejemplo, para una serie lineal que forma intersección con un polígono, la función de intersección devuelve una geometría varias series lineales compuesta de la parte de la serie lineal común al interior y al límite del polígono. La geometría varias series lineales contiene más de una serie lineal si la serie lineal fuente forma intersección con el polígono en dos o más segmentos discontinuos. Si las geometrías no forman intersección o si la intersección da como resultado una dimensión inferior a las de las geometrías fuente, se devuelve una geometría vacía.
Figura 21. ST_Intersection. Ejemplos de la función ST_Intersection.
![]() |
Para obtener más información, consulte el tema ST_Intersection.
La función ST_Difference devuelve la parte de la geometría principal que no forma intersección con la geometría secundaria. Se trata del AND NOT lógico de espacio. La función ST_Difference sólo funciona sobre geometrías de la misma dimensión y devuelve un grupo que tiene la misma dimensión que las geometrías fuente. En el caso de que las geometrías fuente fueran iguales, se devolvería una geometría vacía.
![]() |
Para obtener más información, consulte el tema ST_Difference.
La función ST_Union devuelve el conjunto de unión de dos geometrías. Es el OR lógico de espacio. Las geometrías fuente deben tener la misma dimensión. ST_Union siempre devuelve el resultado como un grupo.
![]() |
Para obtener más información, consulte el tema ST_Union.
La función ST_Buffer genera una geometría rodeando una geometría a una distancia especificada. Da como resultado un polígono cuando se rodea una geometría principal o cuando los elementos de un grupo están lo suficientemente juntos para que todos los polígonos rodeados se solapan. Sin embargo, si hay suficiente separación entre los elementos de un grupo rodeado, se obtendrá como resultado polígonos individuales rodeados; en este caso la función ST_Buffer devuelve una geometría varios polígonos.
![]() |
La función ST_Buffer acepta distancias positivas y negativas; sin embargo, sólo las geometrías con una dimensión de dos (polígonos y varios polígonos) aplican un rodeo negativo. El valor absoluto de la distancia rodeada se utiliza cuando la dimensión de la geometría fuente es menor que 2 (todas las geometrías que no son polígono o varios polígonos).
En general, para anillos exteriores, las distancias de rodeo positivas generan anillos de polígono que están lejos del centro de la geometría fuente; las distancias de rodeo negativas generan anillos de polígono o de varios polígonos hacia el centro. Para anillos interiores de un polígono o de varios polígonos, una distancia de rodeo positiva genera un anillo de rodeo hacia el centro y una distancia de rodeo negativa genera un anillo de rodeo alejado del centro.
El proceso de rodeo fusiona polígonos que se solapan. Las distancias negativas superiores a la mitad de la anchura interior máxima de un polígono dan como resultado una geometría vacía.
Para obtener más información, consulte el tema ST_Buffer.
Para geometrías que tienen medidas, la ubicación de una determinada medida se puede encontrar con la función LocateAlong. LocateAlong devuelve la ubicación como una geometría varios puntos. Si la dimensión de la geometría fuente es 0 (por ejemplo, un punto y una geometría varios puntos), se necesita una coincidencia exacta y los puntos que tienen un valor de medida coincidente se devuelven como una geometría varios puntos. Sin embargo, para geometrías fuente cuya dimensión es mayor que 0, la ubicación se interpola. Por ejemplo, si el valor de medida entrado es 5,5 y las medidas de los vértices de una serie lineal son 3, 4, 5, 6 y 7 respectivamente, se devuelve el punto interpolado que queda exactamente a mitad de camino entre los vértices con los valores de medida 5 y 6.
![]() |
Para obtener más información, consulte el tema LocateAlong.
La función LocateBetween devuelve una serie de rutas o ubicaciones que quedan entre dos valores de medida de una geometría fuente que tiene medidas. Si la dimensión de la geometría fuente es 0, LocateBetween devuelve una geometría varios puntos que contiene todos los puntos cuyas medidas quedan entre las dos medidas fuente. Para geometrías fuente cuya dimensión es mayor que 0, LocateBetween devuelve una geometría varias series lineales si se puede interpolar una ruta; si no es así, LocateBetween devuelve una geometría varios puntos que contiene las ubicaciones de los puntos. Se devuelve un punto vacío si LocateBetween no puede interpolar una ruta ni encontrar ninguna ubicación entre las medidas. LocateBetween realiza una búsqueda tipo inclusive de las geometrías; por lo tanto, las medidas de las geometrías deben ser superiores o iguales que la medida origen e inferiores o iguales que la medida destino.
![]() |
Para obtener más información, consulte el tema LocateBetween.
La función ST_ConvexHull devuelve el polígono de casco convexo de cualquier geometría que tenga al menos tres vértices que formen una forma convexa. Si los vértices de la geometría no forman una forma convexa, ST_ConvexHull devuelve un nulo. ST_ConvexHull suele ser el primer paso del proceso utilizado para crear una red TIN a partir de una serie de puntos.
![]() |
Para obtener más información, consulte el tema ST_ConvexHull.
Genera un polígono a partir de una serie lineal. Para obtener más información, consulte el tema ST_Polygon.
DB2 Spatial Extender da soporte a tres formatos de intercambio de datos GIS:
DB2 Spatial Extender tiene varias funciones que generan geometrías a partir de descripciones de texto.
La representación de texto es una serie ASCII. Permite intercambiar una geometría en formato de texto ASCII. Estas funciones no necesitan la definición de ninguna estructura de programa especial para correlacionar una representación binaria. Por lo tanto, se pueden utilizar en un programa 3GL o 4GL.
La función ST_AsText convierte un valor de geometría existente en una representación de texto. Para obtener más información, consulte el tema ST_AsText.
Para ver una descripción detallada de representaciones de texto conocido, consulte el tema Las representaciones de texto conocido OGC.
DB2 Spatial Extender tiene varias funciones que generan geometrías a partir de representaciones de binario conocido (WKB).
La representación de binario conocido es una corriente continua de bytes. Permite intercambiar una geometría entre un cliente ODBC y una base de datos SQL en formato binario. Estas funciones geométricas necesitan la definición de estructuras C para correlacionar la representación binaria. Por lo tanto, están destinadas a ser utilizadas dentro de un programa 3GL y no se ajustan a un entorno 4GL.
La función ST_AsBinary convierte un valor de geometría existente en una representación de binario conocido. Para obtener más información, consulte el tema ST_AsBinary.
Para ver una descripción detallada de las representaciones de binario conocido, consulte el tema Las representaciones de binario conocido (WKB) de OGC.
DB2 Spatial Extender tiene varias funciones que generan geometrías a partir de una representación de forma ESRI. La representación de forma ESRI da soporte a coordenadas Z y a medidas, además de las representaciones de dos dimensiones soportadas por las representaciones de binario conocido y de texto.
La sintaxis general de estas funciones es la misma. El primer argumento es la representación de forma que se entra como un tipo de datos BLOB. El segundo argumento es el identificador de referencias espaciales que se asignará a la geometría. Por ejemplo, la función GeometryFromShape tiene la siguiente sintaxis:
GeometryFromShape(shapegeometry, SRID)
Para correlacionar la representación binaria, estas funciones de forma necesitan la definición de estructuras C. Por lo tanto, están destinadas a ser utilizadas dentro de un programa 3GL y no se ajustan a un entorno 4GL.
La función AsBinaryShape convierte un valor de geometría en una representación de forma ESRI. Para obtener más información, consulte el tema AsBinaryShape.
Para ver una descripción detallada de las representaciones de forma, consulte el tema Las representaciones de forma ESRI.