Postgresql PostGIS中的ST_LineFromEncodedPolyline函数应如何处理奇数个点值?

Postgresql PostGIS中的ST_LineFromEncodedPolyline函数应如何处理奇数个点值?,postgresql,postgis,Postgresql,Postgis,我正在尝试实现Go中的函数,用于解码ascii编码。我的目标是模仿来自PostGIS的EncodedPolyline的ST_Line的行为。我从中获取并重写了算法,当我提供偶数个点值时,它非常有效。我所说的“偶数价值点”是指,例如: # SELECT ST_AsText(ST_LineFromEncodedPolyline('wkcn@f}gDgfv}@gqcrB~lor@f_ssA}dxgMwujpN',4)); st_astext ----

我正在尝试实现Go中的函数,用于解码ascii编码。我的目标是模仿来自PostGIS的EncodedPolyline的ST_Line的行为。我从中获取并重写了算法,当我提供偶数个点值时,它非常有效。我所说的“偶数价值点”是指,例如:

# SELECT ST_AsText(ST_LineFromEncodedPolyline('wkcn@f}gDgfv}@gqcrB~lor@f_ssA}dxgMwujpN',4));
                          st_astext
--------------------------------------------------------------
 LINESTRING(-8.65 77.23,180 180,41.35 95.6,856.2344 843.9999)
(1 row)
这一点也不奇怪

但是,当我传递奇数个点值(其中编码的ascii不包含其中一个点的纬度值)时,我无法理解此函数是如何工作的。因此,如果精度为5的ibE表示“1”:

# SELECT ST_AsText(ST_LineFromEncodedPolyline('_ibE_ibE_ibE',5));
         st_astext
---------------------------
 LINESTRING(1 1,0.99999 2)
(1 row)
或:

我的问题是-这个
0.99999
-0.00001
来自哪里?这真的是预期的行为吗

我使用的是Psql版本12.4

# SELECT ST_AsText(ST_LineFromEncodedPolyline('_ibE_ibE_ibE',5));
         st_astext
---------------------------
 LINESTRING(1 1,0.99999 2)
(1 row)
# SELECT ST_AsText(ST_LineFromEncodedPolyline('_ibE?_ibE',5));
         st_astext
----------------------------
 LINESTRING(0 1,-0.00001 2)
(1 row)