0% found this document useful (0 votes)
66 views

Csharp Guide

ST_Line_Locate_Point returns a float between 0 and 1 representing the location of the closest point on a LineString geometry to a given Point geometry, as a fraction of the total 2D length of the LineString. This value can be used with other functions like ST_Line_Interpolate_Point to extract the closest point or ST_Line_Substring to get a substring of the LineString between two fractional locations. ST_Line_Locate_Point is useful for approximating real-world values like street addresses.

Uploaded by

Mathias Eder
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views

Csharp Guide

ST_Line_Locate_Point returns a float between 0 and 1 representing the location of the closest point on a LineString geometry to a given Point geometry, as a fraction of the total 2D length of the LineString. This value can be used with other functions like ST_Line_Interpolate_Point to extract the closest point or ST_Line_Substring to get a substring of the LineString between two fractional locations. ST_Line_Locate_Point is useful for approximating real-world values like street addresses.

Uploaded by

Mathias Eder
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

PostGIS 1.5.

1 Manual
245 / 315

7.10.2 ST_Line_Locate_Point
Name
ST_Line_Locate_Point Returns a float between 0 and 1 representing the location of the closest point on LineString to the given
Point, as a fraction of total 2d line length.

Synopsis
float ST_Line_Locate_Point(geometry a_linestring, geometry a_point);

Description
Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point, as a fraction of
total 2d line length.
You can use the returned location to extract a Point (ST_Line_Interpolate_Point) or a substring (ST_Line_Substring).
This is useful for approximating numbers of addresses
Availability: 1.1.0

Examples
--Rough approximation of finding the street number of a point along the street
--Note the whole foo thing is just to generate dummy data that looks
--like house centroids and street
--We use ST_DWithin to exclude
--houses too far away from the street to be considered on the street
SELECT ST_AsText(house_loc) As as_text_house_loc,
startstreet_num +
CAST( (endstreet_num - startstreet_num)
* ST_Line_Locate_Point(street_line, house_loc) As integer) As street_num
FROM
(SELECT ST_GeomFromText(LINESTRING(1 2, 3 4)) As street_line,
ST_MakePoint(x*1.01,y*1.03) As house_loc, 10 As startstreet_num,
20 As endstreet_num
FROM generate_series(1,3) x CROSS JOIN generate_series(2,4) As y)
As foo
WHERE ST_DWithin(street_line, house_loc, 0.2);
as_text_house_loc | street_num
-------------------+-----------POINT(1.01 2.06) |
10
POINT(2.02 3.09) |
15
POINT(3.03 4.12) |
20
--find closest point on a line to a point or other geometry
SELECT ST_AsText(ST_Line_Interpolate_Point(foo.the_line, ST_Line_Locate_Point(foo.the_line , ST_GeomFromText(POINT(4 3)))))
FROM (SELECT ST_GeomFromText(LINESTRING(1 2, 4 5, 6 7)) As the_line) As foo;
st_astext
---------------POINT(3 4)

PostGIS 1.5.1 Manual


246 / 315

See Also
ST_DWithin, ST_Length2D, ST_Line_Interpolate_Point, ST_Line_Substring

7.10.3 ST_Line_Substring
Name
ST_Line_Substring Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d
length. Second and third arguments are float8 values between 0 and 1.

Synopsis
geometry ST_Line_Substring(geometry a_linestring, float startfraction, float endfraction);

Description
Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d length. Second and
third arguments are float8 values between 0 and 1. This only works with LINESTRINGs. To use with contiguous MULTILINESTRINGs use in conjunction with ST_LineMerge.
If start and end have the same value this is equivalent to ST_Line_Interpolate_Point.
See ST_Line_Locate_Point for computing the line location nearest to a Point.
Note
Since release 1.1.1 this function also interpolates M and Z values (when present), while prior releases set them to
unspecified values.

Availability: 1.1.0 , Z and M supported added in 1.1.1


This function supports 3d and will not drop the z-index.

Examples

A linestring seen with 1/3 midrange overlaid (0.333, 0.666)

You might also like