From: Paul Ramsey Date: Wed, 22 Jul 2015 16:03:10 +0000 (+0000) Subject: #3172, ST_AddMeasure refuses to set measure of zero-length line X-Git-Tag: 2.2.0rc1~228 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e54b2a7ee02afe0834802b013a5a093ee30b1b4;p=postgis #3172, ST_AddMeasure refuses to set measure of zero-length line git-svn-id: http://svn.osgeo.org/postgis/trunk@13830 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/lwline.c b/liblwgeom/lwline.c index 582ac91f6..58f0d6727 100644 --- a/liblwgeom/lwline.c +++ b/liblwgeom/lwline.c @@ -407,6 +407,9 @@ lwline_measured_from_lwline(const LWLINE *lwline, double m_start, double m_end) length_so_far += distance2d_pt_pt(&a, &b); if ( length > 0.0 ) m = m_start + m_range * length_so_far / length; + /* #3172, support (valid) zero-length inputs */ + else if ( length == 0.0 && npoints > 1 ) + m = m_start + m_range * i / (npoints-1); else m = 0.0; q.x = p2.x; diff --git a/regress/tickets.sql b/regress/tickets.sql index 4c99a9533..71687bd3e 100644 --- a/regress/tickets.sql +++ b/regress/tickets.sql @@ -906,5 +906,7 @@ SELECT '#2870', ST_Summary('Point(151.215289 -33.856885)'::geometry::bytea::geog SELECT '#2956', st_astwkb(null,0) is null; +SELECT '#3172', ST_AsText(ST_AddMeasure('LINESTRING(0 0,0 0)', 1, 2)); + -- Clean up DELETE FROM spatial_ref_sys; diff --git a/regress/tickets_expected b/regress/tickets_expected index ae4b42dd2..860cdc2e1 100644 --- a/regress/tickets_expected +++ b/regress/tickets_expected @@ -265,3 +265,4 @@ ERROR: invalid GML representation #2788|f|Self-intersection|POINT(1 1) #2870|Point[GS] #2956|t +#3172|LINESTRING M (0 0 1,0 0 2)