[postgis-users] Difference beetween ST_ClosestPoint and ST_Intersection
Nicklas Avén
nicklas.aven at jordogskog.no
Tue Jan 11 12:53:32 PST 2011
Hallo Andrea
The two functions is very different but behave the same way in a few
specific situations.
St_Intersection I guess you know how works.
ST_Closestpoint is actually a distance function. It is the forst point
of ST_Shortestline. The pupose of those functions is to use on
geometries not intersecting at all. Look at the illustrations in the
documentation:
http://www.postgis.org/documentation/manual-1.5/ST_ShortestLine.html
ST_Shortestline gives you the line along which ST_Distance has found the
min distance between two geometries. If you use the shortestline between
a lake and a road it will give you the shortest possible line between
the lake and the road.
And as said, ST_Closestpoint is the first point in the shortest line,
so:
ST_Startpoint(ST_Shortestline(geometry, geometry)) =
ST_Closestpoint(geometry, geometry)
St_closestpoint is there because we expected it to be the most common
usecase of ST_Shortestline to just find where on my geometry is the
closest point to that geometry over there.
That it gives you the same answer when using it with a point
intersecting with a polygon is just a way to handle that situation. The
alternative is to return null. SQL Server is comming up with a
corresponding function to ST_Shortestline in their next release, but
they call it ShortestLineTo. They have choosen to return null in case of
intersection, while postgis returns a zero-length line with the same
start and end in any of the intersecting points (if many)
HTH
Nicklas
On Tue, 2011-01-11 at 21:19 +0100, aperi2007 wrote:
> Il 11/01/2011 21:12, Paolo Cavallini ha scritto:
> > Il giorno mar, 11/01/2011 alle 20.52 +0100, aperi2007 ha scritto:
> >> Hi,
> >>
> >> I need to find the intersection point between two lines,
> >> the first choice is ST_Intersection, but I notice even the
> >> ST_ClosestPoint function.
> >> \df+ st_intersection
> >> in the case of two lines, the two results converge, but if you have two
> >> polygons, you can see the difference.
> >> All the best.
>
> Hi Paolo,
>
> Of course this is a difference.
> ST_Intersection is surely more flexible, usable with every kind of geometry.
>
> But my question is: "why ST_ClosestPoint exist ?"
>
> The only explain I can suppose is that for linear archives it give some
> advantage (more speed ?)
>
> This is the question :)
>
> Andrea.
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
More information about the postgis-users
mailing list