ST_3DDistance — Renvoie la distance cartésienne minimale en 3D (basée sur la référence spatiale) entre deux géométries en unités projetées.
float ST_3DDistance(
geometry g1, geometry g2)
;
Renvoie la distance cartésienne minimale tridimensionnelle entre deux géométries en unités projetées (unités de référence spatiales).
Cette fonction prend en charge la 3D et ne supprime pas l'indice z.
Cette fonction prend en charge les surfaces Polyhedral.
Cette méthode implémente la spécification SQL/MM. SQL-MM ISO/IEC 13249-3
Disponibilité : 2.0.0
Modifié : 2.2.0 - Dans le cas de la 2D et de la 3D, Z n'est plus considéré comme égal à 0 en cas de Z manquant.
Modifié : 3.0.0 - Version SFCGAL supprimée
-- Geometry example - units in meters (SRID: 2163 US National Atlas Equal area) (3D point and line compared 2D point and line) -- Note: currently no vertical datum support so Z is not transformed and assumed to be same units as final. SELECT ST_3DDistance( ST_Transform('SRID=4326;POINT(-72.1235 42.3521 4)'::geometry,2163), ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45 15, -72.123 42.1546 20)'::geometry,2163) ) As dist_3d, ST_Distance( ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry,2163), ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry,2163) ) As dist_2d; dist_3d | dist_2d ------------------+----------------- 127.295059324629 | 126.66425605671
-- Multilinestring and polygon both 3d and 2d distance -- Same example as 3D closest point example SELECT ST_3DDistance(poly, mline) As dist3d, ST_Distance(poly, mline) As dist2d FROM (SELECT 'POLYGON((175 150 5, 20 40 5, 35 45 5, 50 60 5, 100 100 5, 175 150 5))'::geometry as poly, 'MULTILINESTRING((175 155 2, 20 40 20, 50 60 -2, 125 100 1, 175 155 1), (1 10 2, 5 20 1))'::geometry as mline) as foo; dist3d | dist2d -------------------+-------- 0.716635696066337 | 0