Name

ST_ClosestPoint — Renvoie le point 2D sur g1 qui est le plus proche de g2. Il s'agit du premier point de la ligne la plus courte d'une géométrie à l'autre.

Synopsis

geometry ST_ClosestPoint(geometry geom1, geometry geom2);

geography ST_ClosestPoint(geography geom1, geography geom2, boolean use_spheroid = true);

Description

Renvoie le point bidimensionnel sur geom1 qui est le plus proche de geom2. Il s'agit du premier point de la ligne la plus courte entre les géométries (telle que calculée par ST_ShortestLine).

[Note]

Si vous avez une géométrie 3D, vous préférerez peut-être utiliser ST_3DClosestPoint.

Amélioré : 3.4.0 - Prise en charge de la geography.

Disponibilité : 1.5.0

Exemples

Le point le plus proche d'un point et d'une LineString est le point lui-même. Le point le plus proche d'une LineString et d'un Point est un point de la ligne.

SELECT ST_AsText( ST_ClosestPoint(pt,line)) AS cp_pt_line,
       ST_AsText( ST_ClosestPoint(line,pt)) AS cp_line_pt
    FROM (SELECT 'POINT (160 40)'::geometry AS pt,
                 'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)'::geometry AS line ) AS t;

   cp_pt_line   |                cp_line_pt
----------------+------------------------------------------
 POINT(160 40)  | POINT(125.75342465753425 115.34246575342466)

Le point du polygone A le plus proche du polygone B

SELECT ST_AsText( ST_ClosestPoint(
                'POLYGON ((190 150, 20 10, 160 70, 190 150))',
                ST_Buffer('POINT(80 160)', 30)        )) As ptwkt;
------------------------------------------
 POINT(131.59149149528952 101.89887534906197)