Name

ST_ClosestPoint — Gibt den 2D-Punkt auf g1 zurück, der g2 am nächsten ist. Dies ist der erste Punkt der kürzesten Linie von einer Geometrie zur anderen.

Synopsis

geometry ST_ClosestPoint(geometry geom1, geometry geom2);

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

Beschreibung

Gibt den 2-dimensionalen Punkt auf geom1 zurück, der geom2 am nächsten liegt. Dies ist der erste Punkt der kürzesten Linie zwischen den Geometrien (wie von ST_ShortestLine berechnet).

[Note]

Falls es sich um eine 3D-Geometrie handelt, sollten Sie ST_3DClosestPoint vorziehen.

Verbessert: 3.4.0 - Unterstützung für Geographie.

Verfügbarkeit: 1.5.0

Beispiele

Der nächstgelegene Punkt für einen Point und einen LineString ist der Punkt selbst. Der nächstgelegene Punkt für einen LineString und einen Punkt ist ein Punkt auf der Linie.

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)

Der Punkt auf Polygon A, der Polygon B am nächsten liegt

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)