As seções precedentes apresentam três categorias de funções espaciais:
Esta seção apresenta mais três categorias:
Várias funções espaciais retornam informações sobre formas em que os recursos geográficos se relacionam ou se comparam. A maioria destas funções, denominadas predicados, são funções booleanas. Esta seção descreve os predicados em geral e, em seguida, discute cada função individualmente.
As funções de predicado retornam 1 (VERDADEIRO) se uma comparação atender aos critérios da função, ou 0 (FALSO) se a comparação falhar. Os predicados que testam uma relação espacial comparam pares de geometrias que podem ser de um tipo ou dimensão diferentes.
Os predicados comparam as coordenadas X e Y das geometrias submetidas. As coordenadas Z e a medida (se existirem) serão ignoradas. Isto permite que as geometrias tenham coordenadas Z ou medida para comparação com aquelas que não têm.
O Modelo de Interseção 9 Dimensionalmente Estendido (DE-9IM) 1 é uma abordagem matemática que define a relação espacial pair-wise entre geometrias de tipos e dimensões diferentes. Este modelo expressa relações espaciais entre todos os tipos de geometria como interseções pair-wise de seu interior, limite e exterior e consideração com a dimensão das interseções resultantes.
Dadas as geometrias a e b: I(a ), B(a ) e E(a ) representam o interior, o limite e o exterior de a. E, I(b), B(b) e E(b) representam o interior, o limite e o exterior de b. As interseções de I(a), B(a) e E(a) com I(b), B(b) e E(b) produzem uma matriz 3 por 3. Cada interseção pode resultar em geometrias de dimensões diferentes. Por exemplo, a interseção dos limites de dois polígonos consiste num ponto e numa cadeia de linha. Nesse caso, a função dim retornará a dimensão máxima de 1.
A função dim retorna um valor de 1, 0, 1 ou 2. 1 corresponde ao
conjunto nulo ou dim(null), que retorna quando nenhuma interseção é
encontrada.
|
Interior
|
Limite
|
Exterior
|
Interior
|
dim(I(a) &intersect. I(b))
|
dim(I(a) &intersect. B(b))
|
dim(I(a) &intersect. E(b))
|
Limite
|
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))
|
Os resultados dos predicados da relação espacial podem ser entendidos ou verificados através da comparação de resultados do predicado com a matriz padrão que representa os valores aceitáveis para DE-9IM.
A matriz padrão contém os valores aceitáveis para cada célula da matriz de interseção. Os valores padrão possíveis são:
Por exemplo a seguinte matriz padrão do predicado ST_Within inclui os
valores T, F e *.
Tabela 40. Matriz para ST_Within
A matriz padrão do predicado ST_Within para combinações de geometria. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
F
|
|
Limite
|
*
|
*
|
F
|
|
Exterior
|
*
|
*
|
*
|
O predicado ST_Within retorna VERDADEIRO quando os interiores das duas geometrias fazem interseção e quando o interior e o limite de a não faz interseção com o exterior de b. Todas as outras condições não importam.
Cada predicado tem pelo menos uma matriz padrão, mas alguns exigem mais que uma para descrever as relações de várias combinações de tipo de geometria.
ST_Equals retorna 1 (VERDADEIRO) se duas geometrias do mesmo tipo tiverem valores idênticos das coordenadas X,Y.
Figura 14. ST_Equals. As geometrias serão iguais se possuírem coordenadas X,Y correspondentes.
![]() |
Tabela 41. Matriz para igualdade
A matriz padrão DE-9IM para igualdade assegura que os interiores fazem interseção e que nenhuma parte ou limite interior da geometria faz interseção com o exterior de outra. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
F
|
|
Limite
|
*
|
*
|
F
|
|
Exterior
|
F
|
F
|
*
|
Para obter mais informações, consulte ST_Equals.
ST_OrderingEquals compara duas geometrias e retorna 1 (VERDADEIRO) se as geometrias forem iguais e as coordenadas estiverem na mesma ordem; do contrário, retornará 0 (FALSO). Para obter mais informações, consulte ST_OrderingEquals.
ST_Disjoint retorna 1 (VERDADEIRO) se a interseção das duas geometrias for um conjunto vazio.
Figura 15. ST_Disjoint. As geometrias serão desunidas se não fizerem interseção entre si de alguma forma.
![]() |
Tabela 42. Matriz para ST_Disjoint
A matriz padrão do predicado ST_Disjoint simples indica que nem o interior nem o limite da geometria fazem interseção. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
F
|
F
|
*
|
|
Limite
|
F
|
F
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obter mais informações, consulte ST_Disjoint.
ST_Intersects retorna 1 (VERDADEIRO) se a interseção não resultar em um conjunto vazio. A interseção retorna o resultado oposto exato de ST_Disjoint.
O predicado ST_Intersects retorna VERDADEIRO se as condições de
quaisquer matrizes padrão seguintes retornarem VERDADEIRO.
Tabela 43. Matriz para ST_Intersects (1)
O predicado ST_Intersects retorna VERDADEIRO se os interiores das duas geometrias fizerem interseção. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabela 44. Matriz para ST_Intersects (2)
O predicado ST_Intersects retorna VERDADEIRO se o limite da primeira geometria fizer interseção com o limite da segunda. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
*
|
T
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabela 45. Matriz para ST_Intersects (3)
O predicado ST_Intersects retorna VERDADEIRO se o limite da primeira geometria fizer interseção com o interior da segunda. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
*
|
*
|
*
|
|
Limite
|
T
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabela 46. Matriz para ST_Intersects (4)
O predicado ST_Intersects retorna VERDADEIRO se os limites de qualquer geometria fizerem interseção. | ||||
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
*
|
*
|
*
|
|
Limite
|
*
|
T
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obter mais informações, consulte ST_Intersects.
Esta função retorna 1 (VERDADEIRO) se os envelopes das duas geometrias fizerem interseção. É uma função de conveniência que implementa eficientemente ST_Intersects (ST_Envelope(g1),ST_Envelope(g2)). Para obter mais informações, consulte EnvelopesIntersect.
ST_Touches retorna 1 (VERDADEIRO) se nenhum dos pontos comuns a ambas as geometrias fizerem interseção com os interiores das duas. Pelo menos uma geometria deve ser uma cadeia de linhas, polígono, cadeia de linhas múltiplas ou multipolígonos.
![]() |
As matrizes padrão mostram que o predicado ST_Touches retorna VERDADEIRO
quando os interiores da geometria não fizerem interseção e o limite de uma
delas fizer interseção com o interior ou limite de outra.
Tabela 47. Matriz para ST_Touches (1)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
F
|
T
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabela 48. Matriz para ST_Touches (2)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
F
|
*
|
*
|
|
Limite
|
T
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Tabela 49. Matriz para ST_Touches (3)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
F
|
*
|
*
|
|
Limite
|
*
|
T
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obter mais informações, consulte ST_Touches.
ST_Overlaps compara duas geometrias da mesma dimensão. Ela retorna 1 (VERDADEIRO) se o conjunto de interseção resultar numa geometria diferente de ambas, mas que tenha a mesma dimensão.
![]() |
A matriz padrão na Tabela 50 aplica-se a sobreposições polígono/polígono,
multipontos/multipontos e multipolígonos/multipolígonos. Para estas
combinações, o predicado de sobreposição retornará VERDADEIRO se o interior de
ambas geometrias fizerem interseção com o interior e exterior de
outras.
Tabela 50. Matriz para ST_Overlaps (1)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
T
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
T
|
*
|
*
|
A matriz padrão na Tabela 51 aplica-se a sobreposições de cadeia de linhas/cadeia de
linhas e cadeia de linhas múltiplas/cadeia de linhas múltiplas. Neste
caso, a interseção das geometrias deverá resultar numa geometria que tenha uma
dimensão 1 (outra cadeia de linha). Se a dimensão da interseção dos
interiores for 1, o predicado ST_Overlaps retornaria FALSO, no entanto, o
predicado ST_Crosses retornaria VERDADEIRO.
Tabela 51. Matriz para ST_Overlaps (2)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
1
|
*
|
T
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
T
|
*
|
*
|
Para obter mais informações, consulte ST_Overlaps.
ST_Crosses retorna 1 (VERDADEIRO) se a interseção resultar numa geometria cuja dimensão seja uma menor que a dimensão máxima das duas geometrias de origem e o conjunto de interseção seja interior em ambas. ST_Crosses retorna 1 (VERDADEIRO) somente para comparações de multipontos/polígono, multipontos/cadeia de linha, cadeia de linha/cadeia de linha, cadeia de linha/polígono e cadeia de linha/multipolígonos.
![]() |
A matriz padrão na Tabela 52 aplica-se a multipontos/cadeia de linhas, multipontos/cadeia
de linhas múltiplas, multipontos/polígono, multipontos/multipolígonos, cadeia
de linhas/polígono, cadeia de linhas/multipolígonos. A matriz indica
que os interiores devem fazer interseção e que o interior da primária
(geometria a ) deve fazer interseção com o interior da secundária
(geometria b ).
Tabela 52. Matriz para ST_Crosses (1)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
T
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
A matriz padrão na Tabela 53 aplica-se à cadeia de linhas/cadeia de linhas, cadeia de
linhas/cadeia de linhas múltiplas e cadeia de linhas múltiplas/cadeia de
linhas múltiplas. A matriz indica que a dimensão da interseção dos
interiores deve ser 0 (interseção num ponto). Se a dimensão desta
interseção for 1 (interseção numa cadeia de linha), o predicado ST_Crosses
retornará FALSO; no entanto, o predicado ST_Overlaps retornará
VERDADEIRO.
Tabela 53. Matriz para ST_Crosses (2)
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
0
|
*
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
*
|
*
|
*
|
Para obter mais informações, consulte ST_Crosses.
ST_Within retorna 1 (VERDADEIRO) se a primeira geometria estiver completamente dentro da segunda. ST_Within retorna o resultado oposto exato de ST_Contains.
![]() |
A matriz do predicado ST_Within indica que os interiores das duas
geometrias devem fazer interseção e que o interior e o limite da geometria
primária (geometria a) não deve fazer interseção com o exterior da
segunda (geometria b).
Tabela 54. Matriz para ST_Within
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
F
|
|
Limite
|
*
|
*
|
F
|
|
Exterior
|
*
|
*
|
*
|
Para obter mais informações, consulte ST_Within.
ST_Contains retorna 1 (VERDADEIRO) se a segunda geometria estiver completamente dentro da primeira. O predicado ST_Contains retorna o resultado oposto exato do predicado ST_Within.
![]() |
A matriz padrão do predicado ST_Contains indica que o interior das duas
geometrias deve fazer interseção e que o interior e limite da secundária
(geometria b) não deve fazer interseção com o exterior da primária
(geometria a).
Tabela 55. Matriz para ST_Contains
|
|
b
|
|
|
|
|
Interior
|
Limite
|
Exterior
|
a
|
Interior
|
T
|
*
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Exterior
|
F
|
F
|
*
|
Para obter mais informações, consulte ST_Contains.
A função ST_Relate compara duas geometrias e retornará 1 (VERDADEIRO) se as geometrias atenderem às condições especificadas pela cadeia de matrizes padrão DE-91M, do contrário, a função retornará 0 (FALSO). Para obter mais informações, consulte ST_Relate.
A função ST_Distance informa a distância mínima que separa dois recursos desunidos. Se os recurso não estiverem desunidos, a função irá informar uma distância mínima de O.
Por exemplo, ST_Distance poderia informar a menor distância entre dois locais que uma aeronave deveria viajar. A Figura 20 ilustra estas informações.
Figura 20. Distância mínima entre duas cidades. ST_Distance pode tomar as coordenadas para as cidades de Los Angeles e Chicago como entrada e retornar uma valor indicando a distância mínima entre estes locais.
![]() |
Para obter mais informações, consulte ST_Distance.
O DB2 Spatial Extender fornece predicados e funções de transformação que geram novas geometrias a partir de existentes.
A função ST_Intersection retorna o conjunto de interseção de duas geometrias. Ele sempre retorna como uma coleção que indica a dimensão mínima das geometrias de origem. Por exemplo, para uma cadeia de linhas que faça interseção com um polígono, a função de interseção retorna uma cadeia de linhas múltiplas composta dessa parte da cadeia de linhas comum ao interior e ao limite do polígono. A cadeia de linhas múltiplas conterá mais de uma cadeia de linhas se a cadeia de linhas de origem fizer interseção com o polígono com dois ou mais segmentos descontínuos. Se as geometrias não fizerem interseção ou se a interseção resultar numa dimensão menor que ambas as geometrias de origem, será retornada uma geometria vazia.
Figura 21. ST_Intersection. Exemplos da função ST_Intersection.
![]() |
Para obter mais informações, consulte ST_Intersection.
A função ST_Difference retorna a parte da geometria primária que não fez interseção com a segunda geometria. Este é o E NÃO (AND NOT) lógico de espaço. A função ST_Difference opera somente em geometrias de dimensão semelhante e retorna uma coleção que tem a mesma dimensão que as geometrias de origem. No caso de as geometrias serem iguais, será retornado uma geometria vazia.
![]() |
Para obter mais informações, consulte ST_Difference.
A função ST_Union retorna o conjunto de união de duas geometrias. Este é o OU (OR) lógico de espaço. As geometrias de origem deve ser de dimensão semelhante. ST_Union sempre retorna o resultado como uma coleção.
![]() |
Para obter mais informações, consulte ST_Union.
A função ST_Buffer gera uma geometria englobando uma geometria numa distância especificada. Um polígono resultará quando uma geometria primária estiver em buffer, sempre que os elementos de uma coleção estiverem próximos o suficiente, de modo que todos os polígonos do buffer estejam sobrepostos. No entanto, quando há separação suficiente entre os elementos de uma coleção em buffer, resultarão polígonos individuais do buffer indicando, nesse caso, que a função ST_Buffer retorna multipolígonos.
![]() |
A função ST_Buffer aceita distâncias positivas e negativas, no entanto, somente geometrias com dimensão dois (polígonos e multipolígonos) aplicam um buffer negativo. O valor absoluto da distância do buffer é usado sempre que a dimensão da geometria de origem for menor que 2 (todas as geometrias que não sejam polígonos ou multipolígonos).
Em geral, para anéis externos, as distâncias do buffer positivo geram anéis de polígonos que estejam distantes do centro da geometria de origem; distâncias de buffer negativo geram anéis de polígonos ou multipolígonos em direção ao centro. Para anéis internos de um polígono ou multipolígonos, a distância de um buffer positivo gera um anel de buffer em direção ao centro e uma distância de um buffer negativo gera um anel de buffer a partir do centro.
O processo de buffer combina polígonos que se sobrepõem. As distâncias negativas maiores que metade da largura máxima do interior de um polígono resultam numa geometria vazia.
Para obter mais informações, consulte ST_Buffer.
Para geometrias que contêm medidas, a localização de uma determinada medida pode ser encontrada com a função LocateAlong. LocateAlong retorna a localização como multipontos. Se a dimensão da geometria de origem for zero 0 (por exemplo, um ponto e multipontos), será solicitada uma correspondência exata e esses pontos que têm valor de medida correspondente retornarão como multipontos. Contudo, para geometrias de origem cuja dimensão seja maior que 0, a localização será interpolada. Por exemplo, se o valor de medida digitado for 5,5 e as medidas nos vértices de uma cadeia de linha forem 3, 4, 5, 6 e 7 respectivamente, o ponto interpolado que ficar exatamente entre os vértices com valores de medida 5 e 6 retornarão.
![]() |
Para obter mais informações, consulte LocateAlong.
A função LocateBetween retorna o conjunto de caminhos ou localizações que ficam entre dois valores de medida de uma geometria de origem que tenha medidas. Se a dimensão de geometria de origem for 0, LocateBetween retornará multipontos contendo todos os pontos cujas medidas estejam entre as duas medidas de origem. Para geometrias de origem cuja dimensão seja maior que 0, LocateBetween retornará uma cadeia de linhas múltiplas se for possível interpolar um caminho; do contrário, LocateBetween retornará multipontos contendo as localizações do ponto. Um ponto vazio retornará sempre que LocateBetween não conseguir interpolar um caminho ou encontrar uma localização entre as medidas. LocateBetween executa uma pesquisa inclusiva das geometrias; portanto as medidas das geometrias devem ser maiores ou iguais à medida de origem e menores ou iguais à medida de destino.
![]() |
Para obter mais informações, consulte LocateBetween.
A função ST_ConvexHull retorna o polígono de casca convexa de qualquer geometria que tenha pelo menos três vértices formando um convexo. Se os vértices da geometria não formarem um convexo, ST_ConvexHull retornará um nulo. ST_ConvexHull geralmente é a primeira etapa em mosaico utilizada para criar uma rede TIN a partir de um conjunto de pontos.
![]() |
Para obter mais informações, consulte ST_ConvexHull.
Gera um polígono a partir de uma cadeia de linha. Para obter mais informações, consulte ST_Polygon.
O DB2 Spatial Extender suporta três formatos de troca de dados GIS:
O DB2 Spatial Extender possui várias funções que geram geometrias a partir de descrições de textos.
A representação de texto é uma cadeia ASCII. Ela permite que a geometria seja trocada no formato de texto ASCII. Estas funções não exigem a definição de estruturas de programas especiais para mapear uma representação do modo binário. Portanto, podem ser usadas num programa 3GL ou 4GL.
A função ST_AsText converte o valor de uma geometria existente em representação de texto. Para obter mais informações, consulte ST_AsText.
Para obter uma descrição detalhada de representações de texto reconhecidas, consulte As representações de texto reconhecidas de OGC.
O DB2 Spatial Extender possui várias funções que geram geometrias a partir de representações do modo binário reconhecidas (WKB).
A representação do modo binário reconhecida é um fluxo contíguo de bytes. Ela permite que a geometria sejam trocada entre um cliente ODBC e um banco de dados SQL no modo binário. Estas funções de geometria exigem a definição das estruturas C para mapear a representação do modo binário. Portanto, elas destinam-se ao uso dentro de um programa 3GL e não se adequam a um ambiente 4GL.
A função ST_AsBinary converte um valor de geometria existente em representação do modo binário reconhecida. Para obter mais informações, consulte ST_AsBinary.
Para obter uma descrição detalhada de representações do modo binário reconhecidas, consulte As representações (WKB) do modo binário reconhecidas.
O DB2 Spatial Extender possui várias funções que geram geometrias a partir de uma representação de shape ESRI. A representação de shape ESRI suporta coordenadas Z e medidas, além das representações bidimensionais suportadas pelas representações de texto e do modo binário reconhecidas.
A sintaxe geral destas funções é a mesma. O primeiro argumento é a representação de shape fornecida como tipo de dados BLOB. O segundo argumento é o identificador de referência espacial que será atribuído à geometria. Por exemplo, a função GeometryFromShape apresenta a seguinte sintaxe:
GeometryFromShape(shapegeometry, SRID)
Para mapear a representação do modo binário, estas funções de shape exigem a definição de estruturas C. Portanto, elas destinam-se ao uso dentro de um programa 3GL e não se adequam a um ambiente 4GL.
A função AsBinaryShape converte o valor de uma geometria em uma representação do shape ESRI. Para obter mais informações, consulte AsBinaryShape.
Para obter uma descrição detalhada de representações de shape, consulte As representações de shape ESRI.