]> granicus.if.org Git - postgis/commitdiff
#3627, Encoded polyline functions ignore precision parameter
authorDaniel Baston <dbaston@gmail.com>
Tue, 6 Sep 2016 22:44:47 +0000 (22:44 +0000)
committerDaniel Baston <dbaston@gmail.com>
Tue, 6 Sep 2016 22:44:47 +0000 (22:44 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@15074 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_export.c
postgis/lwgeom_in_encoded_polyline.c
regress/in_encodedpolyline.sql
regress/in_encodedpolyline_expected
regress/out_geometry_expected
regress/tickets.sql
regress/tickets_expected

index 1d684f959c45cf9718c014dca5ba33975900f5b1..a3aaeee0af762d07d3879068008692258046fa1a 100644 (file)
@@ -637,9 +637,9 @@ Datum LWGEOM_asEncodedPolyline(PG_FUNCTION_ARGS)
        lwgeom = lwgeom_from_gserialized(geom);
        PG_FREE_IF_COPY(geom, 0);
        
-       if (PG_NARGS() >2 && !PG_ARGISNULL(2))
+       if (PG_NARGS() > 1 && !PG_ARGISNULL(1))
        {
-               precision = PG_GETARG_INT32(2);
+               precision = PG_GETARG_INT32(1);
                if ( precision < 0 ) precision = 5;
        }
 
index bbba36b9bed166b836cb19d8d576ca5050fd6f48..053d2fccdd4119e0137e9897474d1c0b5a5e5972 100644 (file)
@@ -47,9 +47,9 @@ Datum line_from_encoded_polyline(PG_FUNCTION_ARGS)
   encodedpolyline_input = PG_GETARG_TEXT_P(0);
   encodedpolyline = text2cstring(encodedpolyline_input);
 
-  if (PG_NARGS() >2 && !PG_ARGISNULL(2))
+  if (PG_NARGS() > 1 && !PG_ARGISNULL(1))
   {
-    precision = PG_GETARG_INT32(2);
+    precision = PG_GETARG_INT32(1);
     if ( precision < 0 ) precision = 5;
   }
 
index 604fbc135de6f9f8d11bc767575ec49fb2cbfee4..7e95392709940e88a9c5cb18a264b241bb9f1a6a 100644 (file)
@@ -1,2 +1,2 @@
 select 'linefromencodedpolyline_01',st_asewkt(st_linefromencodedpolyline('_p~iF~ps|U_ulLnnqC_mqNvxq`@'));
-select 'linefromencodedpolyline_02',st_asewkt(st_linefromencodedpolyline('_p~iFlhz|UuksL`wjCivjNvxq`@', 6));
+select 'linefromencodedpolyline_02',st_asewkt(st_linefromencodedpolyline('_izlhAj}oidF{}jgCrotj@chtxCn`{nI', 6));
index 70249587812c0254426192afcf490b2d3ffbc3c5..d3a53bb4d50e3c8febdeed846a6035aac5ede4bf 100644 (file)
@@ -1,2 +1,2 @@
 linefromencodedpolyline_01|SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)
-linefromencodedpolyline_02|SRID=4326;LINESTRING(-120.23447 38.5,-120.95 40.73435,-126.453 43.252)
+linefromencodedpolyline_02|SRID=4326;LINESTRING(-120.234472 38.5,-120.95 40.734352,-126.453 43.252)
index 9e6b08469f191070c4ebb50135d3712a00ca77ff..f045640f17176510f867886fc7ce482ab8c96b26 100644 (file)
@@ -41,7 +41,7 @@ kml_projection_01|<Point><coordinates>-74.078,4.596</coordinates></Point>
 encoded_polyline_01|_p~iF~ps|U_ulLnnqC_mqNvxq`@
 encoded_polyline_02|_p~iF~ps|U_ulLnnqC_mqNvxq`@
 ERROR:  Only SRID 4326 is supported.
-encoded_polyline_04|_p~iFlhz|UuksL`wjCivjNvxq`@
+encoded_polyline_04|_izlhAd}oidF{}jgCxotj@chtxCn`{nI
 svg_empty_geom|
 svg_option_01|M 1 -1 L 4 -4 5 -7
 svg_option_02|M 1 -1 l 3 -3 1 -3
index 8c23f670dcaa4f23c779dff2290712cbf691dc39..b477d07ad6db9fd78da045597ab143781c0c7943 100644 (file)
@@ -993,6 +993,9 @@ from road, sidewalks, params;
 -- #3583
 Select '#3583', ST_AsText(ST_GeomFromGeoJSON('{"type":"MultiPolygon", "coordinates":[[[139.10030364990232,35.16777444430609],5842.4224490305424]]}')); 
 
+-- #3627
+SELECT '#3627a', ST_AsEncodedPolyline('SRID=4326;LINESTRING(-0.250691 49.283048,-0.250633 49.283376,-0.250502 49.283972,-0.251245 49.284028,-0.251938 49.284232,-0.251938 49.2842)', 6);
+SELECT '#3627b', ST_Equals(geom, ST_LineFromEncodedPolyline(ST_AsEncodedPolyline(geom, 7), 7)) FROM (VALUES ('SRID=4326;LINESTRING (0 0, 1 1)')) AS v (geom);
 
 -- Clean up
 DELETE FROM spatial_ref_sys;
index 77e21f04c0b52f24672eb9740a11fe49f028c62c..8cd896d4f57881d983c9ca75ec9dcf9c4124ba77 100644 (file)
@@ -296,3 +296,5 @@ ERROR:  invalid KML representation
 #3470b|50
 #3579|f|t
 #3583|MULTIPOLYGON Z (EMPTY)
+#3627a|o}~~|AdshNoSsBgd@eGoBlm@wKhj@~@?
+#3627b|t