Name

ST_ClosestPoint — Returnerar den 2D-punkt på g1 som ligger närmast g2. Detta är den första punkten på den kortaste linjen från den ena geometrin till den andra.

Synopsis

geometry ST_ClosestPoint(geometry geom1, geometry geom2);

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

Beskrivning

Returnerar den 2-dimensionella punkt på geom1 som ligger närmast geom2. Detta är den första punkten på den kortaste linjen mellan geometrierna (enligt beräkning av ST_ShortestLine).

[Note]

Om du har en 3D-geometri kanske du föredrar att använda ST_3DClosestPoint.

Förbättrad: 3.4.0 - Stöd för geografi.

Tillgänglighet: 1.5.0

Exempel

Närmaste punkt för en Point och en LineString är själva punkten. Närmaste punkt för en LineString och en Point är en punkt på linjen.

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)

Den punkt på polygon A som ligger närmast polygon 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)