ST_Distance toma duas figuras geométricas e retorna a distância mais próxima que as separa.
Sintaxe
db2gse.ST_Distance(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Tipo de retorno
Duplo
Exemplos
O engenheiro da cidade precisa de uma lista de todas as construções que estejam dentro de 30 cm de qualquer linha do lote.
A coluna BUILDINGI_ID da tabela BUILDINGFOOTPRINTS identifica exclusivamente cada construção. A coluna LOT_ID identifica o lote a que cada construção pertence. O multipolígono da base armazena a figura geométrica de cada base da construção.
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon);
A tabela LOTS armazena a ID do lote que identifica exclusivamente cada lote e o multipolígono do lote que contém a figura geométrica de linha do lote.
CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon);
A consulta retorna uma lista de IDs de construção que estejam dentro de 30 cm das linhas do lote. A função ST_Distance executa uma junção espacial entre as bases e o limite dos multipolígonos do lote. No entanto, a equijunção entre bf.lot_id LOTS.lot_id assegura que somente os multipolígonos pertencentes ao mesmo lote sejam comparados pela função ST_Distance.
SELECT bf.building_id FROM BUILDINGFOOTPRINTS bf, LOTS WHERE bf.lot_id = LOTS.lot_id AND db2gse.ST_Distance(bf.footprint, db2gse.ST_Boundary(LOTS.lot)) <= 1.0;