ST_Distance utilise deux géométries en entrée et renvoie la distance minimale qui les sépare.
Syntaxe
db2gse.ST_Distance(g1 db2gse.ST_Geometry, g2 db2gse.ST_Geometry)
Type de retour
Double
Exemples
Le directeur des services techniques municipaux a besoin de la liste de tous les bâtiments figurant à mois d'un pied (environ trente centimètres) de toute ligne en pointillé.
La colonne BUILDING_ID de la table BUILDINGFOOTPRINTS identifie chaque bâtiment de manière univoque. La colonne LOT_ID indique la parcelle à laquelle appartient chaque bâtiment. Le multipolygone de bâti enregistre la géométrie de chaque bâti.
CREATE TABLE BUILDINGFOOTPRINTS ( building_id integer, lot_id integer, footprint db2gse.ST_MultiPolygon);
La table LOTS stocke l'ID parcelle (lot_ID) qui identifie chaque parcelle de manière univoque et le multipolygone de la parcelle, qui contient la géométrie des limites de la parcelle.
CREATE TABLE LOTS ( lot_id integer, lot db2gse.ST_MultiPolygon);
La requête renvoie la liste des ID des bâtiments situés à moins d'un pied des limites de leur parcelle. La fonction ST_Distance exécute une jointure spatiale entre les bâtis et le contour des multipolygones des parcelles. Cependant, une équijointure entre les colonnes bf.lot_id et LOTS.lot_id permet de s'assurer que la fonction ST_Distance ne compare que les multipolygones appartenant à la même parcelle.
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;