Copyright © 2010 Open Geospatial Consortium, Inc.
XIX
then the result is the following MultiPoint value with well-known text representation:
point m empty
d) If LocateBetween is invoked with an SM value of 7 and an EM value of 7 on a Point value with well-
known text representation:
point m(7 6 7)
then the result is the following MultiPoint value with well-known text representation:
multipoint m(7 6 7)
6.1.2.6.4 One-dimensional geometry value
Interpolation is used to determine any points on the 1-dimensional geometry with an m coordinate value between
mStart and mEnd inclusively. The implementation-defined interpolation algorithm is used to estimate values
between measured values, usually using a mathematical function. The interpolation is within a Curve element and
not across Curve elements in a MultiCurve. For example, given a measure of 6 and a 2-point LineString where the
m coordinate value of start point is 4 and the m coordinate value of the end point is 8, since 6 is halfway between
4 and 8, the interpolation algorithm would be a point on the LineString halfway between the start and end points.
The results are produced in a geometry collection. If there are consecutive points in the 1-dimensional geometry
with an m coordinate value between mStart and mEnd inclusively, then a curve value element is added to the
geometry collection to represent the curve elements between these consecutive points. Any disconnected points
in the 1-dimensional geometry values with m coordinate values between mStart and mEnd inclusively are also
added to the geometry collection. If no matching m coordinate values are found, then an empty set of type
ST_Point is returned.
For example:
a) If LocateAlong is invoked with an M value of 4 on a LineString value with well-known text
representation:
LineStringM(1 0 0, 3 1 4, 5 3 4, 5 5 1, 5 6 4, 7 8 4, 9 9 0)
then the result is the following MultiLineString value with well-known text representation:
MultiLineStringM((3 1 4, 5 3 4), (5 6 4, 7 8 4))
b) If LocateBetween is invoked with an mStart value of 2 and an mend value of 4 on a LineString value
with well-known text representation:
LineStringM(1 0 0, 1 1 1, 1 2 2, 3 1 3, 5 3 4, 9 5 5, 7 6 6)
then the result is the following MultiLineString value with well-known text representation:
MultiLineStringM((1 2 2, 3 1 3, 5 3 4))
c) If LocateBetween is invoked with an SM value of 6 and an EM value of 9 on a LineString value with
well-known text representation:
LineStringM(1 0 0, 1 1 1, 1 2 2, 3 1 3, 5 3 4, 9 5 5, 7 6 6)
then the result is the following MultiPoint value with well-known text representation:
MultiPointM(7 6 6)
d) If LocateBetween is invoked with an SM value of 2 and an EM value of 4 on a MultiLineString value
with well-known text representation:
MultiLineStringM((1 0 0, 1 1 1, 1 2 2, 3 1 3), (4 5 3, 5 3 4, 9 5 5, 7 6 6))
then the result is the following MultiLineString value with well-known text representation:
MultiLineStringM((1 2 2, 3 1 3),(4 5 3, 5 3 4))
e) If LocateBetween is invoked with an SM value of 1 and an EM value of 3 on a LineString value with
well-known text representation:
LineStringM(0 0 0, 2 2 2, 4 4 4)
then the result may be the following MultiLineString value with well-known text representation:
MultiLineStringM((1 1 1, 2 2 2, 3 3 3))
f) If LocateBetween is invoked with an SM value of 7 and an EM value of 9 on a MultiLineString value
with well-known text representation:
MultiLineStringM((1 0 0, 1 1 1, 1 2 2, 3 1 3), (4 5 3, 5 3 4, 9 5 5, 7 6 6))